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

Sideswipe

情報工学、計算論的神経科学など、真面目なこと書くブログ。お仕事の話は Twitter: @kazoo04 にお願いします。

機械学習

これは 人工知能アドベントカレンダー の11日目の記事です。

機械学習とはなにか?

機械学習は、人工知能*1を実現するための一連の理論・手法です。

簡単にいえば、もともとは計算する機械(今で言えば電卓)として生まれたコンピュータに、人間のような自分で考えるプログラムを搭載できるかどうかという試みです。コンピュータは当初は微分積分などの計算に使われていましたが、その後は各種シミュレーションをしたり、音楽・音声を扱ったり、画像・動画を扱ったりと様々な情報処理に応用されてきました。その延長として、「SFにでてくるロボットのような、自分で考え、話すことのできる存在を作ってみたい」と考えるのは自然な流れです。

普通の(一般的には機械学習とされない)プログラムと、機械学習との境界は非常に曖昧*2ですが、アーサー・サミュエルが1959年に「明示的にプログラムしなくても学習する能力をコンピュータに与える研究分野(Field of study that gives computers the ability to learn without being explicitly programmed)」としているそうです*3

ある手法が機械学習かそうでないかはかなり微妙なところがあり、たとえば遺伝的アルゴリズムは一般的には機械学習ではないと私は思うのですが、機械学習として扱うこともあるようです。また、機械学習でも「一見違うが、実は数学的にはよく知られている手法とまったく同じ」ということが後からわかったりするので、計算手法というよりは、その手法を考えた人や使う人が機械学習だと思っているかどうかという主観が入っていることも頭の片隅に置いておくと話がスムーズかと思います。

画像認識

昔からよくある問題が文字認識で、たとえば葉書の郵便番号部分の文字を読み取って機械的に分類できるとかなりの効率化が見込めるうえ、分析対象は0〜9まで10個の文字を認識できさえすれば良いので古くから利用されてきました。定義から言えば、「0〜9までの数字をコンピュータに予め教えておけば、新しく送られてきた葉書の番号を見て、それが0〜9のどれかを過去のデータから判断する」ようなプログラムを作るわけです。

今ではハードウェアや Deep Learning などソフトウェアの進歩によって、文字だけでなく写真を見て何が写っているのかを判断したりすることができるようになりました。

時系列分析

時系列分析と聞くと大仰な感じがしますが、時々刻々と変わっていくようなデータに対して、今までの傾向から今後どのようにデータが変わるのか予想するようなことです。わかりやすい例は株価でしょうか。もし機械学習で株価の変動が予想できたら間違いなく儲かるわけで、この分野も古くから(もちろん今も)精力的に研究されている分野です。

レコメンダ

Amazonで買い物するときに「この商品を買った人はこの商品も買っています」とか「あなたへのおすすめ」とか、見たことがあると思います。これもレコメンドといって機械学習の一分野です。ごくごく原始的なレコメンドシステムは、あなたの購入履歴を数値*4に変換して、似てる数値を持ってる人を探し、その人が買った商品を推薦するといったことをします。これだけ聞くと統計と何が違うんだという感じがしますが、実際やってることはほとんど統計だったりします。強いて言えば、既に述べたとおりオススメした商品をユーザがほんとうに買ってくれるのかどうかは未知なので、今までの購入動向から何を買うかという未来の情報を自動的に推測する必要があり、このあたりが機械学習っぽいかなという感じです。

分類

そんな機械学習ですが、一口に機械学習といっても実際には様々な種類(分野)があります。代表的なものを挙げると

  • 教師あり学習(supervised learning)
  • 教師なし学習(unsupervised learning)
  • 強化学習(reinforcement learning)

の3つがあります*5*6

最初の2つの違いは簡単で、人間が答えを教えてあげないといけないのが教師あり学習、答えがわからない状態でなにか優位な情報を分析するのが教師なし学習です。
強化学習はすこし複雑で、何をどうするのが良いのかは機械も人間もわからないのですが、何か行動すると良いとか悪いとかの結果は返ってくるような状態で、最適な行動を模索するものです。

教師あり学習

