AI検出におけるトークン確率と対数尤度
Perplexityが注目されますが、その背後にある計算はトークン確率です。つまり、モデルが次の語に対して持つ分布に何が含まれているのか、なぜ検出の計算が生の確率ではなく対数空間で行われるのか、そしてトークンごとのスコアの列がどのように1つの数値になるのか、ということです。
検出器にそのスコアをどのように算出したのかを尋ねると、ほとんどのユーザーインターフェースは同じ応答を返す。つまり、いくつかの語が他よりも濃く陰影づけられた段落である。その陰影は推測ではない。それは、検出器が perplexity, burstiness, あるいは最終的な百分率に触れるより前に計算された、本文中の各トークンに付随する数値に由来する。
それはトークン確率であり、あらゆるトークン確率 ai detection は、最初から最後までそれに基づいている。検出器が報告するあらゆる指標の数値, このサイトの別の箇所で扱う2つを含む, は、これらの数値の系列に対して行われる単なる算術である。多くの説明がそこで止まる層のさらに下には、トークンとは実際に何か、モデルのそのトークンに対する分布が何を意味するのか、そしてなぜ算術が生の確率ではなく対数空間で行われるのかを考える必要がある。ほとんどの説明はそこで止まる。
そのどれも不透明である必要はない。トークン、確率分布、対数は、専有的な秘密ではなく通常の道具であり、同じ3つの考え方が、AI検出器が実際にどのように機能するかを、生のテキストからレポート上の単一の数値まで説明する。
トークン確率 AI 検出: 分布からスコアへ
トークン確率 ai detection は3段階で機能する。言語モデルは、それ以前に何があったかに基づいて、次に来る可能性のあるあらゆるトークンに確率を割り当てる。これらのトークンごとの確率は対数に変換され、本文全体にわたって合計される。これにより、生の乗算がほぼ直ちに直面する数値上の問題を回避できる。その結果得られる合計を平均し、再尺度化したものが、最終的に 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 とは関連するが別個のシグナルである。どちらも、上で述べた同一のトークンごとの数値から始まる。ただし、その上で行う計算が異なるだけである。
単純平均は、この生の材料を用いる唯一の方法ではなく、研究はすでにそれを大きく超えている。ICML 2023でMitchell, Lee, Khazatsky, Manning and Finnによって発表されたDetectGPTは、同じ確率関数の別の性質から出発する。言語モデルからサンプリングされたテキストは、小さな言い換えによって対数確率が上昇するのではなく低下する領域に位置する傾向があり、論文はこのパターンを負の曲率と呼んでいる。
分類器を訓練したり、ウォーターマークを用いたりする代わりに、この手法は一節に摂動を加え、言い換え方に小さな変化を生じさせ、その後、同じモデルで各変化を再スコアリングする。論文はこれを最良の 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 が、ウォーターマークがあると製品の利用が減ると答えた調査にあり、加えて、ウォーターマークが言い換えにどの程度耐えられるかについての懸念もあった。
検出器の報告は、影付きの単語か単一の percentage を示してそこで止まり、それらがどの分布から来たのかを一度も示さない。TextPulse の free perplexity checker は、同じトークンごとのスコアリングの簡略版を自分の下書きに対して実行する。これは、判定を伝聞で読むよりも、一節がどこに位置するかをより直接的に見る方法である。
隣接する2つのページがこれを取り上げています。検出器が今もburstinessに依拠しているかどうかは2023年以降に変化しており、GPTZeroがこれら同じ確率をどのようにスコアに変換するかは別ページで説明されています。
これはTextPulseのfree toolsのほかの機能と並んで配置されており、そのため、同じ下書きを、語レベルの予測可能性だけでなく、リズムや構造についても、十数個の別々のタブを開かずに確認できます。
よくある質問
token probability ai detectionは、あらゆる他の検出指標の下にある層です。言語モデルは、これまでに続いたすべての内容に基づいて、系列内の各トークンに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.