迷路づくりの名人が教えてくれた、AIの意外な鍛え方
迷路を設計する職人がいるとします。手元には簡単な迷路が山ほどあって、誰でもすぐゴールにたどり着ける。ある日、この職人は新しい迷路をゼロから描くのをやめました。代わりに、今ある迷路をちょっとずつ意地悪にしていったんです。近道に見せかけて元に戻る分岐を足す。広い通路をわざと狭くする。出口そっくりの行き止まりを仕込む。見た目はほぼ同じなのに、解く人はずっと頭を使わないといけなくなる。
プログラムを書くAIは、すでにたくさんありました。膨大なコードを読み込んで、簡単な課題ならこなせる。でもそれは、ずっと簡単な迷路だけ解かせているようなもので、ある時点から上達が止まってしまう。足りなかったのは練習の「量」じゃなくて「難しさ」だったんです。そこに気づいた小さなチームが、コードの練習問題そのものを段階的に難しくしていく方法を試みました。
やり方は、あの迷路職人の手口とそっくりです。まず条件を増やす。迷路で言えば「左に曲がれるのは三回まで」みたいな縛りですね。次に、よくある要件をなじみの薄いものに差し替える。広い通路を狭い抜け道に変えるイメージです。判断ポイントも増やして、長い推論が必要になるようにする。一番巧妙なのが、わざと微妙な間違いを含んだ見本を添えること。出口に見せかけた行き止まりと同じで、うっかり信じると迷います。
チームは約二万問の基本的なコード課題からスタートして、この進化を何ラウンドか繰り返しました。毎回、簡単なものから難しいものまで全部まとめてAIに学ばせ、まったく別の問題で実力を確かめる。三ラウンド目、問題数が合計で約七万八千になったあたりが一番よかった。四ラウンド目に進むと、かえって成績が下がったんです。迷路を複雑にしすぎると、道を覚える練習じゃなくてただの苦行になるのと同じですね。
面白いのが、量と難しさの直接比較です。二万問の簡単な課題で鍛えたAIと、ほぼ同じ数の「進化させた難しい課題」で鍛えたAIを並べてテストしました。練習量はほぼ同じ。でも難しい課題で練習したAIのほうが、広く使われるコードのテストで十ポイント以上高いスコアを出した。量じゃなく質が効いた。難しい迷路で鍛えた人が、初めての迷路でも素早くゴールできるのと同じ理屈です。
「難しくしたら、たまたまテスト問題に似てしまっただけでは?」という疑問も当然出ます。チームは訓練用の問題とテスト問題の類似度を調べました。結果、ラウンドを重ねるほど類似度はむしろ少し下がっていた。つまりAIは答えを暗記したわけじゃなく、初めて見るコードに対しても本当に考える力がついていたんです。
こうして生まれたAIは、当時公開されていたコード生成システムの中で最高の成績を収めました。小さいバージョンでも大手企業の有名なシステムを上回り、大きいバージョンはChatGPTと同等かそれ以上の結果を出した場面もあります。変わったのは、AIそのものでも教室でもなく、宿題の質でした。簡単な迷路を千個解くより、よく練られた難しい迷路を数十個解くほうが、ずっと力がつく。