藤井聡太竜王・名人が今年ハマった「バイブコーディング」とは?について、先日、マイナビ将棋情報局のインタビューに私(やねうらお)がお答えしたものが将棋情報局の記事になった。
藤井聡太竜王・名人が今年ハマった「バイブコーディング」とは?
https://book.mynavi.jp/shogi/detail/id=149382
将棋AIの開発も、生成AI(ChatGPTやGemini)の登場によって、バイブコーディングの波がやってこようとしている。
ChatGPTやGeminiは、東大の数学の入試問題が解けただとか、数学オリンピックの問題が解けただとか、競技プログラミングの難問が解けただとか、相当賢くはなってきているものの、長いコンテキストを与えて理解するのは苦手だし、学習データ(教師データ)になかったタイプの問題も苦手である。
将棋AIは、このような生成AIによって進化するのであろうか?
例えば、やねうら王の探索部は、チェスのAIであるStockfishを参考に書かれている。これは多くの人によって作られた叡智の結晶であり、他のボードゲーム用のゲームAIの探索部にない様々なアイデアが盛り込まれている。
なので、生成AIにやねうら王の探索部(NNUE系探索部)を丸ごと与えて、「改良するアイデアを出して」と指示したところで、現時点では何ひとつ役に立つアイデアは出てこない。
これは、現状のChatGPT 5.2およびGemini 3において、(一撃では)「何ひとつ役に立つアイデアは出てこなかった」というだけであり、根気よく尋ね続ければ意味のある出力が得られたかもしれないし、また、次のバージョン以降のChatGPTやGeminiではどうなっているかは私には想像もつかない。それほど急速にこの世界は進化している。
だが、いまのところ、やねうら王の探索部を生成AIで改良するのはかなりハードルが高そうである。少なくともバイブコーディングでなんとかなるレベルでは到底ない。
しかしDL系の将棋AIは話が違ってくる。
こちらは、公開されているdlshogiのGitHubのコードだと、dlshogiの評価関数に使われているモデル(ニューラルネットワークのアーキテクチャ)は、ResNetの先端にPolicy/Value headを取り付けたものである。dlshogiの作者の山岡さんのブログには、この評価関数に使われているモデルを改良した記事がたくさんある。試しに、その記事をGemini Proにコピペして、dlshogiのモデルの定義(PyTorchで書かれたコード)も貼り付けて、「この記事にあるように以下のコードを改良してください」と書くと、正しく動作するコードが生成された。
つまりは、DL系の将棋AIの場合、適切に情報さえ与えれば、バイブコーディングが可能ということである。
これは、(機械学習の分野で標準的に使われているフレームワークである)PyTorchの表現力が高く、わずかなコードで複雑なタスクをこなすモデルが定義できるからというのもあるし、短いコードであれば、いまの生成AIのコンテキスト長に十分収まるというのもあるし、機械学習の分野は論文がインターネットで多数公開されているので、生成AIがそれらの論文の大半を学習データとしてインプットされていて、さまざまな改良のアイデアを知っているからというのもある。
例えば、Google翻訳は2016年以前は、統計的機械翻訳(SMT)であり、50万行程度のコードが書かれていた。それがDeep Learningが導入された時にコアコードは500行程度にシュリンクされたと言われている。
50万行が、500行である。
将棋AIも、NNUEの評価関数のコアコードは全部で5000行以上あるが、DL系の評価関数のコアコード(PyTorchでの定義)は、標準的なResNetなので、わずか30行程度しかない。
Google翻訳のコードが50万行から500行に変化したように、機械学習は、プログラミングのありかた自体を変えてしまうと言えるだろうし、プログラミングという行為自体を再定義しているとも言える。少なくとも500行となったGoogle翻訳にとって、大量の教師データを与え機械学習を行う行為自体が「翻訳ソフト」を作るという営みの一部であることには疑いの余地もない。
機械学習の領域では、いまの生成AIですら、ときに平均的なエンジニアを上回るコードを差し出してくる。計算資源という代償を払う必要はあるにせよ、従来のプログラミングで築かれたプロダクトさえ、機械学習という形へと作り替えたほうが良い場面が、これから増えていくのかもしれない。私は、確かにひとつの未来を垣間見た気がした。