読者です 読者をやめる 読者になる 読者になる

learning.ikeay.net

文系エンジニア、AI勉強中。

機械学習ってなんだろう

こんにちは、@ikeayです。
前回は人工知能とはなんぞやということに触れたので、今回は機械学習について学んだことをざっくりまとめます。

learning.ikeay.net

機械学習とは、ざっくりいうと何かを学習して何かを予測すること。最近流行ってるDeepLearningというやつも機械学習の一種です。

機械学習の種類は、大きく3つに分けられます。

  1. 教師あり学習
  2. 教師なし学習
  3. 強化学習

教師あり学習とは?

教師あり学習は、学校のテスト勉強に似ています。問題集を解いて学習してからテストに挑む。これが教師あり学習です。教師といいつつリアル教師は出てこないですが…
問題と答え(機械学習ではこの答えのことを「ラベル」と呼びます)のセットから傾向を学習し、新しいデータがどこに分類されるか予測をします。
教師あり学習の中でも、だいたい分類問題回帰問題に分けられます。

分類問題

こういうデータは
f:id:ikeay:20160502151846p:plain

こうじゃ!
f:id:ikeay:20160502151854p:plain

だいたい青と緑の境目のところに線を引きます。新しいデータが線の左側にきたら青に近しいデータ、線の右側にきたら緑に近しいデータと分類できます。スパムメールの分類とかに使われてます。

回帰問題

こうやって
f:id:ikeay:20160502151258p:plain

こうじゃ!!
f:id:ikeay:20160502151322p:plain

簡単に言うとデータ群から線を求めるのが回帰問題というやつです。株価の予測とか明日の気温の予測なんかに使われています。

教師なし学習とは?

教師なしというのは、つまり正解不正解のデータがないってことです。そのままデータをつっこんじゃうのがこの学習方法。
クラスタリングしたり、外れ値検出したりして、なんとなく傾向をつかみます。

値が近いデータをまとめてクラスタリングしてやったぞ。
f:id:ikeay:20160502152240p:plain

外れ値見てみようぞ。センサーの異常値検出とかにイイね!

f:id:ikeay:20160502160234p:plain
Wikipediaより

多様体学習と呼ばれるのも教師なし学習の一種。 次元数の多いデータから次元を削減して学習しやすくする何かです。

f:id:ikeay:20160502155758j:plain
知能システム制御研究室 | 情報科学研究科 | NAIST 国立大学法人奈良先端科学技術大学院大学 Webサイトより

クルってなってるデータを、次元数を削減すると広げられるの!!それで分析すると簡単でしょ?
(゚Д゚)?!?!?!?!

強化学習とは?

機械学習には、強化学習という方法もあります。強化学習というのはつまり、いいことをしたら報酬を与えていくという学習方法です。犬のしつけっぽいですね!最初はうまくいかなそうに見えるんですけど、どんどん効率的な方法を学んで賢くなっていくので驚きです。

youtu.be

この動画では、ブロックを崩して得られるポイントを報酬としています。試行錯誤を繰り返した末、独自の方法まで編み出してゲームをクリアしてます。
人だったらボールとコントローラーを認識して、ボールの動きにあわせてコントローラーを動かすと思うのですが、コンピューターにはそんなことは認識できません。ピクセル単位でこういう流れで画面が変化すると勝てるって感じで認識しているようです。

最近ではロボット分野でも強化学習が行われています。以下の動画ではロボットが穴の空いた部品に棒を通そうと試行錯誤をしているのですが、その様子がまるで何かを習得しようとしている子どものようで、ちょっと怖いです(不気味の谷現象?)。

www.youtube.com

ざっくりしたまとめ

今回は機械学習を大きく3つに分けましたが、細かくはいろんなアルゴリズム(モデル)があります。機械学習にどんな種類があるのかを知り、どんなときにどのアルゴリズムが適しているかが分かれば、scikit-learnやAzure上からけっこう簡単に使えるみたいです。

f:id:ikeay:20160502153857p:plain
scikit-learnより

上の図はscikit-learnのWebサイト上で公開されているチャートシートです。どのタイミングでどのモデルを使えばいいかチャート式ならわかりやすいですね。 教師あり学習は、classification(分類問題)、regression(回帰問題)、教師なし学習は、clustering(クラスタリング)、dimensionality reduction(次元削減)に大きくわけられていますね。scikit-learnでは強化学習が扱えないので、この図では強化学習には触れられていません。

今回はここまでです。


Special Thanks: 松尾研 鈴木さん、PARTY 宮本さん