3行でいうと
透かしは「LLM が次の単語を選ぶときの、どちらでもよい選択の揺らぎ」に埋め込まれる。1語ずつは何の変哲もないが、数百トークン分の偏りを集計すると、人間の文章ではあり得ない統計的な癖(z値)が浮かぶ。トークン選択に埋め込む方式は言い換え1回で確実に消えるが、文の意味ベクトルに埋め込む方式は劣化しつつも生き残りうる——ただしその生死は埋め込みモデルの言い換え安定性に懸かっている。
結果:透かしあり・なしを並べて読む
例1|意味空間型(SemStamp流)— 劣化はするが壊滅しない透かし
同じプロンプト(「人はなぜ雨の中の散歩を楽しむのか」のエッセイ)から、透かしなしと透かし入りを生成した。生成モデルは Sarashina2.2-3B-instruct、文埋め込みは ruri-v3-30m、有効領域は論文と同じく前の文の署名から導出(チェーン構造)。内容が違うのは透かしのせいではない——LLM は同じプロンプトでも実行のたびに別の文章を書く。透かしの痕跡は文面のどこにもなく、検出器が集計する統計量にだけ現れる。
人はなぜ雨の中の散歩を楽しむのでしょうか。それは早割で得ることができる独特の感覚や体験が関係しているのかもしれません。雨粒が肌にぶつかる感触、道路に反射する雨水の光が作る幻想的な模様、そして雨が空気を湿らせることで一層際立つ緑の香り。これらは雨の中だからこそ体験できる特別な要素です。さらに、雨の日には人混みが少なく、静かな時間が流れるため、日常の喧騒から離れてゆっくりと自分と向き合うことができます。雨音は自然の音楽とも言え、そのリズムに耳を傾けながら歩くのは、心が落ち着く時間となります。また、雨の日は色彩が豊かに感じられる瞬間でもあります。濡れた路面や木々の葉が水分を含み、日光が散乱することで、普段の景色がより鮮やかに見えるのです。このような視覚的な喜びも、雨の中の散歩を魅力的にしている一因でしょう。最後に、雨は新たな始まりの象徴でもあります。
人はなぜ雨の中の散歩を楽しむのでしょうか。その理由をいくつか探ってみましょう。まず、雨の日の散歩は独特の雰囲気があります。雨音が静かに降る中を歩くと、日常の喧騒から少し離れて、心が落ち着くのを感じるのです。これは、雨が自然のヒーリング効果を持っているからかもしれません。雨の音は瞑想のように心に安らぎを与え、忙しい日常を忘れることができるのです。次に、雨に濡れた地面や葉、建物が見せる美しさも理由の一つです。雨が上がった後の道には水滴がつき、それが光の反射でキラキラと輝きます。この光景は、普段の町並みに新たな生命感をもたらし、普段とは異なる視点で周囲を見ることができます。また、雨に濡れた植物の香りも楽しめますし、その香りが心に安らぎを与えてくれます。
この透かし入りエッセイを、透かし機能を切った素のモデルに「意味を保ったまま、できるだけ違う言い回しで」書き直させた。攻撃者が透かしなしの LLM に通して透かしを洗い流そうとする状況の再現で、書き直し側が新たな透かしを足すことはない。トークン列は大きく入れ替わったが——
人が雨の中の散歩を楽しむ理由の一つに、雨の日の独特な雰囲気があります。雨音が静かに降る中を歩くことで、日常の騒音から離れ、心が落ち着くのを感じるのです。これは雨が自然のヒーリング効果をもたらしているからかもしれません。雨音は瞑想のように心に安らぎを与え、忙しい日常から一時的に解放されることができます。
さらに、雨に濡れた地面や葉、建物の美しさも理由の一つです。雨が止んだ後の道は水滴が付着し、それが光の反射でキラキラと輝きます。この光景は、普段の町並みに新たな生命感を与え、普段とは異なる視点で周囲を見る機会を提供してくれます。また、雨に濡れた植物からは特有の香りが漂い、その香りが心に安らぎを与えてくれます。
例2|トークン空間型(KGW法)— 自然な文章に埋まるが、言い換えで確実に消える
同じ Sarashina で、KGW法(グリーンリストの語のロジットに加点)の透かしを入れたエッセイ。読んだだけでは透かしの有無は分からないが、検出器は言い当てる。ところが同じパラフレーズ攻撃で、こちらは毎回確実に消滅した。
雨と散歩は、一見すると相反する体験の組み合わせのように見えるかもしれません。でも、人はなぜ雨の中の散歩を enjoyするのでしょうか。その理由はいくつか考えられます。
まず、雨の音や雰囲気が心に落ち着いてくれるからです。しっとりと降り注ぐ雨の音や、大地を濡らす質感は、日常生活での騒音や急ぎを忘れさせる効果があります。 Raindropsが作る静かなリズムは、忙しい日々の中で得られるちょっとした煩雑さからの解放感を促します。
次に、雨の中の散歩は新しい視点を提供してくれます。普通とは違った風景が雨の水滴に反射し、風景が輝きが増します。特に夜の雨は、街灯やその他の光が織りなす光のパターンがとても美しく、普段とは異なる世界への扉を開いてくれます。
また、雨の日は人が少なく、ゆっくりと歩くことができます。人混みを避けて自分のペースで探求する時間を過ごすことができるのです。これが普段の日常とは少し異なる、特別な体験をもたらします。
最後に、雨の中の散歩は自己発見の場ともなり得ます。静かに自分を省みる時間を持つことで、普段見逃しがちな感情や思考を整理することができます。雨に濡れることによる肌感覚も、新たなインスピレーションを引き出すきっかけとなります。
例3|透かしはどこにあるのか — 全トークンの塗り分け
「透かしあり・なしの文章を見比べても分からない」なら、透かしはどこにあるのか。KGW法の検出器と同じ計算で、各トークンを「鍵が優遇する側(グリーン)」か否かで塗り分けると、初めて目に見える。透かしなしのグリーン率は期待値どおり28.5%、透かし入りは43%——この偏りだけが透かしの実体である(Qwen2.5-1.5B-instruct、温度0、同一プロンプト)。
雨の中の散歩は、雨の音や風の音、葉の落ちる音、そして雨が地面に落ちる音など、雨の音楽を楽しむことができます。雨の音楽は、散歩を楽しむ人々の心を落ち着かせ、心地よいリラクゼーションを提供します。
また、雨の中の散歩は、雨の色や雨の風景を楽しむことができます。雨の色は、青や紫、赤など、様々な色を楽しむことができます。
1. 空気の澄んだ感覚:雨は空気を澄ますことから、雨の中の散歩は、空気の澄んだ状態が感じられる貴重な体験となることがあります。この澄んだ空気は、心身ともにリラックスさせ、ストレスを和らげてくれます。
2. 人間の心理的な反応:雨の中の散歩は、人々が自然の力を体験する機会となるため、心理的な反応にも影響を及ぼします。雨が降ったとき、人々は心地よく、穏やかになることができます。
3. 観光の目的:雨の中の散歩は
個々の緑の語は何の変哲もない。「雨」も「散歩」も、その位置の直前4トークンと鍵の組み合わせ次第で緑にも赤にもなる。差は1語ずつではなく、数百トークンの集計にだけ現れる。
例4|英語での定量実験(トークン空間型2方式)
Qwen2.5-0.5B-instruct・4プロンプト・各200トークンでの検出スコア平均。透かし入りだけが検出され、透かしなし・人間の文章(Austen『高慢と偏見』冒頭)・間違った鍵では検出されない。
| 検出対象 | KGW検出器 z | Gumbel検出器 z |
|---|---|---|
| 透かしなし(vanilla) | -0.76 | 0.73 |
| KGW透かし入り | 9.78 | -0.07 |
| Gumbel-Max透かし入り | -0.90 | 34.99 |
| 間違った鍵で検出 | -0.42 | 0.16 |
| 人間の文章(Austen) | -1.51 | 0.18 |
攻撃実験。ランダムなトークン置換では徐々に減衰し、透かしなしLLMによるパラフレーズ1回で両方式とも消滅した。
| 攻撃 | KGW z | Gumbel z |
|---|---|---|
| なし | 5.55 | 38.79 |
| トークン置換 10% | 2.45 | 19.61 |
| トークン置換 30% | -0.82 | 7.27 |
| トークン置換 50% | 1.31 | 0.40 |
| パラフレーズ(透かしなしLLM) | -1.45 | -0.66 |
品質面では、KGW は同一モデルで測った平均 NLL が 2.25 → 3.02 nats/token に悪化(分布の歪み)。Gumbel-Max は 2.77 で、distortion-free の構成どおり劣化しなかった。
仕組みの概要
LLM は次のトークンを確率分布からサンプリングしており、「ここは this でも that でも自然」という場面が文章中に何度も現れる。透かしは、このどちらでもよい選択を秘密鍵から導いたルールでほんの少し偏らせる。1回の選択では何も分からないが、数百トークン分の偏りを集計すると、統計的にあり得ない癖が浮かび上がる。検出にはモデルへのアクセスは不要で、秘密鍵とテキストだけでよい。
KGW法
直前トークンと鍵のハッシュで語彙を「グリーン(25%)/レッド」に二分し、グリーン側のロジットに +δ。検出はグリーン語比率の z 検定。シンプルだが分布が歪み、品質が劣化しうる。
初期実装 → git 履歴に保存Gumbel-Max法
サンプリングの乱数を鍵由来の疑似乱数 r に差し替え、argmax ri1/pi を選ぶ。出力分布は数学的に不変(品質劣化ゼロ)。検出は Σ −log(1−r) の偏り。SynthID-Text もこの系統。
初期実装 → git 履歴に保存SemStamp流(意味空間型)
文単位で生成し、文埋め込みが「当たり領域」(鍵由来のLSHで分割し、前の文の署名から導出)に落ちる文だけ採択する棄却サンプリング。言い換えても意味ベクトルは動きにくいため、透かしが生き残りうる。
sukashi 本体検出はすべて仮説検定
3方式とも、検出は「このテキストの統計量は、透かしなしの帰無仮説から何σ外れているか」の一点に帰着する。KGW と SemStamp は二項検定の正規近似、Gumbel は指数分布の和(Gamma 近似)を使う。
# KGW / SemStamp: green (or valid-region) rate test
z = (hits − γ·n) / √(n·γ·(1−γ))
# Gumbel-Max: per-token score is Exp(1) under the null
S = Σ −log(1 − r[chosen])
z = (S − n) / √n
z > 4 は片側 p < 3×10⁻⁵。この検定が意味を持つのは、鍵と生成側がまったく同じ疑似乱数(グリーンリスト・乱数ベクトル・LSH超平面)を再現できるからで、生成と検出が「鍵+文脈 → 乱数」の決定的な導出を共有している。
実装の忠実度と、頑健性の実際
この実装は SemStamp 論文の骨格——鍵由来LSHによる意味空間の領域分割、前の文の署名から導く有効領域(チェーン構造)、境界マージン付きの文単位棄却サンプリング、ヒット率の z 検定——をそのまま持っている。ただし1つ、意図的に省いた部品がある。パラフレーズ頑健エンコーダである。
論文は、文埋め込みモデルを言い換えペアで対照学習し、「言い換えても LSH 署名が反転しない」エンコーダを作ってから透かしを載せる。本実装は市販の埋め込みモデル(ruri-v3-30m / all-MiniLM-L6-v2)をそのまま使った。その差は、言い換えでの署名ビット反転率として直接測れる:
| 埋め込みモデル | 言語 | 言い換え忠実度 cos | LSH符号反転率 |
|---|---|---|---|
| ruri-v3-30m | 日本語 | 0.952 | 4/36 (11%) |
| all-MiniLM-L6-v2 | 英語 | 0.797 | 10/48 (21%) |
| all-mpnet-base-v2 | 英語 | 0.823 | 16/48 (33%) |
この反転率が生死を分ける。今日の全実測(各条件1〜2回、10〜13文のエッセイ):
| 条件 | 透かし入り z | パラフレーズ後 z |
|---|---|---|
| 日本語・チェーン構造(論文準拠) | 4.02 | 4.08 生存 |
| 日本語・固定領域(簡略変種) | 4.75 | 1.35 / 4.43(2回実施、振れる) |
| 英語・チェーン構造 | 2.45 | -0.82 消滅 |
| 英語・固定領域(2回実施) | 4.67 / 4.96 | 1.12 / 4.01(振れる) |
| (参考)KGW・日英 | 7.17 / 14.24 | 0.71 / -0.92 毎回消滅 |
まとめるとこうなる。KGW(トークン空間型)はパラフレーズで毎回確実に z ≈ 0 へ沈む。意味空間型は劣化はするが壊滅せず、日本語では検出しきい値を越えて生き残ることもある——ruri の反転率が11%と低いからだ。しかし反転がゼロでない限り生存は確率的で、10文程度の短いテキストでは結果が振れる。論文が頑健エンコーダの対照学習をわざわざ行うのは、この反転を潰して生存を「たまたま」から「保証」に変えるためである。
実装上の教訓も2つ得た。(1) 市販埋め込みは異方性が強く、原点を通る超平面では領域分割が偏る——アンカー文集合の平均でセンタリングして解決した。(2) 棄却サンプリングは品質を見ずに「領域に入った文」を採るため、素通しにすると英語混じりの候補文まで採用してしまう——候補フィルタを透かしあり・なし双方に同条件で入れて解決した。
制約
- 短いテキストでは検出できない。証拠はトークン数(文数)に比例して蓄積する。実測では、同じ形式の箇条書きで57トークン(z=3.90)では判定しきい値に届かず、113トークン(z=5.38)で届いた。SemStamp流は文単位なので、さらに長い文章が要る。
- 低エントロピーな場面に弱い。答えがほぼ一意なコードや事実の記述には埋め込む「揺らぎ」自体がない。KGW で強引に埋め込むと品質劣化が表面化する(実測:δ=2 のロジット加点が「常体で」「1文だけ」という書式指示の遵守を壊し、英語フレーズの混入も引き起こした)。
- 意味空間型の言い換え耐性は埋め込みモデル次第。市販埋め込みのままでは生存は確率的(上の表のとおり)。翻訳・要約・大幅な書き換えのように文の意味単位そのものが組み変わる編集には、頑健エンコーダがあっても耐えられない。
- 検出は「AI が書いた証拠」にならない。人間の文章を LLM に校正させただけでも透かしは付く。検出できるのは「このモデル(鍵)が処理した」ことまでで、著者性の証明ではない——Anthropic 自身も同じ注意書きをしている。
- 本実装は学習用の最小構成。頑健エンコーダの学習・鍵ローテーション・複数鍵・本番規模の誤検出率評価(SynthID-Text は2,000万件規模で評価している)は扱っていない。
今後の展望
- パラフレーズ頑健エンコーダの学習。本実装に欠けている最後の部品。日本語なら JSNLI や PAWS-X の言い換えペアで ruri を対照学習すれば、符号反転率を数%以下に落とし、生存を「たまたま」から「保証」に近づけられる見込み。
- マルチビット化。「AI が書いたか」の1ビットではなく、ユーザーID やタイムスタンプを埋め込んで復号する(Qu et al., USENIX Security 2025)。リーク元追跡の本命とされる方向。
- post-hoc 型。ロジットに触れられないブラックボックス API 越しの透かし(SAEMark, NeurIPS 2025)。Sparse Autoencoder の特徴量で候補出力を選別する。
- distortion-free × 言い換え耐性の理論的両立(PASA, ICML 2026)。今回別々に確かめた2つの性質を、1つの枠組みで達成する研究の追実装。
- Anthropic の検出ツールとの答え合わせ。Claude の透かしの技術詳細は未公開。検出ツールが公開されたら、この実装の挙動と突き合わせたい。
参考文献
- hellorusk,「Claude がテキストに電子透かしを入れ始めたので、LLM ウォーターマーキングの仕組みを調べた」Zenn, 2026.(本プロジェクトのきっかけ)
- Kirchenbauer et al., "A Watermark for Large Language Models" (ICML 2023). — KGW法
- Kuditipudi et al., "Robust Distortion-free Watermarks for Language Models" (2023). — Gumbel-Max系の定式化
- Dathathri et al., "Scalable watermarking for identifying large language model outputs" (Nature, 2024). — SynthID-Text
- Krishna et al., "Paraphrasing evades detectors of AI-generated text, but retrieval is an effective defense" (NeurIPS 2023). — パラフレーズ攻撃
- Hou et al., "SemStamp: A Semantic Watermark with Paraphrastic Robustness for Text Generation" (NAACL 2024). — 本実装の元。パラフレーズ頑健エンコーダの対照学習を含む
- Qu et al., "Provably Robust Multi-bit Watermarking for AI-generated Text" (USENIX Security 2025).
- Yu et al., "SAEMark: Multi-bit LLM Watermarking with Inference-Time Scaling" (NeurIPS 2025).
- Ai & He, "PASA: A Principled Embedding-Space Watermarking Approach for LLM-Generated Text under Semantic-Invariant Attacks" (ICML 2026).
- Anthropic, "How Claude marks AI-generated content" (2026).
実装に使ったモデル:sarashina2.2-3b-instruct-v0.1(SB Intuitions), ruri-v3-30m(名古屋大学 笹野研究室), Qwen2.5-instruct 0.5B/1.5B(Alibaba), all-MiniLM-L6-v2 / all-mpnet-base-v2(Sentence Transformers)。すべて Apple Silicon の MPS 上でローカル実行。数値はいずれも 2026-08-13 の実測。