プログラミングを学ぶ人「教師あり学習って何?教師なし学習って何?強化学習って何?」
こんな方に向けた記事です。
今回は機械学習の3種類,教師あり学習・教師なし学習・強化学習について解説していきます。
AI,機械学習,ディープラーニング。
最近このような言葉を聞く機会が本当に多くなりました。
AI,機械学習,ディープラーニングについてはこちらの記事で紹介しています。
今回は機械学習について掘り下げて解説していこうと思います。
機械学習とは上の記事で紹介しているようにある特定の課題について膨大なデータから学習し法則性を導き出し,その法則を新規のデータに対して活用する手法のことです。
機械学習は大きく3つに分類されます.その3種類の機械学習について解説していきます。
本記事の想定読者
- プログラミング初心者でとりあえず触れてみたい人
- 機械学習で何ができるか知りたい人
- Pythonの勉強を始めて間もない人
教師あり 教師なし 強化学習
3種類の機械学習
- 教師あり学習
- 教師なし学習
- 強化学習
これが3種類の機械学習です。
図に示したように教師あり学習,教師なし学習,強化学習の中でも様々な手法に分かれています。
教師あり学習
教師あり学習とはデータに結果の正解を与えた状態で学習させ新たなデータに対して結果を予測する手法です。
中でも数値を予測するものを回帰,ありなしの2者択一を予測するものを分類と呼びます。
当サイトで紹介している"心不全の予後予測”を例に見てみましょう。
今回のデータではDEATH_EVENTの有無,つまり生きるか死ぬかが既に患者ごとに明記されています。
この正解のあるデータを学習し,新たな患者の生死を予測する。
これが教師あり学習(分類)です。
既に生死という正解のあるデータを与えられ新規のデータの生死を予測するわけです。
この予測するデータが生死のような2者択一ではなく,死亡する年齢などの数値になった場合これは回帰と呼ばれます。
回帰は未来の売上の予測や株価の予測などでよく用いられます。
売上額や株価は数値なので回帰として理解しやすいですよね。
教師なし学習
教師なし学習は正解のあるデータを学習する教師あり学習とは異なり,正解を与えられていないデータをグループ分けや簡略化する手法です。
これがクラスタリングと呼ばれる手法です。
本図はスポーツジムの顧客の翌月の使用回数や退会を予測するタスクにおけるクラスタリング結果です。
スポーツジム使用者には月に1回しか使用していない人もいれば毎日使用している人もいます。
また1年以上続けている人もいればまだ最近は来ることができていない人もいます。
このように使用者の特徴を学習し使用者を特徴によって分類分けするのが教師なし学習(クラスタリング)です。
ある正解に基づいた分類ではなく純粋でデータベースの集合自体を特徴によって分類分けしているんですね。
強化学習
この強化学習が概念として最も理解が難しいところです。
強化学習とは最終的な価値を最大化する行動を試行錯誤して学習する手法です。
これは囲碁やオセロ,テトリスなどのゲームのプログラムに良く使われます。
例えばオセロでは最後に多くの石の色を合わせた人の勝利になります。
これは今の1手で目の前の石をひっくりかえすことも重要ですが,あえて最初は多くの石を相手に取らせておいて最後に一気に自分の石とするような作戦もあります。
このように目先の利益ではなく最終的な価値を最大化するために学習する手法,これが強化学習です。
医療においても目の前の尿路感染症患者を治すという目的であれば広域抗菌薬を使用すれば解決します.しかし,世界全体で細菌感染症で死亡する患者を減らすということに価値をおいた時,耐性菌などの観点から必ずしも目の前の患者に広域抗菌薬を使用することが正しいとは限りません。
強化学習とは様々な施行錯誤をした結果,どの行動の組み合わせが最終的な価値が最大化するかという膨大なトライ&エラーを機械がシュミレーションしてくれるというものすごい手法なんです(この学習過程のことをQ学習などと呼んだりします)。
さいごに
みなさんいかがでしたでしょうか。今回は3種類の機械学習について勉強しました。簡単にまとめていきます。
3種類の機械学習はこちらでした。
3種類の機械学習
- 教師あり学習
- 教師なし学習
- 強化学習
それぞれ概念自体の理解はとっつきにくいと思います。
具体例で実際にイメージしながらじっくりと理解していくのが良いと思います。
機械学習はプログラミング言語のPythonを用いれば、今持っている自分のパソコンですぐに実践することができます。
英語論文になっている手法もしっかりと勉強すれば、自分のパソコンで出来ます。
このサイトでは、プログラミングに興味のある医学生、医師のための情報を発信しております。
プログラミングの学習方法には大きく分けて、「独学」と「プログラミングスクール」の2つがあります。
当サイトでは一貫してプログラミングスクールを利用することをおすすめしています。
なぜなら、独学で勉強した私が非常に苦労したからです。
また私はプログラミングを学習するにあたり、師匠・メンターのような存在がいました。
わからないところは教えてもらっていました。
そのような環境でなければ0から独学で勉強するのはとても効率が悪いと思います。
詳しくは、プログラミングの独学は難しいです【私の失敗談】で紹介しています。
この記事が一人でも多くのプログラミングに興味のある方のお役に立てば幸いです。