学習も人工知能も使ってません
電王戦後2週間は各種新聞・TV・Webメディア等の取材がほぼ毎日のようにありました。対戦前もかなりあったし。当然ながら取材の記者さん達はそれほどコンピュータ将棋に詳しくはないので、できるだけわかりやすく誤解のないよう説明し…たかったんですけどこちらもなかなかこういう説明に慣れていませんで、うまく説明できたかあまり自信ありません。で実際掲載された記事を見ると「何か違くね?」という感想を持つこともままあるのですが、まあこっちの説明がまずかったせいだろうとか思ったり。
そういう数ある「すれ違い」の中でもいちばん際立っているなーと思うのが「(機械)学習」です。ちょっとこのことについて書いてみます。
ボナンザが評価関数で機械学習を導入した、ボンクラーズもそれを取り入れてる、というのはまあかなり有名になりまして、記事でも書かれました。でもそのトーンが、専門家でない一般の人向けの記事で「ソフトが学習して強くなった」みたいに書かれると、読者の思い描くものは実態とは全く異なる、非常に過大評価したものになってしまうケースが多い。これは問題かな、と思うわけです。
たとえば24でbonkrasがずっと対戦していて、時間がたつと「学習して強くなってきたんじゃないか?」なんてことを言われる。いやお前そんなわけないだろう、とこちらとしてはツッコミたくなるんですがw やはり「学習」という言葉を一般の人に対して使ってしまうと、そういう印象を持たれてしまう。なので、一般向けの解説では「(機械)学習」という言葉を使うのは避けて誤解を招かないようにすべきではないか、と最近は感じております。
ボナンザが取り入れた機械学習の手法を俗に「ボナンザ・メソッド」と言うんですが(以下「ボナメソ」と略記)、このボナメソは、結論から言ってしまうと、一般の人が思い描く意味での「学習」とは実は全く関係ありません。
ボナメソとは何か、を一言で言うと、「方程式の解法」です。簡単な例を挙げてみます。中学3年の数学ですが、
y = x2 - 4x + 2
という「関数」があるとします。で、この関数で y=0 となる x の値を求めたいとする。この x の値を求めるのが「方程式を解く」ことです。
ボナンザ以前のやり方というのは、たとえて言うなら
「えーと、x=0 なら y=2 だな。x=1 なら y=-1 か。じゃあx=0と1の中間のどこかでゼロになるはずだから、んー x=0.5 くらいかな」という感じで適当に目分量でxを決めていた。それをボナメソでは、解を求めるアルゴリズムをきちんと考え、0.585... という正確な値を求める手順を定式化した、ということです。
大学理系の人なら、数値計算でニュートン法というのを覚えているでしょうか。ああいう風に
x(i+1) = x(i) - (y(i)/y'(i))
みたいな計算を繰り返していって正確な x を求めていく。ボナメソもそんな感じです。
大学理系でない人向けに別の例を挙げると、たとえば割り算の答えを求めるのに
____8_8._2_…_
7 ) 6 1 8
_5_6_
5 8
_5_6_
2
:
のようにして順に計算していって正確な答えを求める。これも一つの「アルゴリズム」です。こんな感じのものだと思えば大体OK。
ボナメソではもちろん関数ももっと複雑だし変数(x)もひとつだけでなくたくさんあるのですが、要は棋譜データの集合に対してある「関数」を定義して、その関数の値を最小にする変数の組が将棋の評価関数になる、というふうに問題を定式化した。「関数を最小にする」というのは、「その関数を微分したものをゼロにする」こととほとんど同じなので、結局方程式を解くことになります。で、その方程式を解く具体的手順を示した。ここで、求める変数というのはたとえば「持ち駒の金の価値(点数)」であったり、「玉飛接近の形のマイナス点」だったりする。ボナメソとはこういうものです。
複雑度こそ違え、要はボナメソというのはニュートン法や割り算の筆算法と同じく、「方程式を数値的に求めるための解法の一種」です。(一般的な意味での)「学習」とか「知能」とか呼ぶべき物ではありません。割り算の筆算を「学習」とは言いませんよね。
もちろん、「学習」でないからと言って、ボナメソの価値をいささかも減じるものではありません。従来「大体 0.5」だったものが、「0.585」にまで精度が上がった。それによってコンピュータ将棋がかなり強くなった、というのは動かしようのない事実です。ただそれを「学習」などと実態にそぐわない言葉で呼ぶのはやめましょう、というだけです。
もうひとつ書いておくと、コンピュータサイエンスの専門の世界では、ボナメソみたいなのものを「機械学習(Machine Learning)」と呼ぶのは専門用語として定着しています。これの良し悪しはともかく、今更言ってもしょうがないというのはあるので、専門家が内容を正確に理解したうえで「(機械)学習」と呼ぶのはまあいいかなとは思います。ですがそれがひとたび専門家集団を離れて、一般向けに「学習」という言葉を使ったとたん大きな誤解を生む、という状況を最近目の当たりにしたので、警鐘の意味で記事を書いてみました。
最近のコメント