@TOC
寫在最前面
版權聲明:本文為原創,遵循 CC 4.0 BY-SA 協議。轉載請注明出處。
第一個問題關于語義編碼過程,第二個關于水印logits的數學約束。
關于前綴文本編碼,需要強調三個關鍵點:
首先是均勻性約束——隨著生成過程不斷增長;
其次是BERT的編碼方式,這里論文用的是[CLS]向量作為全局表示;
最后是固定長度的必要性,否則無法輸入后續網絡。
用戶可能混淆了token嵌入和文本嵌入的區別,需要明確這是句子級表示。
至于均勻性約束,對“均值為0”的實際作用存在疑惑。
這里要區分兩個層面:
數學上是通過損失函數強制實現的(公式5),工程上是為了防止統計攻擊。
可以類比密碼學中的均勻分布要求,比如如果某些token總是獲得正logits,攻擊者只需提高這些token出現頻率就能破壞水印。
論文附錄D提到的γ參數調整其實是個很好的延伸案例。
更直觀的例子說明,比如當輸入“The cat sat”和“A feline perched”時,雖然token完全不同,但BERT輸出的768維向量余弦相似度可能達0.92,因此水印logits也相似。而均值為0的特性可以想象成對所有token“雨露均沾”,不會讓某些token總是受益。
1. 前綴文本的語義編碼:e_i = E(t_{:i-1})
含義
-
t_{:i-1}
:生成第i
個token時,模型已生成的全部前序文本(token序列)。
例如:生成句子的第5個詞時,t_{:4} = ["The", "cat", "sat", "on"]
-
E
:預訓練的語義編碼模型(如BERT),將變長文本映射為固定維度的語義向量。
例:輸入"The cat sat on"
→ 輸出768維向量e_i
BERT取[CLS]標記或平均池化輸出作為文本表示
關鍵特性
- 語義抽象:
向量e_i
捕捉前序文本的整體語義而非表面形式。
例:["The", "cat", "sat"]
和["A", "feline", "perched"]
的嵌入向量余弦相似度≈0.9 - 長度無關:
無論前序文本多長,輸出固定維度向量(如768維)。 - 位置不變:
同義改寫或語序調整不會顯著改變e_i
(語義空間連續性)。
2. 均勻性約束:水印logits均值為0
含義
- 水印logits:模型為每個token生成的水印偏移分數
P_W ∈ R^{|V|}
(|V|
=詞表大小)
例:P_W = [0.3, -1.2, 0.8, ...]
(每個值對應詞表中一個token的偏移) - 約束要求:
即:所有token的水印偏移分數總和為0(正負抵消)。\frac{1}{|V|}\sum_{j=1}^{|V|} P_W^{(j)} = 0
為何需要此約束?
- 消除統計偏差:
- 若無約束 → 某些token總是獲得正偏移(如常見詞"the")
- 結果:這些token在生成文本中頻率異常高 → 攻擊者可通過詞頻分析破解水印(如圖)
KGW-1的綠名單詞頻明顯高于普通文本
- 保障生成質量:
均值為0確保水印不系統性偏向某些token,避免文本失真(如重復出現特定詞)。
實現方式
通過損失函數強制約束(論文公式5):
\mathcal{L}_n = \underbrace{\sum_{i}|\sum_{j}P_W^{(j)}|}_{\text{行和=0}} + \underbrace{\sum_{i}|\sum_{j}P_W^{(j)}|}_{\text{列和=0}} + \lambda_1\sum_{i}\sum_{j}|R - |P_W^{(j)}||
- 前兩項:約束每行(每個位置)和每列(每個token)的偏移均值為0
- 第三項:使偏移絕對值接近
R
(控制強度)
效果示例
約束情況 | 水印logits示例 | 問題 |
---|---|---|
無約束 | ["the": +0.8, "a": +0.6, "cat": -1.4] | “the”/"a"頻率虛高,易被檢測 |
均勻約束 | ["the": +1.2, "a": -0.3, "cat": -0.9] | 各token偏移正負平衡,無統計異常 |
總結:兩個設計的關聯性
- 語義向量
e_i
→ 將離散token序列映射到連續語義空間,解決改寫魯棒性問題。 - logits均值為0 → 在語義空間中均勻擾動所有token,解決安全漏洞問題。
二者共同實現核心目標:水印強度與文本語義綁定,而非表面形式綁定。
hello,我是 是Yu欸 。如果你喜歡我的文章,歡迎三連給我鼓勵和支持:👍點贊 📁 關注 💬評論,我會給大家帶來更多有用有趣的文章。
原文鏈接 👉 ,??更新更及時。
歡迎大家點開下面名片,添加好友交流。