DetectGPTとは:確率曲率でAIの文章を検出する仕組み
DetectGPTは、小さな書き換えで文章の尤度が下がるかどうかを見てAIが書いた文章を見抜きます。手法の仕組み、成果、そして言い換えで破綻する場面を解説します。
DetectGPTは、AI生成テキストを検出するゼロショット手法で、1つのシンプルな問いを立てます。文章に小さな書き換えを加えたとき、言語モデルはその文章をより好まなくなるか、という問いです。機械が書いた文章はモデルの確率の局所的なピークに位置しやすいため、ほとんどどんな変更でもスコアが下がります。人間の文章には、通常そのような鋭いピークは見られません。
このアイデアは、ICML 2023で発表されたEric Mitchellらによる2023年の論文に由来します。今日多くのツールが頼っている高速な手法を含め、その後の検出研究の多くを方向づけました。この解説では、手法を平易な言葉で説明し、著者らが報告した結果と、自分の文章が検出ツールにかけられる場合に何を意味するのかを見ていきます。
DetectGPTが解決しようとした問題
DetectGPT以前の検出器は、大きく2つの系統に分かれていました。学習済み分類器は、人間と機械の文章のラベル付き例から学習するため、学習データに似たデータではうまく機能しますが、新しいものにはあまり強くありません。平均対数確率やトークン順位といったゼロショットの統計量は学習が不要ですが、大ざっぱです。話題がありふれている、あるいは文体がフォーマルだというだけで、文章の確率が高くなることがあるからです。
Mitchellらは、その中間を目指しました。彼らの検出器が使うのは、文章を書いたと疑われるモデルの対数確率と、小さな編集を加えるための汎用ツールだけです。ラベル付きデータセットも、分類器の学習も、生成時に埋め込む透かしも不要です。まず全体像を知りたい方は、主な検出器の系統をまとめたAI検出ツールの仕組みをご覧ください。
DetectGPTの仕組み:確率曲率をわかりやすく
言語モデルは、あらゆる文章に確率を割り当てます。ありうるすべての文章を、山と谷のある地形として思い浮かべてください。高さは、モデルがその文章をどれだけありそうだと考えるかを表します。モデルが文章を生成するとき、各ステップで確率の高い単語を選びがちなので、その出力は山の頂上付近に着地します。
次に、ある文章に意味を保ったまま小さな編集をいくつか加えます。文章が山頂にあれば、どの方向に一歩動いても下り坂になり、編集したバージョンのスコアは下がります。人間の文章によくあるように、文章がなだらかな斜面や平地にあれば、上がる編集もあれば下がる編集もあり、平均的な変化はほぼゼロになります。論文はこの形を負の曲率と呼んでいます。山の頂上は、どの方向にも下向きに曲がっているからです。
- モデルが生成した文章
- 人間が書いた文章
実際には、手法は4つのステップで進みます。
- 元の文章を採点する文章を書いたと疑われるモデルのもとで、文章の対数確率を計算します。
- 摂動を加える短い語のまとまりをマスクし、別のモデルであるT5に、もっともらしい代替語で埋めさせます。
- コピーを採点する同じ容疑モデルのもとで、摂動を加えた各コピーの対数確率を計算します。
- 比較する元の文章のスコアがコピーの平均より明らかに高ければ、機械生成の可能性が高いとしてフラグを付けます。
摂動モデルは重要です。著者らはマスク補完モデルのT5を使って短いまとまりを置き換え、コピーが流暢で意味も近いままになるようにしました。主な設定では、2語のまとまりで単語の約15%をマスクし、1つの文章につき100個の摂動サンプルを作成しました。最終スコアは、元の文章と摂動版の平均との差を、摂動版のスコアのばらつきで正規化したものです。

