@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欸 。如果你喜欢我的文章,欢迎三连给我鼓励和支持:👍点赞 📁 关注 💬评论,我会给大家带来更多有用有趣的文章。
原文链接 👉 ,⚡️更新更及时。
欢迎大家点开下面名片,添加好友交流。