ロジスティクスAI 戦略のポイント
From:朴成浩
囲碁はそれにしてもショックでした。
まだ10年は人間に追いつけない、そう言われていたのに、いきなりあっさり最高レベルのプロが負けましたからね。
ゲームとしての難しさは別として、
「人間に勝つ」ということで言えば
囲碁が将棋やチェスより難しいわけがない。
とは言ったものの、実際にGoogleが本気出したらこれほどとは……。
Googleの、というかアメリカのIT業と日本との戦力差を改めて見せつけられました。
これではIT植民地状態になるわけです。いや、ITだけの問題ではありません。今、アメリカ発でITがあらゆる分野に融合しつつあります。
ロジスティクスも例外ではありません。
むしろ、今まで日本ローカルという地域の壁に守られ、ほとんどの業務を勘と経験に依存するロジスティクスこそAIと融合して最も大きく変わる分野です。
今回のGoogleの仕事はまさに現在の人工知能技術トレンドのメインストリームであり、ロジスティクスAIの今後の動向を考える上でも私たちはしっかりと理解しておく必要があります。
ということで、GoogleのAlphaGo(アルファ碁)のインパクトを緊急解説していきたいと思います。
今回、アルファ碁が与えた衝撃でやはり一番、大きいのはある領域の知的分野においてはコンピューターが完全に人間を超えてしまったかもしれない、ということですね。
ここが、今までのチェスや将棋で人間が負けたときと最も大きく異なる点です。
将棋やチェスと違って、極論すれば、もはや囲碁は人間がプレイする意味が完全に消滅してしまった可能性があります。何千年と続いてきた、囲碁を「人間が」極めようとする努力。定石を研究し、プロ同士が対戦を積み重ねて研鑽していくような行為の意義は今日この時点で終了し、明日以降はもうそういう営みは無意味となった。そういう可能性すらあるのです。
これはもちろん、囲碁だけに留まる話ではありません。Googleが本気を出せば、将棋やチェスについても、いやそれどころか同種のあらゆるゲームについても同じようなアプローチによってその意義を消失させることができる、ということです。
この種の全てのゲームについて、「どうやれば勝てるのだろうか?」と人間があれこれ研究することは、もはや「○×」ゲームの必勝法を知らない幼稚園児が一生懸命、勝ち負けに熱中して遊ぶのに似たようなことになってしまった可能性があるのです。
最近、欧米の著名な科学者が揃いも揃って「シンギュラリティ」は近いだとか「人工知能を規制せよ」だとか、SF映画の見過ぎなんじゃないですか?と言いたくなるような「バカげた」提言を連発しているわけですが、アルファ碁というとんでもない結果を見せられた今、彼らが心配する理由も確かに分かるような気がします。
「アルファ碁」というか、DeepMindチームの何がそんなに「ヤバい」のか?
まだ、アルファ碁が戦慄のパフォーマンスを見せたのはたったの5戦(しかもそのうち1戦は意外なほどに脆い負け方ですし)、とてつもないまぐれ当たりの可能性も否定できる段階ではありませんが、アルファ碁の「ヤバさ」を見ていきましょう。
まず、大前提となる話を抑えておかなくてはいけないのですが、囲碁や将棋は有限の手の中でゲームを進めるわけですから、3×3マスの「○×」ゲームと同じように原理的には必ず必勝法があります。
つまり、先手・後手お互いが最善のプレイ、いわゆる「神の手」を指し続けた場合、必ず結果は次のどれかになるわけです。
1. 先手が「絶対に」勝つ
2. 後手が「絶対に」勝つ
3. 「絶対に」引き分けになる
囲碁や将棋が先手必勝なのか後手必勝なのか、それとも必ず引き分けになるのか、それは指し得る手の組み合わせを全て調べ上げれば一目瞭然で分かってしまうことなんですね。
ただし、この「全て調べ上げる」ということはとてつもなく大変です。というか、非常に強い意味で不可能です。なぜかと言えば、このコラムでもすでに書いたように囲碁や将棋の指し得る手の全ての組み合わせというものは、途方もない数のパターンになってしまうからです。
「莫大な数の組み合わせ」というと、「でも、うんと時間をかけて調べれば分かるんでしょ?」と思う人もいるかと思います。しかし、もしこの「うんと時間をかけて」というのが、宇宙の始まりから宇宙が終わるまでよりさらに長い時間がかかる話だったとしたら、それでもまだ「時間をかければ分かる」と言えるでしょうか?
実際、囲碁や将棋の指し手の組み合わせを全て調べるというのは、うんと時間をかけて調べれば達成できる、というようなレベルの話ではないのです。この宇宙に存在する全ての原子・エネルギーを計算機資源に変えて、現在の物理学で理論的に作り得る最高速のコンピューターで宇宙開びゃくのときから計算を開始し、現在の宇宙論で考えられる宇宙の寿命に至るまで全て計算し続けたとしても調べ上げることができない。それくらい莫大なパターンになってしまうのですね。
「不可能」という概念にはいろいろなレベルがありますが、物理的に可能なありとあらゆる努力をしてそれでもなお達成できない、つまりそれを可能にする手段がこの世の中には存在し得ない。数学的には解けるはずなのだが、人間は絶対にその解にたどり着けない。話が脱線しますが、こういう意味における「不可能」というものがあるということは人間の知性の限界を考える上で非常に重要で面白い問題です。興味のある方はさらに掘り下げて「計算可能性」などのテーマを是非、一度、調べてみて下さい。
なお、さらに余談ですが、これは囲碁や将棋だけの話ではありません。たった数百の配送先を最も短い距離で訪問する訪問順とか、そんな程度の組み合わせですら、途方もないパターン数となり、全てを調べ上げるのは到底、不可能です。我々の配送計画最適化も莫大なパターンの組み合わせに挑む、という点では囲碁や将棋と全く同じなんですね。(なお、最大の利益を達成する配車組みはある面では、囲碁以上に難しいのでディープラーニングだけでは無理だと思いますが、これについてはまたそのうちに!)
さて、このように囲碁や将棋では、人間であろうとコンピューターであろうと、ある手を指したとしてもその後に起こり得る展開を全て調べ上げられることは不可能なので、「今ここでどういう手を指せば良いか?」という問いに正しく答えることは誰にもできません。極論すれば「適当に」指すしかないわけです。素人だろうがプロだろうがコンピューターだろうが、この手を指せば絶対に勝つ or 負ける、なんてことは分からないのです。
(ただし、終盤になって指し手が限定されてきた場合は話は別です。たとえば、王手を連続して数百手先で詰ませられるような場合は、コンピュータどころか人間のプロでさえ読み切ることができます)
ですから、ある局面を前にして、どう指すかはぶっちゃけ最後は「勘で」指すしかないわけです。が、とは言っても「何となく」勝ちそうな手、負けそうな手というのはあります。いわゆる大局観というやつですね。この手を指しておけば必ず勝てるかどうかは分からないが、相手がよほど想定外のすごい手を見つけなければこの後を有利に展開できるだろう、くらいのことは何となく分かるわけです。
つまり、絶対的な正解が分からない以上、囲碁や将棋ではある局面で「どちらが勝ちそうか?」を精度良く評価することが決定的に重要になります。もし、ある盤面が与えられたとき、どちらが勝ちそうかを高い精度で評価することができれば、自分が次にどういう手を指せば良いかが分かるからです。自分が一手指した先の盤面の状況が最も自分に「有利そう」になる手を指せば良いわけですね。
このように盤面の「何となく勝ちそうな度合い」を評価・判定するものを評価関数と言います。人間で言うところの「大局観」つまり「勘と経験」で判断する部分ですね。人間だろうがコンピューターだろうが絶対正解を出す「神の一手」が分からない以上、囲碁や将棋では、読み合い以上にこの大局観すなわち評価関数が勝負を決める要因になるわけです。
もし精度の高い(間違いの少ない)評価関数を持つことができれば、相手のあらゆる応手とまではいかなくても、ほとんどの応手に対して勝てる手を打てる、ということになります。逆に、精度の低い評価関数であれば、自分は良いと思っても相手は簡単にそれを逆転する手を発見できてしまいます。
ただし、繰り返しになりますが、評価関数が重要なのは「神の一手」が分からないからであって、評価関数は「神の一手」の前には無力です。どんなに精度の高い評価関数を作ったとしても、それが100%の精度(つまり絶対に勝ち負けを言い当てられるレベル)でない限り、その後に続く1000兆通りの展開では全て勝てるが、1パターンだけ相手が正しく応じ続けると負けてしまう展開がある、というようなことは否定できません。
実際、今回、第4局では想定外の手を指されてアルファ碁が負けました。アルファ碁の心中を語るなら、「まさかその手に続いてそういう展開があったとは!?」という気持ちだったでしょう。だから、もし囲碁の神様というものがいるのならば、今回のアルファ碁も将来のアルファ碁もまだ神様には絶対に勝てません。ただ、アルファ碁の方が人間よりはずっと神様に近い位置にいる。それは確かです。囲碁の神様と人間との間には、人間が思っていた以上にまだ巨大な距離があって、その間にはコンピューターが入るような隙間が十分にあった、ということなんですね。
そういうわけで、コンピューターでさえ神の一手を解き明かすことができない現状、囲碁や将棋の最大のテーマは
> どのようにすれば良い評価関数を作れるか?
に尽きるわけです。よくコンピューター将棋というとたくさんの手を読める、ということが「凄さ」として語られますが、「どれくらい読めるか」よりも「どれくらい良い評価関数を作れるか」の方がはるかに重要です。
どうすれば人間より良い評価関数を作れるのか? どうすればトッププロさえ圧倒するような大局観を身につけられるのか? ここがプログラマの腕の見せ所になるわけ……でした。アルファ碁の登場する今の今までは!
この部分において、アルファ碁はまさに今後、人間の存在意義を消滅させるようなすさまじい破壊力のある方法論を確立したわけですが、それを理解するためにまず今までのアプローチを理解しておく必要があります。
たとえば、人間のプロを破るに至ったコンピューター将棋ではどのように評価関数を作成したのでしょうか? その基本は「人間が考える」です。今まで、いくらコンピューター将棋がトッププロを破ろうが、情報科学の専門家からは人間知性に対する脅威と受け止められてこなかったのは、「どうやったら将棋が強くなるか?」という大局観の基本は全て人間が教えてあげなくてはいけなかったからですね。
つまり、将棋とは、
鉄則1. 基本的に駒が多い方が有利
鉄則2. 飛車とか角とか強い駒が多い方が有利
鉄則3. 王様が堅く囲われている方が有利
とか、基本的にはどういう状態であることを目指すゲームであるのか、その評価関数の骨格を人間が作ってあげなくてはいけなかったわけです。もっと細かく言えば、そもそも「王様が堅く囲われている」とはどういう状態なのか、とかそういうことまで細かく定義してあげる必要があります。
これは、画像認識で「ネコとは何か?」という問いについて、
鉄則1. ネコにはたぶんとがった耳があるでしょう
鉄則2. ネコにはたぶんひげが生えているでしょう
鉄則3. ネコは普通は4本足でしょう
というネコの基本的な定義を細かく定義してあげるアプローチに似ています。で、鉄則1は20点、鉄則2は15点、鉄則3は10点・・・というように点数を定義して、80点以上ならネコだ!というわけです。(非常におおざっぱな説明ですが)
で、大昔は、この鉄則の洗い出しと各鉄則ごとの配点はプログラマが勘と経験で決めていまして、であるからプログラマ自体もある程度、囲碁なり将棋なりが強く、自分なりの大局観を持っていないと良い評価関数は作れませんでした。たとえば、飛車は角より戦闘力で言えば何ポイントくらい偉いのか?とか、駒得することは玉の囲いを崩すことより何ポイントくらい重要なのか?とか、そもそも他に鉄則はないのか?とかそういうことを人間が考えて定義してあげるわけですね。
が、とはいえ、そこで評価関数に反映される大局観は所詮はプログラマや監修者の個人的な見解に過ぎないわけで、プロが生活のほとんどを犠牲にするほどの膨大な時間を投じて積み重ねてきた神秘的とすら言える修行で養った大局観に到底、太刀打ちできるようなものではありませんでした。
コンピューター将棋が突然、強くなったのは、この鉄則に対してどうやれば適切な配点ができるか?が確立したからです。でも、どうやったら「駒得は玉の囲いより何ポイント重要なのか?」なんて問いに適切な答えを出せるのでしょうか? 優れたプログラマーたちが競い合って考えた末にたどり着いた結論はこうです。
「そうだ、プロに学ぼう! ありとあらゆるプロたちに!」
というわけで、将棋でおおよそ重要そうだと思われる鉄則を洗いざらい出した上で、それぞれの鉄則が実際にどれくらい重要なのかについては、プロの膨大な過去の棋譜を元にして、現実にプロが指した手に近くなるように配点を調整する。こういう手法が確立しました。
(もちろん、これも学習の一種ですが、「どこが」学習の重点ポイントか、観察すべき評価ポイントは人間の方で用意してあげなくてはいけない点に注意してください)
言ってみれば、人間の将棋観のベースの上に、数値化されたプロの集合知を乗せたわけです。これでコンピューター将棋は一気に強くなりました。様々な将棋ソフトがプロ相手に連勝を重ねニュースになったのは記憶に新しいですね。
では、アルファ碁も同じようなアプローチで強くなったのでしょうか?
・・・いえ、実は全然、違います。
一体、Googleはどのような荒技で人間を打ち負かしたのか?囲碁関係者のみならず、情報科学の研究者たちにも大きな衝撃を与えたアルファ碁の思想を引き続いて見ていきたいと思います。
(その2に続く)
++朴成浩