この記事では、機械学習の手法の4つの分類を紹介します。
機械学習はたくさんの手法を含んだ分野です。
しかし、詳しい方でないと
「手法??結局なにが変わるの?」
「専門的すぎて全くわからない!」
といったことになりがち。
実はこれらの手法、学習方法によって分類することができます。
機械学習というキーワードの、より細かい分類が分かれば、勉強するときにも見通しが良くなりそうですね。
この記事でこれらの分類について学んでいきましょう!
この記事では、機械学習の4つの分類、
- 教師あり学習
- 教師なし学習
- 半教師あり学習
- 強化学習
について解説します。
また、
- これらの有名なアルゴリズム
- これらの用途
などのより実践的な内容についても解説していきますよ!
【こんな方に向けて書きました】
・機械学習の勉強で躓いてしまった方
・機械学習をこれから学習しようとお考えの方
・機械学習の分類を細かく知りたい方
機械学習の分類①「教師あり学習」
教師あり学習って何?
「教師あり学習(Supervised learning)」とは、学習のときに正解のラベルを使う手法を指します。
教師あり学習はみなさんが想像する機械学習のイメージ像によく近いものだと思います。
機械学習の解説記事では、教師あり学習のみを解説していることが多いからです。
この手法は高精度の分類性能を叩き出すことができる素晴らしい手法ですが、データとラベルがセットになっているデータセットを用意する必要があります。
なので、クラウドワーカーにラベルつけを外注したり、教師データを水増しする手法を使ったりといった工夫が行われることもあります。
どういうときに使うの?
データとラベルがセットになったデータセットがある場合、またはこのようなものが作れる場合に使われます。
- クラス分類
- 既にあるデータと正解ラベルのセットから、ラベルつけの法則性を学習させたい
- 回帰
- これまでの値の動きから、未来の値動きを予測したい
などを行いたい時に教師あり学習はマッチします。
例えば動画共有サイトなどなら、もしかしたら動画に付けられたタグが教師データとして使えるかも知れませんね。
また、とにかく高性能が求められる場合にも、教師あり学習は選択肢に現れます。
基本的にこれで解決できるのならば、これを使ってしまうのが1番簡単です。
どんなモデルがあるの?
- SVM(サポートベクトルマシン)
- ディープラーニングが流行る前に流行っていた機械学習モデル。今でもよく使われます。
- クラス分類などに使います。
- 決定木(Decision tree)
- クラス分類などに使われる手法。
- 結果の解釈がしやすいのが利点。
- 教師ありのニューラルネットワーク
- ディープラーニングなどの発展版が有名な手法。
- 柔軟で本当に様々な用途に使われます。
これ以外にもたくさんのモデルがあります。
ニューラルネットワークは様々な方法で学習できるように進化していますので、教師あり学習以外にも応用されています。
基本的には、目的関数と呼ばれる機械学習モデルの学習の指針になる関数を、「機械学習モデルが予測したラベルと正解のラベルとを比較する関数」にすればOKです。
機械学習の分類②「教師なし学習」
教師なし学習って何?
「教師なし学習(Unsupervised Learning)」とは、学習のときに正解のラベルを使わずに、機械学習モデルに自力でデータの法則性を見つけさせる手法を指します。
どういうときに使うの?
実際の世界では、「データはあっても正解のラベルはない」という場合が多いです。
- クラスタリング
- データからクラスター(データ内にいくつかあるまとまり)などを自動的に見つけたい
- 次元圧縮
- データをより小さい情報量で表現したい
このような目的がある場合は、教師なし学習はマッチします。
教師あり学習と違い、正解ラベルが必要ないところが使いやすいですね。
ですがクラスタリングによって出てくるクラスターと、クラス分類のときに使うクラスというまとまりは、一般的に違う形になる場合が多いです。
人間が作ったクラスというまとまりと、機械学習モデルが見つけたクラスターというまとまりは違う部分に注目されて作られていることも多いですから。
また、次元圧縮でデータのサイズを小さくしてから教師あり学習を行う、なんていうこともできます。
こうすることによって限られた計算資源(コンピューターの性能)の中で目的を達成できますね。
どんなモデルがあるの?
- k-means
- クラスタリングの手法です
- PCA
- 次元圧縮の手法です
- オートエンコーダー系のニューラルネットワーク
- これも次元圧縮などに使われますね。
これはほんの一部ですが、ここで上げた手法は広く使われているものばかりです。
オートエンコーダーならば、データを元のサイズよりも小さいデータで再現できるように学習させます。
このときに、圧縮したデータから元のデータサイズに戻した(デコード)ものと、本当のデータとを比較する関数を目的関数に使うことで学習を行っています。
機械学習の分類③「半教師あり学習」
半教師あり学習って何?
「半教師あり学習(Semi-supervised learning)」とは、学習のときに少しの正解ラベルつきデータとラベルのないたくさんのデータを使う手法を指します。
ラベルのついたデータを用意するのにコストが掛かりすぎるときなどに効果的です。
コストはかけられないが性能をできるなら上げたい時、結構あると思うんですが、そんなときに試してみると良いですね。
どういうときに使うの?
データと正解ラベルのセットになったデータセットが少ないがあり、更に正解ラベルのついていないデータが沢山ある時に使います。
そのまんまですね。
教師なし学習よりはコントロールしやすいですが、教師あり学習よりは性能があがりません。
どんなモデルがあるの?
半教師あり学習を行うためには以下のような方法があります。
- self-training
- 半教師あり学習を検索で調べると必ず出てくるキーワードですね。
- これは古典的な手法で、強力な手法ではないですが使う場所を選ばないです。
- Generative Model
- データがパラメトリックな(何らかの確率分布に基づいている)モデルから生成されているという仮定のもとで使われる手法です。
- ちょっと概念を理解するのが難しいかも知れませんが、いろんな記事で解説されていますよ。
機械学習の分類④「強化学習」
強化学習って何?
「強化学習( Reinforcement learning)」とは、エージェントが試行錯誤を繰り返して、与えられる価値を最大にするような動きを覚えていく手法を指します。
囲碁のプロを人工知能が打ち破ったというニュースがありましたが、あれでも強化学習が使われていました。
行動に対して、逐一正確な価値(というか報酬)が計算できない場合、例えば迷路を探索するロボットの行動を学習させるときなどに適します。
長期的に見れば報酬がわかっているならば、そこから計算して報酬を得られる状態になるまでの動きについても価値を計算できますよね。
このようなトリックを使っているのが強化学習です。
どういうときに使うの?
囲碁などの難しいゲームやテレビゲームなどの自動攻略システムは最近熱いですね。
その他にも、株の予測、ロボットの制御、迷路探索などの途中の行動の評価が難しい問題のときに使います。
どんなモデルがあるの?
- Q-Learning
- 強化学習で最も代表的で基本になる手法です。
- Deep Q Network (DQN)
- 先程の動画でも使われていたディープラーニング+強化学習の手法です。
これらは有名で基本的な手法です。
最近はディープラーニングと強化学習を組み合わせた研究がドンドン発表されているので、追っていくと面白い分野ですよ。
機械学習をもっと勉強するには
機械学習の分類について学んだら、次はこれらについてより実践的な勉強がしたくなります。
例えばこの記事で紹介した代表的なアルゴリズムを実装する、などですね。
もしも独学での習得が難しい時は、侍エンジニアがサポートします!
侍エンジニアでは機械学習についてのレッスンを開講しています。
マンツーマンのレッスンなので、あなたの理解度や目標に合わせて、インストラクターと一緒にカリキュラムを作っていくことができます。
「画像認識システムが作りたい!」という目的があるならば、
「その目的を達成するための最短経路のカリキュラム」をご提案します。それだけでなく、
「周辺知識を手広く学びながら目的に近づいていくカリキュラム」を作ることもできますよ。
[su_button url=”https://lp.sejuku.net/lp1_blog_01/?cid=ai_btn1_55939″ target=”blank” background=”#409fdf” color=”#fff88f” size=”10″ center=”yes” radius=”10″ icon=”icon: external-link” icon_color=”#fff88f” text_shadow=”0px 0px 10px #808080″]侍エンジニアとは?
詳細はこちらから[/su_button]
まずは勉強を始めることが重要ですよ!
まとめ
どうでしたか?
記事では機械学習の分類について解説しました。
ディープラーニングの流行で今活発に研究されている機械学習。
ビジネスの場にも登場してきましたね。よく耳にするようになった人も多いのではないでしょうか。
この記事で基本的な分類方法をしっかり覚えて使いこなして行きましょう!