機械学習は、人間がどうやって学習しているかわからないけど、人間の真似ができるようにするコンピュータの技術だと言いました。
厳密には、これは「教師あり学習」といいます。
我々自身も先生の言うことを聞いて勉強していくことがありますよね。つまり「教師あり学習」という概念は機械学習に限らず、人間の学習にも適応されるのです。この関係性を図にして整理してみましょう。
図1−11 教師あり学習
このように、教師あり学習というのは、人間にもコンピュータにも横たわる概念なんですね。
ちなみに教師がない学習というのはあるのか、という疑問が出てくると思うのですが、それもいずれお話しするのでお待ちください。
さて、それでは、コンピュータはどうやって人間を教師にして学習すればいいのでしょうか?
将棋を例に考えてみましょう。 プロの対局した将棋の手順の記録を棋譜といいます。残念ながら、プロ棋士がその局面をよいと思っていたか、悪いと思っていたかの情報はありません。
そういった情報があれば、現在の局面をプロ棋士がどれくらいよいと思っていたかの情報をもとに学習できるのですが……。
しかし諦めてはいけません。プロ棋士が指した手という非常に重要な情報が残っています。当然ながらプロ棋士が指した手と、(指されなかった)それ以外の手があります。
プロ棋士が指した手のあとの局面は、それ以外の手を指したあとの局面よりいい局面だという仮定はどうでしょうか?
図1-12 プロの指した手はほかの手よりもよい手の可能性が高い
もちろんプロ棋士といえども、いつもいちばんいい手を指すわけではありません。
しかしまだまだ弱かった当時のコンピュータから見て、プロ棋士の手は全部正解と思ってもほとんど間違いないはずです。
ピアノの練習だって、プロレベルになるまでは、まず自分よりも上手なプロの先生の言うことを素直に聞くのが上達への近道でしょう。
同じ理屈で、プロが指した手の局面のほうが、プロが指さなかったほかの手よりもよいものであると、コンピュータに機械学習をさせて訓練をします。
そのように学習することで、プロ棋士と同じような手が自然と指せるようになるのです。これは決して丸暗記ではないですよね。
図1-13 コンピュータがプロと同じ手を指すよう機械学習で調整する
プログラマがどのようにコンピュータに機械学習をさせているのか、もう少し具体的に説明しましょう。
プロの棋譜は現在5万棋譜ほどの蓄積ありますが、これはすべてデジタル化されています。ほかの分野と比べるとそこまで巨大でもありませんが、ビッグデータと言えなくもない分量です。
このデータは、図1-14のような形式になっています。機械学習をするうえでは、データがこのようにコンピュータに扱いやすい形式になっていることはとても大事です。
図1-14 デジタル化された棋譜のデータ
このデジタル化された棋譜のデータから、コンピュータはプロ棋士がある場面でどの手を指したかを知るわけです。プロが指した正解の局面と、プロが指さなかった不正解の局面を比べて、どういった要素が異なっているか計算します。
たとえばプロ棋士がある局面で駒Aと駒Bが取れる状況で、駒Aを取ったとします。
その場合は問題の駒Aの値をより大きく、駒Bの値をより小さく調整すれば、コンピュータはプロと同じ手が指せるようになりそうですね(もちろん、この調整作業の裏には数学上の根拠があり、偏微分と呼ばれるテクニックが使われています)。
値を修正したからといって、実際にコンピュータがプロと同じ手を指せるようになるとは限りません。値の調整が小さすぎることも、あるいは大きすぎる場合もあります。値を変更してしまったせいで、いままでプロと同じ手が指せていた別の局面で、正しい手が指せなくなることもザラです。
つまりこの調整の本質は、あちらが立てばこちらが立たずのような状況で、いかに最大公約数的にプロと同じ手が指せるようにするかということです。
こういった調整はコンピュータによって自動でおこなわれますが、ポナンザのように1億を超えるパラメータを調整するのは、コンピュータにとっても膨大な試行錯誤の繰り返しとなり、かなりの時間がかかります。私の研究の初期の時点では、かなりよいPCを使っても数か月ほど調整の時間がかかってしまいました。
しかしその苦労が実り、最終的に(初期)ポナンザは、プロ棋士と同じ手が45%程度の確率で指せるようになりました。
機械学習の弱点と工夫
素晴らしい成果を上げた機械学習ですが、当然のことながら完璧ではありません。当初からいくつもの弱点が指摘されてきました。そのなかから1つ、皆さんにぜひ知っておいてもらいたいものがあります。
機械学習、とくに教師あり機械学習の最大の弱点は、教師が少ないという状況が頻繁に起きうることです。
プロ棋士の棋譜は5万局ほどあると言いましたが、正直なところコンピュータには全然足りません。一方、人間はものすごく高度な判断をしていて、少ない教師例からでも学習ができます。逆にそんなに大量の情報を捌けないので、少ない情報でなんとかしていると言ったほうがよいでしょう。
人間は物事を見続けているなかで、適切な一般化や隠れているノウハウを発見するのが得意です。たとえば格言というのがありますよね。あれは将棋をたくさん指していくなかで一般化されたノウハウなのです。
しかし残念ながらコンピュータには、一般化する能力がほとんどありません。ですから人間にとっては途方もないように感じる5万の棋譜ですら、教師としては足りないということになります。コンピュータにはより多くの棋譜が必要なのです。
この問題はどうやって解決するのでしょうか?
ここでいったんコンピュータ将棋のことは置いて、画像認識での例を考えてみましょう。
画像認識では、画像に写っているものをコンピュータに答えさせるのが一般的なタスクの1つです。その場合も、教師例をどのように作るかが問題になります。
すごく大雑把に言えば、2通りしか方法はありません。
1つは、人間が頑張って「タグ」をつけるのです。
図1-15 ゴリラの画像(1)©IMPALASTOCK/istock
画像を見て、それが何かを人が少しずつラベルをつけるのです。 10枚や100枚ならまあなんとかできますが、1万枚、10万枚必要だと言われたらどうでしょうか……ちょっときついですよね。
もう1つはもう少し楽な方法です。 それはインターネット上の文章情報と画像を取ってきて推定する方法です。人手はかからなくて済むのですが、文章情報と画像の対応関係が正確なのか、ちょっと怪しいですね。
図1-16 ゴリラの画像(2)
©IMPALASTOCK/istock
どちらにせよ基本的には画像に「タグ」をつけているわけですが、何十万、何百万揃えるのは大変ですね。
そこで以下のような「カサ増し」をします。
図1-17 ゴリラの画像(3)
©IMPALASTOCK/istock
この2つは反転していてもゴリラと認識させる。
図1-18 ゴリラの画像(4)
©IMPALASTOCK/istock
画像の中心にいなくてもゴリラと認識させる。
回転させたり、位置をずらしたり、色のバランスを変えてもゴリラはゴリラですよね。
こうやって画像を「カサ増し」して学習します。これで少しは教師例が少ない問題を緩和できます。
実はこのテクニックは、コンピュータ将棋でも応用されています。
将棋の駒は左右で移動性能に差はありません。それに盤面上である程度、左右や上下にズレていても、同じような性能を発揮します。なので、コンピュータ将棋を作るときに、左右反転やズレた状態ものは元の局面と一緒だとプログラマが指示することで、教師例の不足を防ぐのです。
これは非常に有効な手法で、あっという間に開発者のあいだで広まり共通の技術となりました。
図1-19 状況を反転させても元の局面と実質は同じ