微信扫码
与创始人交个朋友
我要投稿
LLM 基础知识 | WaterMarking,你搞懂了吗?
这篇论文,我的决心是都撸一遍。算法不算很流行,总要搞懂它怎么起作用的吧?
前半段我采取的方式是“朗读”,也就是自己录个“有声书”给到自己,后半段我打算直接用翻译的。可能会请求百度翻译增加效率。
介绍我国公务员国考,难度是相当大的!我都不知道自己有没有机会参与考试,如果有这个机会的话,我也要全力以赴的!加油吧,伙伴们!
这些直播其实营养较少,有些地方停顿也比较久……Um,直播嘛。之后就改翻译了!
这是【LLM 基础知识】第三篇。
LLMs 基础知识 | BERT 模型族
LLMs 应对攻击综述:PLeak, Self-Reminder, RAIN, AutoDAN, GCG
文本水印(Text Watermark),有两大类,一是针对文本的,二是针对模型的。
其中,针对文本的 Text Watermark 分别有:基于形式的、基于语词的、基于语法的、基于文本迭代的。文本迭代的含义是,同时拥有以上三种,并且意思不改变。
针对模型的,跨时间的、标签抽样、LLM 训练。
主要基于语序,对语序进行打水印。具体操作,识别某种规律或者模式,然后找到一些候选单词,然后打水印。
替换部分语词,用于作为打水印单词。
基于单词很容易被识别并且被移除,所以,发展出基于语法的。具体文章解释一些,水印生成方法。
意译翻译。这里比较有意思的是,机器的 generation-based sentence 反而更加符合原有的含义。因为人的话,是不会去识别自己怎么意译的,对吧?模型的话,不仅仅会对标语言能力最强 的,也就是标准最高的,还会识别自己的映射模式。因此会跑出更加接近愿意的翻译。
这种方法,随着迭代还会生成越发高质量的语料。
知识点-1:Training - Logit Generation - Token Sampling
知识点-2:Logit Value 这么算的:
token v(j) 是红色的概率 Pr_red = LLM(输入向量 x, 前i-1个token);
token v(j) 是绿色的概率 Pr_green = LLM(输入向量 x, 前i-1个token)+Δ。
公式解释,|s| 绿色样本数量;T 是句子(或者段落)的单词的个数。
知识点-3:针对保持文本质量,以及防篡改。为了使得文本水印达到要求,有以下几种方式,分别是 Watermarking During Logits Generation, Watermarking During Token Sampling, Watermarking During LLM Training。
a.增加水印识别度(Enhancing Watermark Detectability)。关于如何增加识别度,首先这种算法的标准,会导致极小的受伪概率,即 False Positive Rate(FPR)极低。这个时候,文章提 出两种方法,一是依赖于熵的权重,高熵高权重。换言之,文本中概率越是变化多的区域,会有更高的被接收的概率。二是滑动窗口(sliding window based)。这种方式具体做法,固定窗口 大小,最大化 z-score(原文含有表达式),训练完之后,判断 Accuracy。找到使得 Accuracy 最大的那个窗口,即为所求。
b.去掉文本质量产生的影响(Mitigating Impact on Text Quality)。由于不自然的连接和单词会造成可读性降低,因此,有必要发展识别方法。诸多学者发现了不少方法。
b-1,REWEIGHT。修改 Logit 统计量,这种方法会影响无偏性(bias),使得大概率被选中或者小概率被选中的词,概率都增加。于是,学者提出了 reweight method,介绍了三种 reweight 方法,基本思想,是降低一部分样本的概率(有些算法会降到 0 ),同时,提升另一部分样本的概率。该方法理论上无偏,伙伴们可以查找参考资料。
b-2,ENTROPY。一是绕过低熵情况,即结合熵,以及红色列表概率,限制其上限。二是降低禁止不该禁止词的可能(likelihood),降低偏差,减少这些词被排除在外的可能。
c.增加水印容量(Expanding Watermark Capacity)。
KGW 使用的是 zero-bit 水印,而其他的数据,更具实际意义的,例如,版权细节、时间戳、身份识别信息,越发要求人们使用 multi-bit 水印,更多 bit 未知置为 1,更容易获取有意义数 据。
如果词汇表足够大,可能如此分割词汇表(Vocabulary),原来是对每个单词分红绿两种结果,划分词汇表之后,是多分类。如果想包含 b 个比特,词汇表需要被分为 2*b 个组,使用不同的水印组,每组偏好风格不同。另一种方法,使用承载更丰富的水印(水印也是单词,这里可能是单词空间容量更大),将文本划分几个区域,每个区域嵌入一定比例的信息。
上述方法,任何一种颗粒度太细(too fine-grained),会使得水印的作用非常有限(由于水印嵌入太多 —— 至少一个 partition 需要一个水印吧?),准确率受到影响。解决这个问题,部分学者试图结合两种方法,保证充分的水印容量,同时避免颗粒度太细的分割。
d.增加鲁棒性(Improving Robustness Against Removing Attacks)
水印算法必须稳定,保证水印可识别。攻击的方式:改变文本但是语义不变,换言之,其中嵌入的水印变了。KGW 算法显示这种稳定,性能还有提升空间。
一种方式是更加稳健的,方法即词汇表分割。原始 KGW 算法使用所有的词汇信息,每个单词分红绿。之后学者专门研究了分割算法,对编辑稳定(换言之,对于任何编辑行为,其概率分布变化较小),对分割稳定(不同分割下,不同语词的概率分布变化较小)。针对移除水印情况,这种方法可以保证文本语义。上述指标在设计水印时候,要考虑进去。例如,有些人将训练过的水印模型,直接转换成文本语义,分红绿的结果直接影响区分文本的结果,其影响程度保证稳定。
其他人使用“增加限制”方式来提升水印 LLM 的性能,效果是保证语义上相似的语词进入同一个颜色列表,进一步增加稳定。有些学者,使用插入水印时候加权重的方式提升性能。
e.公开可验证(Achieving Publicly Verifiable Watermarks)
第一,公开验证水印是意义重大的。水印解密的时候是不需要密钥的。个性化场景识别的需求减少之后就能减少 cost,通常是在 API 内层嵌入检测器,这种模式足够透明,提升信任,以及容易验证。注意,之前的水印是无法公开验证的。诸如 KGW 哈希函数,这类检测函数都是个性化的,将这些函数公开是危险的。
第二,用到的是密码学(Cryptography)领域知识,主要是电子签名。采用【公钥-私钥】一套理论,验证公钥,用的是文本中抽取的信息,这种方式本身也能创造水印。识别和创造水印的方法,都是神经网络。
总结,生成 logits 阶段加入水印。并且,水印满足五大性质:水印识别度、使文本质量最小、增加水印容量、增加鲁棒性、公开可验证。
Token Sampling 阶段产生水印的方法,涉及“水印消息”,Watermarking Massage。观察这过程中的颗粒度 Granularity,依据颗粒度的情况,分为两种:token-level,sentence-level。
a.Token-level,直接在语词预测的时候,生成水印。token sampling 做法是随机的,用 Seed,即用伪随机数引导句子。
b.Sentence-level,用到 watermark message,引导整个句子。上述单个语词打水印,很容易替换删除语词的时候,使得整篇文章概率分布不稳定。由于语义都是不变的,为什么不增加颗粒度呢?这个时候鲁棒性更好。
之前的算法,logits 生成阶段嵌入水印,其实很容易被移除。很多开源大模型(LLM),水印必须在训练期间嵌入大模型的参数内。这类水印,分为 Trigger-based Watermarking 和 Global Watermarking。
a.Trigger-based Watermarking。
基于触发的水印,类似于后门攻击,在模型中嵌入特殊触发器。简言之,就是在输入的时候决定,模型决定是否触发特殊行为。应用方面,生成数据集,以及保护版权。
部分学者提出,基于代码开展工作,使用 word-level, sentencse-level 代码修改,触发触发器,生成 corruptting code。进一步,使用语义不变的代码变形,作为触发器,保证其作用。这种方式,称为“trigger-based”,以及使得地语料的影响最小。
Hufu 水印,将触发定位某种输入形式(非输入本身),应用 GPT 模型的渗透等价性质,使得模型意识到特殊的渗透(模式),一旦发现,认定为水印。
Permutation Invariance 是排列不变性,是指函数的输出与输入元素的顺序无关。事实上,找到合适的函数(度量),就能完成这种性质的刻画。
b.Global Watermarking。
如果水印想覆盖更大范围,基于触发的方法,能处理的情况是比较有限的。全局水印,会在所有 LLM 生成的语料中打水印,使得内容可以被追踪。部分学者会探索,水印是否能被习得,提出两种方式。第一,sampling-based watermark distillation, logit-based watermark distillation。翻译成,基于采样的水印蒸馏,或基于 logit 水印蒸馏。
方法本质,将跨时间推断的水印,转变成 LLM 参数(这里可能指的是,固定水印语词训练参数;之前应该是固定其他语词训练参数),增强其原来学习到的内容。
实验显示,该方法拥有接近完美的识别度(watermark detection),对于干扰也有强抵抗力,显著提升有效性和鲁棒性。若输入数据分布不清晰的话,可能不稳定。
a.Zero-bit Watermark。使用假设检验方式,检验 z-socre 或者 p-value,以及设置 threshold,实际含义就是,满足“含有水印”事件的概率和 threshold 比较。通常,自然语词和水印语词比例一直,通常都是“锻造”句子,或者模型生成的句子。
计算 F1,以及 FPR(False Positive Rate)在模型中含义,人类语词被判断为水印语词,即弃真概率,会更加重要。
b.Multi-bit Watermark。不仅识别水印,还能获取信息。水印文本本身有信息的,包括比特错误率,比特准确率。水印消息(watermark message)可用一连串 bit 表示,bit 容量是关键衡量信息,承载比特信息量越大越好。
从对基本通信模型的信道容量、边信息水印模型的信道容量及基于游戏理论的信道容量的分析可以看出,数字水印系统的信道容量与水印噪声比(WNR)密切相关,总体趋势是随着 WNR 的增大,水印信道容量也单调增大。总的来说这种系统的容量好于基本水印模型的容量,水印编码考虑到原始载体信号,利用量化实现结构化的次优编码。
第一,基于句子的水印,句子越长,水印越容易被识别。藏住水印算法的最大句子长度,其实是个很重要的指标,也成为水印大小。
句子最小长度是多少?句子的单词再少,也要保证 FPR=0.2%。KGW 算法要求最短长度识别,这部分工作还是有待研究的。这些算法还有要求,对文本质量影响最小,以及由高度的鲁棒性。
这是评价算法好坏的标准之一。
有些算法会无意之间篡改原文信息,但是建模者并未修复。但凡识别不出攻击模型的意图的“识别”与“篡改”,称为非目标的攻击。
建模者很清晰、有针对性地对文本某些语词进行识别和改动。
注意,最常用的是 format-based model。
这里介绍了一些网页的安全或攻击一些做法。一是 word spacing, text color, font 这些网页标签属性,有的时候是会被嵌入水印的。或者网页内容上,不可见的数码水印,使用编码规则插入 HTML。另外,其他操作偶尔是需要的,在文件中插入水印,使用一些特征,例如书签。
还分成数据集版权,和算法版权。具体攻击做法,就是“触发动作”,“后门攻击”(可能主要聚焦于 API)。
这部分工作,主要是防止抽取数据。
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-12-21
基于AI智能助理的软件开源组件安全检查
2024-12-21
Llama2024年度要点总结
2024-12-21
重磅! Github Copilot 免费了
2024-12-20
万字长文帮你搞定AI Agent选型
2024-12-20
微软开源的 Markitdown 可将任意文件转换为 Markdown 格式,PDF 解析咋样?
2024-12-20
Claude的MCP(模型上下文协议)简介
2024-12-20
历时2年,华人团队力作,震撼开源生成式物理引擎Genesis,可模拟世界万物
2024-12-19
开源!轻量!AI 代码助手插件 Continue 使用体验如何?
2024-05-06
2024-07-25
2024-08-13
2024-06-12
2024-07-11
2024-06-16
2024-07-20
2024-09-20
2024-06-15
2024-07-25
2024-12-20
2024-12-19
2024-11-22
2024-11-19
2024-11-13
2024-11-13
2024-10-07
2024-09-22