機械学習(教師有学習と教師無学習)

■ 教師有学習

届いたメールが、「迷惑メール(スパム)」なのか、そうではなくて「通常のメール」なのかをコンピュータに判定させたい。

どのようにしてコンピュータに「迷惑メール」と「通常のメール」の違いを教えたらいいだろうか。

「○○や××のキーワードを含んでいたら迷惑メールと判断する」というような、ルールを1つ1つ人間の手で規定していくことも考えられるけど、これはあまりに単純すぎるし、実際に人間がルールを決めるのは大変すぎる。。

そこで、予め「迷惑メールである」と判定されたサンプルと、「迷惑メールではない」と判定されたサンプルをたくさん集めて、
コンピュータに勝手に「迷惑メールの特徴」というものを学習してもらおう
、というアプローチが機械学習だ。

この例では、すでに「迷惑メールである」または「迷惑メールではない」という区別がついている正解データを使って、それぞれの特徴を学習するので
「教師有学習」
と呼ぶ。

まず最初にコンピュータは簡単なルールで「推定」を行う。
その後、「推定結果」と「正解」と比較して、判定ルールの改善を行う。これが「学習」だ。
判定ルールは、判定のために用いるパラメータの調整で行われることが多い。

このようにして、予め準備された正解データを基に判定ルールを少しずつ改善していくことで、コンピュータは次第に賢く(精度よく)、未知のデータに対処できるようになる。

(例えば、写真を入力として、写っている人が男性か女性か判定するとか。)


以上の説明は、次のスライド「機械学習チュートリアル@Jubatus Casual Talks」に非常にわかりやすくまとめられている。
数式は何も登場せず、まったく何も知識の無い状態から「機械学習とは何か?」その基本を学ぶことができる。



■ 教師無し学習

「教師学習」は直観的にわかりやすいが、
機械学習の中には、正解データを用いない「教師無し学習」というものがある。

正解がないのに、何を学習するのだろうか?

先ほどのメールの分類を例に挙げると、「迷惑メール」と「通常メール」の2通りだけでなく、
「迷惑メール」「仕事のメール」「友達からのメール」「ニュースなどの情報メール」「オンラインショッピング関係メール」・・・・・
などなど、いろいろな分類の仕方が考えられる。

そもそも、どうやって分類すればよいのだろう??

このように考えると、「正しく分類された正解」を準備することが困難な場合があり、そのようなときには
「分類の仕方」自体もコンピュータに考えて欲しい

正解が無いので、これを「教師無し学習」と呼ぶ。
1つの例として、クラスター分析がある。

例えば、個々のメールを、その特徴に応じて2次元座標にプロットした結果、下のような分布が見られたとする。

これから、大きく3つのかたまり(クラスタ)に分類できそうだ、ということがわかる。

コンピュータが行うのは、このように「分類」する作業。
分類した結果をみて、このクラスタは「迷惑メール」、このクラスタは「友達からのメール」という具合に、クラスタに名前を与えるのは人間の作業。

どのクラスタにも属さないような「珍しいメール」を探し出す、ということも簡単に行えるようになる。


クラスタに分ける方法として、以前のエントリで紹介したサポートベクターマシンというものがある。
サポートベクターマシン:大人になってからの再学習

入門 機械学習

入門 機械学習

パターン認識と機械学習 上

パターン認識と機械学習 上