次いで登場したインストラクションモデルは、学習に当たって数万〜数十万件規模の「問題集」を解かせる必要があった。ベースモデルのように人手で集めるのは難しくなり、問題作り自体をLLMに任せる手法が主流になった。
この段階ではコード特有の性質が活きた。自然言語と違い、正しさをテストで機械的に検証できるため、量産が容易だったのだ。
例えば「SelfCodeAlign」と呼ばれる手法では、まずソースコードの断片から「関数定義」「引数」といった概念をLLMに抽出させる。その概念を基に新しい問題を作らせ、回答とテストケースの両方を生成させた後、実行環境で動かし、テストを通過したものだけを問題集に採用する。
結果、約24万6000件のコード片から、検証済みの問題が約5万件できた。風戸さんは「ソースコードの切れっ端を入力するだけ」で問題集が作れると説明する。
そして推論モデルは、単にコードを書くだけでなく、仕様やテスト結果を読み解きながらバグを直す作業もこなせるようになった。
これに伴い、評価の主戦場もタスクの解決能力に移っている。例えばベンチマーク「SWE-Bench」では、GitHub上で実際に行われたバグ修正の課題(Issue)を使ってLLMに修正パッチを作らせ、人間が用意したテストで検証する。約2000問あるが、問題文やテストの品質にばらつきがあるため、OpenAIらが全問を人手で精査し、500問に絞った「SWE-Bench Verified」が広く使われているという。
一方で、学習データを作る側には逆転の発想が生まれた。論文「SWE-Synth」では、リポジトリ上のコードの一部を隠してLLMに書き直させるアプローチが提案された。この方法を使えば、元のコードとは違う、いかにも人間がやりそうなミスを含んだコードが出てくる。視点を変えれば、このバグ入りコードとテストのログが問題で、変更を元に戻すパッチが正解──という学習データを量産できるわけだ。
他にも、バグを埋め込む役と直す役をLLMに演じさせ、自己対戦の強化学習で双方の能力を鍛える研究も登場している。囲碁や将棋のAIのように、人間が思いつかない能力に達する可能性が論じられているという。
講演の最後、風戸さんはクラウド型のAIに次いで注目される、手元のマシンで動くAIの可能性にも触れた。「tsuzumiも小型モデルを持っているので、エージェンティックAIでも使えるように開発して提供していきたい」という。
NTT、大規模言語モデル「tsuzumi」開発 24年3月に商用サービス提供へ
米Microsoftら、“コーディング専用”大規模言語モデル「WizardCoder」開発 文章から高品質なコード出力
Google、オープンな生成AIモデル「Gemma」公開 商用利用OK、Geminiと同じ技術の軽量LLM
GPT-4以上? 自分で何度も“推敲”し完成度を上げる言語生成AI「Self-Refine」
東大発AIベンチャー、最大級の日本語LLM公開 metaの「Llama 2」を日本語化Copyright © ITmedia, Inc. All Rights Reserved.
Special
PR