fastapple's blog

時系列関係なく、情報を追記・分割・統合などします。ブログに記載の内容のうち、引用ではなく、私自身が記載している文章・コードなどについては、自由にご利用ください。

メタ機械学習


最近、メタ機械学習という言葉を考えている。


機械学習といえば、Bonanzaが将棋で取り入れた、最近ブームな手法だ。要するに統計学的に局面を解析し、勝ちやすい局面、負けやすい局面について、多数の「特徴点」と呼ばれる判断基準に落とし込
み(たとえば2駒間の位置、玉の位置、駒の価値など)、それを用いて局面を「評価」(点数に落とし込む)する。


機械学習は、その名の通り、「学習」といって、プロ棋士棋譜など大量のデータから特徴点の価値を統計学的に計算するといったことが行われる。これは実は、機械学習の欠点も如実に表わしている。


つまり、「将棋」といったあるゲームの範疇(ドメイン)での「学習」をして、将棋が強くなったとして、それをそのままチェスには活かせない。チェスにはチェスの学習が必要であり、要するに「前例」(サンプル)がないと、この手法そのものが成り立たないのである。


昔、twitterでこういうクイズが話題になった。(問題文はうろ覚え)

8561=3 、 5689=4、 では4567=????? というものだった。

これは、実は数字に含まれている○(まる)の数を数えたものが=の右辺になっている。つまりこの場合正解は、4567=1である。

これは実は大量にサンプルをコンピュータに与えれば、機械学習で解ける部類の問題である。つまり、1=0,2=0,3=0,4=0,5=0,6=1,7=0,8=2,9=1,0=1であり、それらを足したものが答えだということをコンピュータは見つけることができるだろう。

しかし、ここで着目してほしのは、コンピュータは丸の数を数えたわけではないということだ。この丸の数を数えるということをするには、数字だけではなく、数字という文字の内部の特徴まで着目する必要がある。これができないのが現在の機械学習の弱点であり、また統計学の限界であると思う。

例えば前述の問題だと、人間はおそらく丸の数だろうと、少ないサンプルから推測し、答えを出せるのだが、機械学習では答えをだせない。なぜか?最後の質問で初めて「4」そして「7」という数字がでてきたからである。つまり通常の機械学習はサンプルが少ない状態では極めてぜい弱なのである。これが、現在のコンピュータ将棋が入玉にまだまだ弱いという部分の大きな原因である。


この限界を突破するためには、まずは将棋、チェス、象棋といったそれぞれのゲームのドメインを取っ払って、学習するようなものが求められる。つまり、例えば将棋において、飛車>角>金>銀>桂>香>歩という序列が通常、成り立つのは、あくまでも将棋というゲームにおける相対的なものである。もしも、ゲームのルールが変わったら、この駒の価値序列が変わることもあるだろう。では、どういうルールのときにそうなるか?ということを考えると、結局ルールを流動的に捉えることで見えてくることになる。


では、ゲームのドメインを取っ払ってコンピュータが強くなるには?という点だが、それはドメインを取っ払った特徴量の抽出というのをやれば(とりあえずは)よい。例えば、将棋のようなゲームで、序盤にルールを生成してから、指す。というようなゲームを新たに考えて、それをコンピュータにプレイさせることを考えれば、新らしい手法が出てくるであろうと思われる。

少なくとも、将棋、チェスなどというドメインは超えることができるだろうから、それをメタ機械学習と呼びたいと思う。

      • 追記

特徴量の抽出を自動で行う手法のことを、表現学習というらしい。最近は、googleがDeep Learning というものをやっているらしく、これはこの記事のドメインを取っ払うということに類似していると思うので、関連する記事を貼っておく。
一般向けのDeep Learning
http://www.slideshare.net/pfi/deep-learning-22350063
Deep learning 用語集
http://staff.aist.go.jp/y-ichisugi/rapid-memo/deep-learning.html