DetectGPT論文が報告した結果
最も注目された結果は、偽ニュースの検出です。200億パラメータのGPT-NeoXモデルが生成したニュース記事で、DetectGPTはAUROC 0.95を達成しました。最も強力なゼロショットのベースラインは0.81でした。AUROCは、あらゆる閾値にわたってスコアが2つのグループをどれだけうまく分けるかを測る指標で、0.5はコイン投げ、1.0は完全な分離を意味します。
著者らは、15億パラメータ(GPT-2)から、GPT-3のような1,750億パラメータのモデルまでを、ニュース(XSum)、Wikipediaの段落(SQuADのコンテキスト)、Redditの創作プロンプトにわたって検証しました。人間らしい推敲を模した簡単なテストも行い、機械の文章の一部をT5による書き換えに置き換える割合を増やしていきました。文章のほぼ4分の1が置き換えられても、検出性能はAUROC 0.8を上回ったままでした。
文章をチェックされる人にとってDetectGPTが重要な理由
商用の検出ツールの多くは内部の仕組みを公開しておらず、DetectGPT型のテストではなく学習済み分類器であるものも多くあります。それでもこの論文は、多くの検出が依拠しているシグナルを言い当てています。モデルにとって予測しやすすぎる文章、というシグナルです。これは研究者にとっていくつかの実際的な意味を持ちます。
- フォーマルな文章はもともと予測しやすい。方法セクション、定番の留保表現、分野の決まり文句は、何千もの論文で繰り返されています。モデルはそれらをありそうだと判断するため、丁寧な人間の文章が機械側に近づいてしまいます。この点はフォーマルな文章がAIの文章に見える理由で取り上げています。
- スコアは書き手ではなく文章についてのもの。DetectGPTは、1つのモデルのもとでの文章の性質を測ります。あなたの下書き、メモ、意図は見えません。
- 短い文章ほど難しい。トークンが少ないほど曲率の推定はノイズが多くなります。アブストラクト1本では、1章分の文章よりもテストに使える材料が少なくなります。
検出結果は、文章の採点に使う特定のモデルにも左右されます。あるモデルにとってピークにある文章が、別のモデルにとってもピークにあるとは限りません。これが、同じ段落について異なるツールの判定が食い違う理由の一つです。
DetectGPTの限界
論文は自らの制約について率直に述べており、後続研究でさらに多くの限界が明らかになりました。
適切なモデルと大量の計算が必要
DetectGPTは、文章を書いたモデルの対数確率を問い合わせられるときに最もよく機能します。クローズドな商用モデルではそのアクセスが限られており、別の採点モデルを使うとシグナルが弱まります。もう1つの問題はコストです。1つの文章ごとに100回の追加のフォワードパスが必要になります。後続のFast-DetectGPT論文では、同じA100 GPUでのベンチマークにおいて、DetectGPTが79,113秒、Fast-DetectGPTが233秒で、およそ340倍の差がありました。
言い換えで曲率のシグナルが壊れる
この手法は、文章がモデルが置いた場所にまだあることを前提としています。言い換えは文章を動かします。Krishnaらは、DIPPER言い換えモデルに関するNeurIPS 2023の論文でこれを直接検証しました。機械の文章を書き換えると、偽陽性率1%に固定した場合のDetectGPTの検出率が70.3%から4.6%に下がりました。Sadasivanらも後に、言い換えによってこの種のゼロショット検出器のAUROCが96.5%から25.2%に下がったと報告しています。プロンプトの小技が繰り返し話題になるのも、同じ弱点があるからです。単純なプロンプトではChatGPTの文章がバレないようにならない理由をご覧ください。
- 元の機械の文章70.3%
- DIPPERによる言い換え後4.6%
摂動モデルが結果を左右する
著者らは、このアプローチには妥当な摂動関数が必要だと述べています。T5は英語では機能しますが、既製のマスク補完モデルが現実的な書き換えを生成できない領域では、性能が下がる可能性があります。専門的な科学用語はその候補として考えられます。
DetectGPTのその後
DetectGPTは、中心となる直感を保ちながらコストを削減するゼロショット検出器の系譜を生み出しました。Fast-DetectGPTは文章全体の書き換えをトークン単位のサンプリングに置き換え、Binocularsは関連する2つのモデルを比較して、それ自体が意外な話題の影響を補正します。どちらもFast-DetectGPTとBinocularsの解説で取り上げています。一方、AI生成テキストは確実に検出できるかでまとめた言い換え攻撃の研究は、これらのシグナルが、文章がモデルの生成しそうなものに近いままであることにどれほど依存しているかを示しています。
Academic Humanizerの位置づけ
予測しやすさの考え方に基づく検出ツールは、アイデアもデータもすべて著者自身のものである下書きでも、滑らかすぎたり汎用的すぎたりする個々の文に反応しがちです。Academic Humanizerはそのレベルで機能します。下書きの中から検出ツールがフラグを付ける文を探し、主張、数値、引用、用語を保ちながらそれらの文だけを書き換え、残りは書かれたとおりに残します。組み込みのAI検出レポートは、フラグが付いた各文を書き換え後の文と並べて示すので、使う前にすべての変更を確認できます。その確認の一環として、所属機関やジャーナルのAIポリシーも確かめておくとよいでしょう。
あなたのアイデアを、AIの痕跡なしで
下書きを貼り付けると、AI検出ツールが指摘する文を表示し、その文だけをHumanizerで書き直します。
Humanizerを無料で試す


