TL;DRChatGPT、Cl…
TL;DR
LLMに脆弱性検出用のチートシート(構造的先行知識)を注入すると、合成データでは性能が飽和するが、実世界のCVEデータでは逆に性能が低下する。この現象は数学領域でも確認されており、LLMが問題を構造パターンにルーティングするという「ルーター仮説」がコードセキュリティ領域でも成り立つことを示す。プロンプトエンジニアリングの限界と、分布を考慮した学習の必要性を論じる。
解説
ねえ智也くん、この論文のタイトル、なんか難しそうだけど、要はLLMに脆弱性検出のチートシートを入れるとどうなるかって話?
そう。構造的先行知識って呼んでるけど、要は「こういうパターンが脆弱性だよ」っていうルールをプロンプトで与えること。
それって効果ありそうじゃない?だって人間だってチェックリストあった方が見つけやすいし。
ところが、合成データだと確かに性能が上がるんだけど、実世界のCVEデータだと逆に下がるんだよ。
えっ、なんで?チートシートが邪魔になるってこと?
そう。彼らはこれを「ルーター仮説」って呼んでて、LLMが問題を構造パターンにルーティングしちゃうせいだと考えてる。つまり、与えたパターンに合わない実世界の脆弱性を見落とすようになる。
あー、つまり「これが脆弱性のパターンだよ」って教えると、それ以外のパターンを見逃すようになるってこと?人間でもありそうだね。
そう。しかも面白いのは、数学の領域でも同じ現象が確認されてるんだ。問題を構造パターンにルーティングする傾向は、コードセキュリティに限った話じゃない。
じゃあ、プロンプトエンジニアリングって万能じゃないんだね。どうすればいいの?
論文では、分布を考慮した学習の必要性を論じてる。つまり、実世界のデータ分布に合わせてモデルを学習させるべきで、単にプロンプトで知識を注入するだけじゃ限界があるってこと。
なるほどね…でもさ、この研究の限界って何かあるの?
実験で使ったモデルやデータセットが限られてるから、一般化にはもっと検証が必要。あと、ルーター仮説自体もまだ仮説の段階で、内部メカニズムの詳細はわかってない。
ふーん…でも、チートシートを渡すと逆効果になるって、なんだか「勉強しすぎると頭が固くなる」みたいで笑えるね。
…その例えはちょっと違う気がするけど、まあ面白い見方ではあるね。