教師あり学習が一般的に「機械学習」あるいは「人工知能」と呼ばれている(呼ばれやすい)分野にあたります。たとえば手書きの数字認識をしたかったら、0から9まで書かれた画像をたくさん用意して、「この画像は0」「この画像は1」…というようにたくさんプログラムに与えます。プログラムは画像が提示されるたびに「こういう特徴があるときは0なんだな」と学習していく、というわけです*7。人間がつきっきりで教えないといけないので*8、これが大変なのがデメリットです*9

教師なし学習

教師なし学習は、そもそも人間側もなにが正解なのかわからないデータをなんとか分析して新たな知見を得るようなものです。一般にデータマイニングと呼ばれる分野とかなり被っています。

たとえば、Twitterにはたくさんのユーザがおり、またそれぞれのユーザは年代や性別や職業などによっていくつかのタイプに分けられると考えられます。これらをツイートの内容からうまいこと5種類とか10種類とか100種類くらいのタイプに分けたい(教師あり学習ではこのようなタイプをクラスタと呼ぶ*10)とき、そもそも人間としてはどんな分類が適切なのか事前にはわからず、むしろそれが知りたいからデータを分析しようとしてるわけです。このようなときに教師なし学習を使って、「似てるユーザをN種類に分類する」といったことをします。教師なし学習の出力に正解はないので、出てきた結果は人間が見て解釈を与える必要があります(たとえばあるユーザの固まりを見て「うーん、これは見たところどうやらIT系の技術者がひとまとめになっているようだぞ」といったように考える必要がある)。

教師あり学習と教師なし学習の中間的な存在として、半教師あり学習(semi-supervised learning)があります*11

強化学習

強化学習は教師あり学習でも教師なし学習でもない方法です。
たとえばAとBの2つのボタンがあって、最初はそのボタンがなんなのかもわからないけれど、Aを押したら身体に電流が流れ、Bを押したら美味しい餌が出てきたら、「Aのボタンを押すのは嫌だ、Bのボタンを押すと良いことがあるぞ」と判断するわけです。

これは行動を起こすと即座にフィードバックが得られる例ですが、たとえばチェスをするときは色々コマを動かしてみてもその時々で勝ったか負けたかはわからず(盤面を見れば優勢か劣勢かはわかるが、チェスを始めた直後はそれもわからず、そのような洞察力は経験によって得られる)、ゲームが終わって初めて良いか悪いかがわかります。このようにいろいろな行動をするとある条件のときにようやく報酬が得られるような問題もあり、こういったことにも強化学習で対応できます。これはちょっと動物っぽい感じでいかにも人工知能という感じですね。

強化学習は将棋AIの分野でBonanzaというプログラムが取り入れて優勝したことから一部の分野ではかなり知られている手法です。

おわりに

今回は機械学習とはなんなのかについて簡単に触れました。次回以降はそれぞれの手法について詳しく見ていきましょう。

*1:このアドベントカレンダーを読んでいる人に改めて説明する必要はないと思うが、AGIではない旧来のAI、あるいは弱い人工知能をここでは指している

*2:特に、統計と機械学習の違いはよく論じられる。一般的には「統計は既存のデータを分析して知見を得る」ことを主眼に置き、機械学習は「既存のデータを分析して、未来(あるいは未知)のデータも分析できるようにする」ことを主眼におくという違いをもって説明されるが、結局のところ両者のかなりの部分は共通していることは間違いない

*3:Wikipediahttp://holehouse.org/mlclass/01_02_Introduction_regression_analysis_and_gr.html による

*4:正確にはベクトル

*5:半教師あり学習を含めることもあるが、ここでは教師あり学習の一分野という扱いにした。Wikipediaはトランスダクティブ学習とマルチタスク学習も挙げているが、これもここでは広義の教師ありとしている

*6:ニューラルネットワークは?」と思う方もいるとおもうので一応注釈を書くが、ニューラルネットワークはまた違った分類方法にあたり、教師あり学習にも教師なし学習にも利用される一手法なのでここでは出てこないことに注意

*7:実際はもっと複雑だが、後日あらためて解説する

*8:入力と正解の組を与えないといけない

*9:ここを改善するために半教師あり学習とか、Active Learning とか色々な派生した手法が存在する

*10:Twitterでもクラスタと呼ぶことがある

*11:準教師あり学習と呼ぶこともあるが稀