キャプチャ

人工知能するとプログラムは小さくなる

「Ponanzaってどれくらいの大きさのプログラム何ですか?」たまに聞かれる質問です。「私が一万行くらいです」と答えると、意外と小さいプログラムと思って、結構皆さんがっかり😞した顔をされたりするんですね。

確かにPonanzaよりも昔の時代の将棋プログラムはだいたい数万行を超えて居たようです。それが現代になるに従ってどんどん行数が減って来ています。なぜでしょうか?

実はPonanzaのソースコードのどこを探しても将棋の囲いや戦法あるいは手筋の情報は見つけられません。せいぜい王手は注意した方がいいよみたいな極めて基礎的な情報しか書いてません。それではどうしてPonanzaは将棋がで合理的なプレイができるのでしょうか?それは将棋の知識はすべてPonanza自身が機械学習によって習得しているからです。そしてその機械学習の結果はすべて数値データとして500MBくらいのバイナリファイルに保存されています。

現在の実用的な人工知能は人機一体のものがほとんど(だと思う)

つまりPonanzaというプログラムは、私が書いた一万行くらいのプログラム+Ponanza自身が機械学習したデータの二つが組み合わさったものなのです。Ponanzaは小さなプログラムでないのです。人間が書いた行数が少ないだけで機械学習のことも考えれば、逆に昔のプログラムよりも多くの将棋の知識を持っているのです。

話が少し変わって、Deep Learningの世界では「end to endにしたほうがいい」というある種の法則があります。処理の端(end)から端まで全部 Deep Learning に任せた方がいいという意味です。人間が変に前処理や前提知識を加えないで Deep Leaning の潜在能力を信じた作りにした方が良い結果になる可能性が高いみたいです。

人工知能していくと、多くの人の直感に反してどんどんプログラムは小さくなっていきます。プログラマがドメインの知識をプログラムを書いて与えることよりも、機械学習によってプログラム自身が知識を獲得していくことがその理由の根幹にあります。そしてそれこそが正しい進歩・進化の道です。




この記事が気に入ったらサポートをしてみませんか?