TL;DR

ChatGPT、Claude、Qwen、DeepSeekなど異なるLLMが生成したコードの出所を特定する手法「DCAN」を提案。コードに含まれる「タスクに依存する意味情報」と「モデル固有のスタイル情報」を分離し、後者の「コード指紋」を使って高精度な判別を実現。4言語・9万サンプルのベンチマークで有効性を確認。

解説

AMI SURPRISED

ねえ智也、このブログ見た?LLMが生成したコードの出所を判別する手法って書いてあるよ。

TOMOYA NEUTRAL

ああ、DCANの論文だな。コードの出所を特定する研究は重要になってきている。

AMI HAPPY

どうしてそんなに重要なの?ChatGPTが書いたか、Claudeが書いたかって、そんなに気にする?

TOMOYA NEUTRAL

うん。例えば、教育現場で生徒がLLMにコードを書かせて提出した場合、それを検知する必要がある。あと、知的財産やセキュリティの観点でも。

AMI SURPRISED

なるほど!で、どうやって見分けるの?

TOMOYA NEUTRAL

DCANのキモは、コードから「タスクの意味情報」と「モデルのスタイル情報」を分離することだ。

AMI SURPRISED

スタイル情報?

TOMOYA NEUTRAL

そう。変数名の付け方、インデントの癖、コメントの書き方とか、モデルごとに微妙な特徴がある。それを「コード指紋」として抽出する。

AMI HAPPY

へえ!人間の筆跡鑑定みたいだね。で、その指紋だけを残して、タスクの内容は消しちゃうの?

TOMOYA NEUTRAL

そう。スタイル情報だけを残すように変換するネットワークを学習させる。そうすれば、どんなタスクのコードでも、モデル固有の特徴だけを比べられる。

AMI SURPRISED

すごい!実際にうまくいくの?

TOMOYA NEUTRAL

評価は4つのプログラミング言語で、9万サンプル以上のベンチマークを使って行われた。既存の手法より高い精度で判別できたみたいだ。

AMI HAPPY

9万サンプル!すごいボリューム。これってすごく役立ちそうだね。

TOMOYA NEUTRAL

ただ、限界もある。未知のモデルや、複数のモデルが混ざったコードへの対応は今後の課題だって書いてあった。

AMI HAPPY

ふむふむ…。じゃあ、私がこれからコード書くときは、わざと変なスタイルにすればバレないってこと?

TOMOYA NEUTRAL

…そういう発想は、研究の本質から少し外れてるな。