こんにちは。関東の大学に通っている大学生ミンチ(@programminchi)です。今回は最近激熱の機械学習について猫でもわかるようにというと誇張しすぎかもしれませんが、初心者でもわかるように説明していきたいと思います。
機械学習とはそもそも何か?
それではまずは機械学習の定義から見ていきましょう。
世界で初めてコンピュータチェッカーゲームのプログラムを書き、人工知能の分野で一躍有名になったアーサーサミュエルさんの定義によると
明示的にプログラムしなくても学習する能力をコンピュータに与える研究分野
もっとわかりやすく言うとコンピュータにデータを与えて学習させ、そのデータの中にコンピュータ自身で特徴を見出させて、正しい答えに分類するといった感じです。細かいことを言うと分類問題だけではなく、回帰問題というものもあるのですがここではとりあえずおいておきます。
例えば、下の絵を見てください。
あなたが人間であればこの画像を見て猫であるかどうか分類することは簡単なはずです。(簡単じゃないという意見は却下)
しかし、コンピュータにこれを猫であるかどうか分類させるのは結構難しいのです。
本来、コンピュータに何かを認識させるには認識させたい対象そのものの特徴を教えてあげる必要があるのです。
では、どのような特徴をもって猫を猫と認識させるのでしょうか。
例えば、ひげが生えているという特徴量を与えてやりましょう。もちろんこれだけでは不十分で、このままだとコンピュータはアメリカ合衆国第十六代大統領エイブラハム・リンカーンの画像を見た時も猫であるという判断をくだしてしまいます。
それはそれで面白いからいいのですが、そんなことを言っていると機械学習の存在意義が薄れるのでもう少し特徴量を与えてあげる必要があります。例えばこういうのはどうでしょうか。
ひげが生えていて、かつ四足歩行である。
コンピュータは人間の命令に対して忠実なのでこんなおじさんも猫に分類してしまうかもしれません。
こんな風に人間が直接特徴量を与えていくとなるとどこまでの特徴を与えてやれば、猫だけを猫として分類してくれるのか結構難しい問題になってきます。
ここで機械学習の登場です。上述したように、人間が1つ1つ特徴を与えなくても、データを与えるだけでコンピュータが猫の特徴を見つけ出し、猫であるか、猫ではないのかという分類をかなり正確にできるようになるのです。
教師あり学習と教師なし学習の違い
機械学習の中には教師あり学習と教師なし学習というものがあります。以下ではそれらについて説明していきます。
教師あり学習
教師あり学習とは最初に、コンピュータに答えの分かっているデータセットを与えて、学習を行わせるものです。
例えば最初にコンピュータに大量の画像が与えられ、それぞれの画像について、その画像が猫であるかどうかのラベル付けがされています。するとコンピュータは猫の画像と猫ではない画像を見て、猫であると判断できるような特徴を勝手に抽出し、答えが分かっていない画像を与えられても、それが猫であるかどうか分類できるようになるのです。
教師なし学習
次に教師なし学習について説明していきます。教師なし学習では、コンピュータに非常に多くの、正解が分かっていないデータを与え、そしてそのデータから勝手に構造を見つけさせるものです。
教師あり学習と大きく異なるのは出力するべきものが決まっていないという点です。あくまで、コンピュータに大量のデータを与え、その中の構造を見つけさせるだけです。
教師なし学習の例として、最も有名なのはおそらくGoogleが行った猫認識でしょう。GoogleはYoutubeからとってきた1000万枚の画像をコンピュータに与え、(もちろんその画像がなんであるのかは何も教えない)学習を行いました。
するとコンピュータは大量のデータを見るうちに、自分で特徴を見つけ出し、画像の分類ができるようになったのです。つまり、人間が猫という概念を全く教えていないのに、猫は猫としてグループを作り上げていたということです。こうなったら後は人間がそのグループは猫であるとコンピュータに教えてあげれば終了です。
機械学習と人工知能の関係は?
機械学習というと、よく人工知能とごっちゃにされがちですが、これらはどのような関係にあるのでしょうか?
答えを言ってしまうと、あくまで機械学習というのは人工知能の研究分野の1つです。すると、人工知能とは何なのかという疑問が浮かんでくると思いますが、これに関しては現時点では厳密な定義がなく、状況によって色々な意味に解釈されています。
ただ、人工知能という分野が目指す最終地点は、汎用人工知能の完成であり、機械学習というのは人工知能という分野の一部でしかないということを覚えておいてください。
まとめ
機械学習は最近、非常に大きな注目を集めている分野ですが、それだけ注目されるのも納得できます。
人間が命令をしなくても、コンピュータが勝手に学習をして特徴を見つけ出してしまうのです。段々とコンピュータが人間に近づいてきているような気がします。
これからも機械学習の進歩に期待しつつ、僕自身も学習を進めていきたいと思います。
非常に汎用性が高い分野だと思うので、みなさんも是非1度勉強してみてください。
今後も定期的にコンピュータ系の記事を発信していくので是非、興味のある人はツイッターの方もフォローお願いします!!