機械学習は、人間がどうやって学習しているかわからないけど、人間の真似ができるようにするコンピュータの技術だと言いました。
厳密には、これは「教師あり学習」といいます。
我々自身も先生の言うことを聞いて勉強していくことがありますよね。つまり「教師あり学習」という概念は機械学習に限らず、人間の学習にも適応されるのです。この関係性を図にして整理してみましょう。
図1−11 教師あり学習
このように、教師あり学習というのは、人間にもコンピュータにも横たわる概念なんですね。
ちなみに教師がない学習というのはあるのか、という疑問が出てくると思うのですが、それもいずれお話しするのでお待ちください。
さて、それでは、コンピュータはどうやって人間を教師にして学習すればいいのでしょうか?
将棋を例に考えてみましょう。 プロの対局した将棋の手順の記録を棋譜といいます。残念ながら、プロ棋士がその局面をよいと思っていたか、悪いと思っていたかの情報はありません。
そういった情報があれば、現在の局面をプロ棋士がどれくらいよいと思っていたかの情報をもとに学習できるのですが……。
しかし諦めてはいけません。プロ棋士が指した手という非常に重要な情報が残っています。当然ながらプロ棋士が指した手と、(指されなかった)それ以外の手があります。
プロ棋士が指した手のあとの局面は、それ以外の手を指したあとの局面よりいい局面だという仮定はどうでしょうか?
図1-12 プロの指した手はほかの手よりもよい手の可能性が高い
もちろんプロ棋士といえども、いつもいちばんいい手を指すわけではありません。
しかしまだまだ弱かった当時のコンピュータから見て、プロ棋士の手は全部正解と思ってもほとんど間違いないはずです。
ピアノの練習だって、プロレベルになるまでは、まず自分よりも上手なプロの先生の言うことを素直に聞くのが上達への近道でしょう。
同じ理屈で、プロが指した手の局面のほうが、プロが指さなかったほかの手よりもよいものであると、コンピュータに機械学習をさせて訓練をします。
そのように学習することで、プロ棋士と同じような手が自然と指せるようになるのです。これは決して丸暗記ではないですよね。
図1-13 コンピュータがプロと同じ手を指すよう機械学習で調整する
プログラマがどのようにコンピュータに機械学習をさせているのか、もう少し具体的に説明しましょう。
プロの棋譜は現在5万棋譜ほどの蓄積ありますが、これはすべてデジタル化されています。ほかの分野と比べるとそこまで巨大でもありませんが、ビッグデータと言えなくもない分量です。
このデータは、図1-14のような形式になっています。機械学習をするうえでは、データがこのようにコンピュータに扱いやすい形式になっていることはとても大事です。
図1-14 デジタル化された棋譜のデータ
このデジタル化された棋譜のデータから、コンピュータはプロ棋士がある場面でどの手を指したかを知るわけです。プロが指した正解の局面と、プロが指さなかった不正解の局面を比べて、どういった要素が異なっているか計算します。
たとえばプロ棋士がある局面で駒Aと駒Bが取れる状況で、駒Aを取ったとします。
その場合は問題の駒Aの値をより大きく、駒Bの値をより小さく調整すれば、コンピュータはプロと同じ手が指せるようになりそうですね(もちろん、この調整作業の裏には数学上の根拠があり、偏微分と呼ばれるテクニックが使われています)。
値を修正したからといって、実際にコンピュータがプロと同じ手を指せるようになるとは限りません。値の調整が小さすぎることも、あるいは大きすぎる場合もあります。値を変更してしまったせいで、いままでプロと同じ手が指せていた別の局面で、正しい手が指せなくなることもザラです。
つまりこの調整の本質は、あちらが立てばこちらが立たずのような状況で、いかに最大公約数的にプロと同じ手が指せるようにするかということです。
こういった調整はコンピュータによって自動でおこなわれますが、ポナンザのように1億を超えるパラメータを調整するのは、コンピュータにとっても膨大な試行錯誤の繰り返しとなり、かなりの時間がかかります。私の研究の初期の時点では、かなりよいPCを使っても数か月ほど調整の時間がかかってしまいました。
しかしその苦労が実り、最終的に(初期)ポナンザは、プロ棋士と同じ手が45%程度の確率で指せるようになりました。