考えるコンピュータ碁?
コンピュータに囲碁をさせるのを人工知能のプロジェクトだとすると、強いプログラムを作る事以上に、良い手が良い理由、悪い手が悪い理由、というのが理解出来るプログラムを作るのが重要になります。
例を挙げて考えてみます。
囲碁にしても将棋にしても、対局のバリエーションの数は実質上有限です(天文学的な数字ですが)。もし、可能な対局を全部リストアップ出来たとすると、先手か後手どちらかの必勝法が見つけられるはずなんですね。(注)
マルバツの場合を考えると分かりやすいと思います。マルバツだと、人間でもやる気になれば、全部の手全てを網羅して、終局までの手順をリストアップする事が出来ます。そして、そのリストを使えば、絶対に負けない手順で打つ事が出来ます。(ゲーム理論でいう、ミニマックス法という方法を使うと最善手が見つけられます)
ここで質問。囲碁(将棋、チェス、etc.)の可能な対局を全てリストアップしたデータベースを使って最善手を選ぶプログラムは、囲碁(将棋、チェス、etc.)というゲームの構造を理解した事になるでしょうか?
答えは、Noだと思います。このプログラムはもちろん、理論上最強のプログラムです。どんな局面でも、最善の手が打てるんですから。
でも、プレーしているゲームの中に存在するパターンを認識して、それを活用する事は全く出来ていません。このプログラムはどんな局面に出会っても、自分の手全部に対する相手の手を全部リストアップして、次の自分の手を全部リストアップ…という風に、何がなんでも全ての可能性をリストアップして、最善手を見つけるんです。
結局のところ、この手を打てば勝てるからこれが良い手、という判断しかしていません。言い換えると、ゲームのルールしか理解していない、という事になります。
囲碁でも将棋でもチェスでも、ゲーム内には色々なパターンがあります。それは、より大きな地を囲むために好ましい石の形だったり、相手の王将を詰める手筋だったり。
昨日書いた囲碁の、「二眼があれば活きられる」、と言うのもその1つ。
このパターン、概念を理解したと言うのはつまり、実戦でそれを活用して、効率よく考えられるという事。つまり、自分の石に眼を2つ作るような手を探す事、相手の石に眼を2つ作れないような手を探す事。そしてもしかすると一番大事なのが、もう2つ眼が出来ているのなら、その局面はもう決まっているので気にしなくて良い、という事。こういった考え方が出来なければなりません。
伝統的なゲームのプログラムの組み方と言っていい物に、プログラマが知っているパターンを、プログラムに認識させる、というのがあります。こういう形に石が並んでいるのは良い事で、こういう形で並んでいるのは良くない、という風に局面を評価出来るようにするんです。そして、出来るだけ評価の高い局面に持って行けるような手を打つわけ。
これは、丸暗記、詰め込み教育と呼んでいい方法だと思います。こういうパターンが良い、というのは、プログラムが理解しているというより、知識として持っているだけです。プログラムを組んだ人間の理解が移植されているのは確かですが、コンピュータが考える中で得た理解ではありません。独立した知能というよりは、プログラマの知能の延長。人工知能としては物足りないです。
で、モンテカルロ法はどうなのか、という話をするんでした。囲碁をモンテカルロ法を使ってプレーするプログラムは、局面ごとに終局までのプレーをシミュレートします。そしてそのシミュレーションは、弱いにしても、全然ダメな手は除外出来るプログラム同士を戦わせる事で行われます。そして、考慮している局面からシミュレートした結果、勝率が高かった手を選ぶ、という事になります。
前回、なぜこれが囲碁で効果的なのかは説明しました。試合の最後までシミュレートするので、後々になって効いてくる手、というのが見つけられるんです。
ですが、こうやって選ばれた手がなぜ効果的なのか、については、プログラムは全く理解していません。
これは、必勝法を持っているプログラムと似た理由からです。モンテカルロ法を使っているプログラムは、どんな局面でもやる事が基本的に一緒なんです。局面から、どんな手が良いと思われるのか、と言うのはほぼ無視して、とにかくシミュレートする。この手を打つと勝率が上がる、と言う結果しか気にせず、背景にあるかもしれないパターン、理由については不問なんです。
モンテカルロ法は、目的によってはとても有用なものです。(例えば、先週のスロットマシーンの戦術を比較するのに使えます。)ただそれは、考える事の代わりには出来ない物と思われます。
パターンをプログラマが手動でインプットするのでは、プログラマの知識を超える事は出来ませんし(計算能力の違いから、プログラマより強くなる事は可能ですが)、パターンを無視して計算するだけでは、ゲームの構造を理解したとは言えません。本当の意味での人工知能が囲碁をするとなると、学習能力を持ったプログラムに限定されるように思います。
(注)囲碁では、先手の有利を解消するために、コミと呼ばれるハンディキャップが後手の点数に加えられます。コミが無ければ、先手必勝法があるはずですが、コミがある場合はどちらに必勝法があるのか不明です。
チェッカーでは、双方がベストを尽くせば引き分けになる事が証明されています。チェスの場合、証明されてはいませんが、トップの選手同士の対局はかなりの数が引き分けになるので、それがベストの可能性があります。
例を挙げて考えてみます。
囲碁にしても将棋にしても、対局のバリエーションの数は実質上有限です(天文学的な数字ですが)。もし、可能な対局を全部リストアップ出来たとすると、先手か後手どちらかの必勝法が見つけられるはずなんですね。(注)
マルバツの場合を考えると分かりやすいと思います。マルバツだと、人間でもやる気になれば、全部の手全てを網羅して、終局までの手順をリストアップする事が出来ます。そして、そのリストを使えば、絶対に負けない手順で打つ事が出来ます。(ゲーム理論でいう、ミニマックス法という方法を使うと最善手が見つけられます)
ここで質問。囲碁(将棋、チェス、etc.)の可能な対局を全てリストアップしたデータベースを使って最善手を選ぶプログラムは、囲碁(将棋、チェス、etc.)というゲームの構造を理解した事になるでしょうか?
答えは、Noだと思います。このプログラムはもちろん、理論上最強のプログラムです。どんな局面でも、最善の手が打てるんですから。
でも、プレーしているゲームの中に存在するパターンを認識して、それを活用する事は全く出来ていません。このプログラムはどんな局面に出会っても、自分の手全部に対する相手の手を全部リストアップして、次の自分の手を全部リストアップ…という風に、何がなんでも全ての可能性をリストアップして、最善手を見つけるんです。
結局のところ、この手を打てば勝てるからこれが良い手、という判断しかしていません。言い換えると、ゲームのルールしか理解していない、という事になります。
囲碁でも将棋でもチェスでも、ゲーム内には色々なパターンがあります。それは、より大きな地を囲むために好ましい石の形だったり、相手の王将を詰める手筋だったり。
昨日書いた囲碁の、「二眼があれば活きられる」、と言うのもその1つ。
このパターン、概念を理解したと言うのはつまり、実戦でそれを活用して、効率よく考えられるという事。つまり、自分の石に眼を2つ作るような手を探す事、相手の石に眼を2つ作れないような手を探す事。そしてもしかすると一番大事なのが、もう2つ眼が出来ているのなら、その局面はもう決まっているので気にしなくて良い、という事。こういった考え方が出来なければなりません。
伝統的なゲームのプログラムの組み方と言っていい物に、プログラマが知っているパターンを、プログラムに認識させる、というのがあります。こういう形に石が並んでいるのは良い事で、こういう形で並んでいるのは良くない、という風に局面を評価出来るようにするんです。そして、出来るだけ評価の高い局面に持って行けるような手を打つわけ。
これは、丸暗記、詰め込み教育と呼んでいい方法だと思います。こういうパターンが良い、というのは、プログラムが理解しているというより、知識として持っているだけです。プログラムを組んだ人間の理解が移植されているのは確かですが、コンピュータが考える中で得た理解ではありません。独立した知能というよりは、プログラマの知能の延長。人工知能としては物足りないです。
で、モンテカルロ法はどうなのか、という話をするんでした。囲碁をモンテカルロ法を使ってプレーするプログラムは、局面ごとに終局までのプレーをシミュレートします。そしてそのシミュレーションは、弱いにしても、全然ダメな手は除外出来るプログラム同士を戦わせる事で行われます。そして、考慮している局面からシミュレートした結果、勝率が高かった手を選ぶ、という事になります。
前回、なぜこれが囲碁で効果的なのかは説明しました。試合の最後までシミュレートするので、後々になって効いてくる手、というのが見つけられるんです。
ですが、こうやって選ばれた手がなぜ効果的なのか、については、プログラムは全く理解していません。
これは、必勝法を持っているプログラムと似た理由からです。モンテカルロ法を使っているプログラムは、どんな局面でもやる事が基本的に一緒なんです。局面から、どんな手が良いと思われるのか、と言うのはほぼ無視して、とにかくシミュレートする。この手を打つと勝率が上がる、と言う結果しか気にせず、背景にあるかもしれないパターン、理由については不問なんです。
モンテカルロ法は、目的によってはとても有用なものです。(例えば、先週のスロットマシーンの戦術を比較するのに使えます。)ただそれは、考える事の代わりには出来ない物と思われます。
パターンをプログラマが手動でインプットするのでは、プログラマの知識を超える事は出来ませんし(計算能力の違いから、プログラマより強くなる事は可能ですが)、パターンを無視して計算するだけでは、ゲームの構造を理解したとは言えません。本当の意味での人工知能が囲碁をするとなると、学習能力を持ったプログラムに限定されるように思います。
(注)囲碁では、先手の有利を解消するために、コミと呼ばれるハンディキャップが後手の点数に加えられます。コミが無ければ、先手必勝法があるはずですが、コミがある場合はどちらに必勝法があるのか不明です。
チェッカーでは、双方がベストを尽くせば引き分けになる事が証明されています。チェスの場合、証明されてはいませんが、トップの選手同士の対局はかなりの数が引き分けになるので、それがベストの可能性があります。
テーマ : 心・脳・言葉・人工知能
ジャンル : 学問・文化・芸術














