AI検出におけるトークン確率と対数尤度
Perplexity が注目されがちだが、その背後にある計算はトークン確率である。すなわち、モデルの次の語に対する分布が実際に何を含むのか、なぜ検出の計算は生の確率ではなく対数空間で行われるのか、そして各トークンのスコアの列がどのように1つの数値になるのかである。
検出器にそのスコアをどのように算出したのかを尋ねると、そのユーザーインターフェースの多くは同じ応答を返す。いくつかの語が他より濃く陰影づけられた段落である。その陰影は推測ではない。検出器が perplexity, burstiness, あるいは最終的な百分率に触れるより前に計算された、本文中の各トークンに付随する数値に由来する。
それはトークン確率であり、あらゆるトークン確率 ai detection は、根本からそれに基づいている。検出器が報告するあらゆる指標の数値, このサイトの別の箇所で扱う二つを含む, は、これらの数値の系列に対して行われる単なる算術である。多くの説明がそこで止まる層のさらに下には、トークンが実際には何であるのか、モデルのそのトークンに対する分布が何を意味するのか、そしてなぜ算術が生の確率ではなく対数空間で行われるのかを考える必要がある。多くの説明はそこで止まる。
そのどれもが不透明である必要はない。トークン、確率分布、対数は、専有的な秘密ではなく通常の道具であり、同じ三つの考え方が、AI detectors が実際にどのように機能するかを、生のテキストから報告書上の単一の数値まで説明する。
トークン確率 AI Detection, 分布からスコアへ
トークン確率 ai detection は三段階で機能する。言語モデルは、それ以前に何があったかに基づいて、次に来る可能性のあるすべてのトークンに確率を割り当てる。これらのトークンごとの確率は対数に変換され、本文全体にわたって合計される。これにより、生の乗算がほぼ直ちに直面する数値上の問題を回避できる。その結果の合計を平均し、再尺度化したものが、最終的に perplexity の値として現れるか、あるいは分類器の判断に入力される。各段階は、特定可能で検証可能な算術の一部であり、ブラックボックスではない。
トークンとは実際には何か
トークンは単語ではない。現代の言語モデルは、byte-pair encoding のようなアルゴリズムを用いてテキストをサブワード単位に分割する。そのため、'the' のような一般的な語は通常 1 つのトークンであり、'perplexity' のようなあまり一般的でない語は 2 つまたは 3 つの部分に分割され、見慣れない名前は個々の文字まで分解されることがある。通常の英語の一節は、語数よりも多くのトークンに確実にトークン化されるので、ツールが返す語数をそのまま信頼する前に知っておく価値がある。
モデルは、読者のように単語を見ることはない。モデルが見るのは整数の列であり、それぞれはモデルが学習時に用いた固定語彙へのインデックスである。ここから先の token probability ai detection が行うことはすべて、この整数列に対して作用し、元の文字列に対して作用するのではない。これが、検出器の内部動作が、人が実際に文を読む仕方と切り離されて感じられる一因である。
次のトークンに対するモデルの分布
系列の各位置において、自己回帰型言語モデルは 1 つの予測を出力するのではない。語彙全体にわたる完全な確率分布を出力し、それは数万個の数値からなり、その合計は 1 になる。これにより、直前までのすべてを条件として、起こりうる次のトークンを最もありそうなものから最もありそうでないものまで順位づけする。モデルに 'the results of the' という句を与えると、'study,' 'experiment,' 'analysis,' のようなもっともらしい名詞のいくつかに確率質量の大部分を配分し、'marmalade.' のようなものには無視できるほど小さな割合しか割り当てない。
実際の文書で次に現れるトークンは、その順位のどこかに位置し、割り当てられた確率が、他のすべての基礎となる材料である。自分自身のテキストを生成するモデルは、この分布を直接利用し、上位に近いものから繰り返し選ぶことができる。他人が書いた完成済みのテキストを読む検出器は、事後的に、実際に選ばれた選択に対してモデルがどれだけの確率を割り当てたはずかを問うことしかできない。
文全体の確率は、それ以前のすべてを与えたときの各トークンの確率の積である。これを、結合確率の標準的な規則を用いて文書全体にわたって各トークンごとの問いとして連鎖させると、最終結果は、その一節全体がどれほど予想されていたかを表す単一の数になる。この積のところで計算は破綻し始めるため、次の節が存在するのである。
自分の論文を人間らしくする
重要な語句や引用には手を加えずに、AI支援テキストを変換して自然な人間の文章のようにします。
なぜ対数尤度が生の確率に取って代わるのか
確率を掛け合わせることは数学的には正しいが、実際には数十トークンを超えると役に立たない。個々の確率はすべて1未満の分数であるため、積を順に更新していくと、別のトークンを掛けるたびに値は小さくなり、その減少は急速である。数百トークンも進むと、生の積はコンピュータが表現できる最小値をはるかに下回り、ちょうど0に丸め込まれることがある。この失敗モードをアンダーフローという。
一度そうなると、その数値はまったく情報を持たない。単にありそうにない文書も、極端に、混沌としたほどありそうにない文書も、どちらも同じ0に崩れ落ち、その後で区別する方法はない。対数はこれを解決する。なぜなら、積の対数は対数の和に等しいからであり、これは初等代数学の恒等式である。普通の負の数を並べて足し合わせても、小さな分数を並べて掛け合わせる場合のようなアンダーフローは起こらず、そのうえ計算も安価である。
| 一節の長さ, 例示 | 生の確率, 逐次積 | 対数確率の和 |
|---|---|---|
| 12トークン, 各0.1という例示値 | 1 x 10 to the power of -12, まだ表現可能 | およそ -27.6 |
| 350トークン, 各0.1という例示値 | 1 x 10 to the power of -350, ちょうど0にアンダーフローする | およそ -805.9 |
これは単純化した図示である。実際のトークンごとの確率は、0.1で一定にとどまるのではなく、はるかに大きく変動するが、問題の方向性は正確である。生の積がゼロにアンダーフローすると、検出器が実際に必要とする比較、すなわち、この文書があの文書よりも予想されていたか、それとも予想されていなかったか、を判定することは不可能になる。対数確率の和は、そのような失敗をしない。どれほど長い文章であっても、正確で、通常の、比較可能な数値のままであり、検出可能性が生の確率空間ではなく対数空間で測定される実際の理由はそこにある。
トークンごとのスコアから検出スコアへ
文章全体にわたって対数確率を合計すると、参照モデルの下での文書の総対数尤度が得られる。これをトークン数で割ると長さの影響が除かれ、トークン当たりの平均対数尤度が残る。これは、五百語のエッセイと五千語の論文章の間でようやく比較可能な数値である。その平均に負号を付けて指数化すると、得られるのが perplexity スコアであり、このクラスターは perplexity が実際に何を測定するかについて別の解説で詳しく扱っている。
同じ文ごとの数値を、1つの平均に平坦化するのではなく、文書全体での変動として追跡したものが、burstiness が何から構成されるかであり、これは perplexity と関連するが別個の信号である。どちらも、上で述べた同一のトークンごとの数値から始まる。ただし、その上で行う計算が異なるだけである。
単純な平均だけがこの原材料の使い方ではなく、研究はすでにそれを大きく超えている。DetectGPTは、Mitchell, Lee, Khazatsky, Manning and Finn によって ICML 2023 で発表され、同じ確率関数の別の性質から出発する。すなわち、言語モデルからサンプリングされたテキストは、小さな言い換えによって対数確率が上がるのではなく下がる領域に位置する傾向があり、この論文はそのパターンを負の曲率と呼んでいる。
分類器を訓練したり、ウォーターマークを用いたりするのではなく、この手法は一節に摂動を加え、言い換え方に小さな変化を生じさせ、その後、同じモデルで各変化を再スコアリングする。論文はこれを最良の zero-shot ベースラインと比較し、20-billion-parameter モデルで生成されたテキストでは、この手法が 0.95 AUROC を達成し、最良の zero-shot ベースラインが 0.81 AUROC を達成することを示している。
検出ではなくウォーターマークに用いられる、同じ分布
ここまでのすべては、確率分布を事後的に読み取るものとして扱ってきた。しかし、それは生成の瞬間にも用いることができ、そうすると問題設定は完全に反転する。Kirchenbauer, Geiping, Wen, Katz, Miers and Goldstein による 2023 年の手法は、各単語が生成される前に、直前までの内容のハッシュに基づいて、許容されるトークンのランダム化された候補リストを選び、サンプリングをその候補リストへと穏やかに誘導する。このバイアスは読者には見えず、後に短いテキスト区間に対する統計的検定によって回収できるが、元のモデルへのアクセスは必要ない。
Google DeepMind の SynthID は、この考え方の一部を実運用に置いている。生成時に次トークンの確率スコアを調整し、現在は Gemini アプリとウェブ体験で利用可能である。OpenAI は同等のシステムを構築したが、まだ公開していない。報道によれば、その判断の一因は、ChatGPT ユーザーの約 30 percent が、ウォーターマークがあると製品の利用頻度が下がると答えた調査にあり、加えて、watermark が言い換えにどの程度耐えられるかについての懸念もあった。
検出器の報告は、影付きの単語か単一の百分率を示してそこで止まり、それがどの分布から来たのかは一切示さない。TextPulse の free perplexity checker は、同じトークンごとのスコアリングを簡略化した版を自分の下書きに対して実行するものであり、判定を伝聞で読むよりも、一節がどこに位置するかをより直接的に見る方法である。
隣接する2つのページがこれを扱っています。検出器が依然としてburstinessに依拠しているかどうかは2023年以降に変化しており、GPTZeroがこれら同じ確率をどのようにスコアに変換するかは別ページで説明されています。
これはTextPulseの無料ツール群のほかの項目と並んで配置されているため、同じ下書きについて、語レベルの予測可能性だけでなく、リズムと構造も確認できます。しかも、そのために十数個の別々のタブを開く必要はありません。
よくある質問
トークン確率によるAI検出は、他のあらゆる検出指標の下層にある層である。言語モデルは、これまでに続いたすべての情報に基づいて、系列内の各トークンに1つずつ確率を割り当てる。Perplexity、分類器のスコア、報告書上の割合はすべて、その後にその数列に対して行われる計算であり、別個の独立した測定ではない。
PhD in natural language processing, with years spent building NLP applications end to end. Moe works on text analysis: lexical and syntactic structure, and what separates machine-generated prose from human prose statistically. He has been experimenting with computational linguistics since the early days of NLTK, spaCy and WordNet, and still writes most of his tooling in Python.