NHKクローズアップ現代で、『人間 VS コンピューター 人工知能はどこまで進化したか』という番組が放映されました。
コンピューター将棋ソフト「ボンクラーズ」が、元名人・米長邦雄永世棋聖を破った、という内容。
驚きでした。
番組はこちらにまるごと載っています。
http://cgi4.nhk.or.jp/gendai/kiroku/detail.cgi?content_id=3155&html=2
実は、20年ほど前に人工知能に興味を持って、色々勉強していた時期がありました。
当時、人工知能(というか「エキスパートシステム」)に大きな期待が盛り上がっていたので、新しいモノ・流行りモノ好きな私としては個人的に強い興味を持ったことと、もしかしたら仕事に使えるかもとの淡い期待もあったりしました。
そして、その当時の結論としては、「とても(まだ)まともに使える代物ではない」という結果でした。
人間の判断をコンピュータが行うようなシステムが期待されたのですが、「人工知能」として紹介されているアルゴリズムがあまりに稚拙で、ちょっと勉強しただけの素人の私でも、とてもそんな大それたことができるとは考えられなかったです。まぁ、私の勉強した教材のレベルが低すぎただけかもしれないですが。
それから二十数年。
「人工知能」が、将棋の名人に勝つくらいになったのですね。
番組でも紹介されていましたが、チェスの世界では、1997年にコンピュータ「ディープ・ブルー」が世界チャンピオンに勝利しました。これはニュースで聞いたことがあります。チェスでは、コンピュータは次の一手の全てを調べ上げ、最も優れた手を打つという、いわば力づくで勝利しました。
これに対し、将棋はチェスに比べてはるかに複雑なゲームです。その理由は、取った相手の駒を自分の駒としてどこにでも打つことができること。これにより、次の一手の選択肢が飛躍的に大きくなります。将棋では、わずか10手指す間におよそ1073京とおりの局面が考えられるそうです。どんなに高性能のコンピュータでも、チェスのように全てを数え上げて最適な一手を選ぶことはできません。
では人間の将棋の名人はどうやって次の一手を選択しているのか、不思議なことです。
番組では、電気通信大の研究で、初心者、中級者、上級者となるにつれ次の局面を読む数が増えますが、羽生善治氏は逆に中級者よりも少ない数しか読んでいないことが分かりました。このレベルになると「大局観」により、最善の次の一手が、わずかのパターンから瞬時に選択できる能力があると。
不思議なことではありますが、納得できる結果です。
人工知能の研究では、「エキスパート」と呼ばれる人がどのように判断を行っているのかを理解し、同じ判断をコンピュータで実現することが求められますが、人間のエキスパートがどうやってそれを行っているのかがまだよくわからないことから、コンピュータでそれをどうやって実現したらよいのかもいまだによくわかっていないのだと思います(思っていました)。
チェスのプログラムは人間が行っているのとは全く異なる、コンピュータが得意な方法で、名人を負かしてしまいました。しかし、そんな力技が使えない将棋では、どんなアルゴリズムを使って名人に勝つまでの力を実現したのでしょうか?
今回、米永氏と対決したコンピュータの名前は「ボンクラーズ」(ぼんくら?あまりいい名前じゃないですね。マンガ『あずまんが大王』由来という説もあるそうです)。これは、富士通研究所の伊藤英紀研究員が開発したものだそうです。
このボンクラーズは、その前に開発され公開されている将棋プログラム「Bonanza」を改良したものだそうです。Bonanzaを開発したのは、当時カナダ在住だった日本人の化学者(!)、保木邦仁氏。作成当時は将棋についてはほとんど知らないことも話題となったそうです。
http://ja.wikipedia.org/wiki/Bonanza
面白いのは評価関数(局面が有利なのか不利なのかを数値で判断するための関数)。
機械学習でパラメータを自動生成したのだと。
(引用開始)
これは保木の本業である化学反応の制御理論を応用したものである(26ページ)。保木自身の棋力ではコンピュータを強くする設定を行うことができず、既存の機械学習で成果を上げたプログラムがなかったため、制御理論をもとに自作することにしたという。
ボナンザは元にした6万局の棋譜データから、評価関数のパラメータを自動生成している。他のソフトは開発者がパラメータを定めた評価関数を用いているため、開発者の固定観念や棋力の影響を受けることがあった。
(引用終わり)
よく我々の仕事の中、と言ってももっと初歩的な「どれが最も優れているか比較しましょう」程度の話ですが、よく評価関数として、「この項目は10点満点、こちらは5点、そして、足し算する」とかを恣意的に設定してしまって、訳のわからない評価結果を出していることがあります。
将棋を知っている開発者ほど評価関数を自分で決めたがったのに対し、Bonanzaではそのパラメータを自動で生成することにしたのがポイントであり、それは開発者が将棋をよく知らなかったからそうするしかなかったのだ、と。そして、将棋を知らない人が開発したものの方が強かった、と。面白い逸話です。
さて、「機械学習」とあっさり出てきていますが、どうやっているのでしょうね。ニューラルネットワークとかも一時もてはやされましたが、これはどうなのでしょうか。
ロボットがダーっと本を読んで世界の知識を得るというシーンを何かの映画で観たように思いますが、まるでそんな感じで興味深いです。もちろん、紙の棋譜を読める訳はないんですが。
将棋のプログラム開発、奥が深いです。
それでも、人工知能の開発が進んでいると言っても、まだ将棋という狭い世界の話でこのレベル。人間のようにモノを判断できる鉄腕アトムの世界が実現するのは、まだまだ先、というか、実現などあり得ないのかもしれません。
まぁ、人間の判断といっても「暗黙知を形式知に!」とか言ってそこそこ実現できるレベルのモノから、将棋の名人やイチローのバッティングのようにどのようにしたら到達できるのか分からないレベルまでさまざまで、前者程度であれば現在のコンピュータシステム程度でも十分有効です。というか、実はコンピュータシステムなどどうでもよくて、暗黙地を形式知にする作業そのものこそが重要だったりして、それで9割がた目的を達していたりしますが。
…あ、珍しく仕事に関連しそうなことを書いてしまった。