TL;DRこの論文では、現実世…
TL;DR
ChatGPT、Claude、Qwen、DeepSeekなど異なるLLMが生成したコードの出所を特定する手法「DCAN」を提案。コードに含まれる「タスクに依存する意味情報」と「モデル固有のスタイル情報」を分離し、後者の「コード指紋」を使って高精度な判別を実現。4言語・9万サンプルのベンチマークで有効性を確認。
解説
ねえ智也、このブログ見た?LLMが生成したコードの出所を判別する手法って書いてあるよ。
ああ、DCANの論文だな。コードの出所を特定する研究は重要になってきている。
どうしてそんなに重要なの?ChatGPTが書いたか、Claudeが書いたかって、そんなに気にする?
うん。例えば、教育現場で生徒がLLMにコードを書かせて提出した場合、それを検知する必要がある。あと、知的財産やセキュリティの観点でも。
なるほど!で、どうやって見分けるの?
DCANのキモは、コードから「タスクの意味情報」と「モデルのスタイル情報」を分離することだ。
スタイル情報?
そう。変数名の付け方、インデントの癖、コメントの書き方とか、モデルごとに微妙な特徴がある。それを「コード指紋」として抽出する。
へえ!人間の筆跡鑑定みたいだね。で、その指紋だけを残して、タスクの内容は消しちゃうの?
そう。スタイル情報だけを残すように変換するネットワークを学習させる。そうすれば、どんなタスクのコードでも、モデル固有の特徴だけを比べられる。
すごい!実際にうまくいくの?
評価は4つのプログラミング言語で、9万サンプル以上のベンチマークを使って行われた。既存の手法より高い精度で判別できたみたいだ。
9万サンプル!すごいボリューム。これってすごく役立ちそうだね。
ただ、限界もある。未知のモデルや、複数のモデルが混ざったコードへの対応は今後の課題だって書いてあった。
ふむふむ…。じゃあ、私がこれからコード書くときは、わざと変なスタイルにすればバレないってこと?
…そういう発想は、研究の本質から少し外れてるな。