SynthID Text 现已发布|在 AI 生成文本中应用不可见水印的新技术
你是否难以分辨一段文本是由人类撰写的,还是 AI 生成的?识别 AI 生成内容对于提升信息可信度、解决归因错误以及抑制错误信息至关重要。
今天,Google DeepMind 和 Hugging Face 很共同宣布,在 Transformers v4.46.0 版本中,我们正式推出了 SynthID Text 技术。这项技术能够通过使用 logits 处理器 为生成任务添加水印,并利用 分类器 检测这些水印。
详细的技术实现请参考发表在《自然》 (Nature) 上的 SynthID Text 论文,以及 Google 的 负责任生成式 AI 工具包,了解如何将 SynthID Text 应用到你的产品中。
工作原理
SynthID Text 的核心目标是为 AI 生成的文本嵌入水印,从而让你能判断文本是否由你的大语言模型 (LLM) 生成,同时不影响模型的功能或生成质量。Google DeepMind 开发了一种水印技术,使用一个伪随机函数 (g 函数) 增强任何 LLM 的生成过程。这个水印对人类来说不可见,但能被训练好的模型检测。这项功能被实现为一个 生成工具,可使用 model.generate() API 与任何 LLM 兼容,无需对模型做修改,并提供一个完整的 端到端示例,展示如何训练检测器来识别水印文本。具体细节可参考 研究论文。
配置水印
水印通过一个 数据类 进行配置,这个类参数化 g 函数,并定义它在抽样过程中的应用方式。每个模型都应有其专属的水印配置,并且必须安全私密地存储,否则他人可能会复制你的水印。
在水印配置中,必须定义两个关键参数:
keys参数:这是一个整数列表,用于计算 g 函数在模型词汇表上的分数。建议使用 20 到 30 个唯一的随机数,以在可检测性和生成质量之间取得平衡。ngram_len参数:用于平衡稳健性和可检测性。值越大,水印越易被检测,但也更易受到干扰影响。推荐值为 5,最小值应为 2。
你还可以根据实际性能需求调整配置。更多信息可查阅 SynthIDTextWatermarkingConfig 类。研究论文还分析了不同配置值如何影响水印性能的具体影响。
应用水印
将水印应用到文本生成中非常简单。你只需定义配置,并将 SynthIDTextWatermarkingConfig 对象作为 watermarking_config= 参数传递给 model.generate(),生成的文本就会自动携带水印。你可以在 SynthID Text Space 中体验交互式示例,看看你是否能察觉到水印的存在。
from transformers import (
AutoModelForCausalLM,
AutoTokenizer,
SynthIDTextWatermarkingConfig,
)
# 初始化模型和分词器
tokenizer = AutoTokenizer.from_pretrained('repo/id')
model = AutoModelForCausalLM.from_pretrained('repo/id')
# 配置 SynthID Text
watermarking_config = SynthIDTextWatermarkingConfig(
keys=[654, 400, 836, 123, 340, 443, 597, 160, 57, ...],
ngram_len=5,
)
# 使用水印生成文本
tokenized_prompts = tokenizer(["your prompts here"])
output_sequences = model.generate(
**tokenized_prompts,
watermarking_config=watermarking_config,
do_sample=True,
)
watermarked_text = tokenizer.batch_decode(output_sequences)
检测水印
水印设计为对人类几乎不可察觉,但能被训练好的分类器检测。每个水印配置都需要一个对应的检测器。
训练检测器的基本步骤如下:
- 确定一个水印配置。
- 收集一个包含带水印和未带水印文本的训练集,分为训练集和测试集,推荐至少 10,000 个示例。
- 使用模型生成不带水印的文本。
- 使用模型生成带水印的文本。
- 训练水印检测分类器。
- 将水印配置及相应检测器投入生产环境。
Transformers 提供了一个 贝叶斯检测器类,并附带一个 端到端示例,展示如何使用特定水印配置训练检测器。如果多个模型使用相同的分词器,可以共享水印配置和检测器,前提是训练集中包含所有相关模型的样本。这个训练好的检测器可以上传到私有的 Hugging Face Hub,使其在组织内部可用。Google 的 负责任生成式 AI 工具包 提供了更多关于将 SynthID Text 投入生产的指南。
限制
SynthID Text 的水印在某些文本变形下依然有效,如截断、少量词汇修改或轻微的改写,但也有其局限性:
- 在事实性回复中,水印应用效果较弱,因为增强生成的空间有限,否则可能降低准确性。
- 如果 AI 生成的文本被彻底改写或翻译为其他语言,检测器的置信度可能显著降低。
虽然 SynthID Text 不能直接阻止有目的的攻击者,但它可以增加滥用 AI 生成内容的难度,并与其他方法结合,覆盖更多内容类型和平台。
英文原文: https://hf.co/blog/zh/synthid-text
作者: Sumedh Ghaisas (guest), Sumanth Dathathri (guest), Ryan Mullins (guest), Joao Gante, Marc Sun, Raushan Turganbay
译者: Luke, Hugging Face Fellow
SynthID Text 现已发布|在 AI 生成文本中应用不可见水印的新技术的更多相关文章
- Microsoft Message Analyzer (微软消息分析器,“网络抓包工具 - Network Monitor”的替代品)官方正式版现已发布
Microsoft Message Analyzer (微软消息分析器,“网络抓包工具 - Network Monitor”的替代品)官方正式版现已发布 来自官方日志的喜悦 被誉为全新开始的消息分析器 ...
- 利用RNN(lstm)生成文本【转】
本文转载自:https://www.jianshu.com/p/1a4f7f5b05ae 致谢以及参考 最近在做序列化标注项目,试着理解rnn的设计结构以及tensorflow中的具体实现方法.在知乎 ...
- NLP(二十一)根据已有文本LSTM自动生成文本
根据已有文本LSTM自动生成文本 原理 与股票预测类似,用前面的n个字符预测下一个字符 https://www.cnblogs.com/peng8098/p/keras_5.html 代码 from ...
- 数据可视化之 图表篇(三)体验Power BI最新发布的AI图表:分解树
在刚刚发布的11月更新中,PowerBI界面全新改版,采用和Office套件相似的Ribbon风格,除了这个重大变化,还发布了一个AI黑科技图表:分解树(Decomposition Tree). 无论 ...
- 如何生成文本: 通过 Transformers 用不同的解码方法生成文本
简介 近年来,随着以 OpenAI GPT2 模型 为代表的基于数百万网页数据训练的大型 Transformer 语言模型的兴起,开放域语言生成领域吸引了越来越多的关注.开放域中的条件语言生成效果令人 ...
- LLM(大语言模型)解码时是怎么生成文本的?
Part1配置及参数 transformers==4.28.1 源码地址:transformers/configuration_utils.py at v4.28.1 · huggingface/tr ...
- ZeroMQ接口函数之 :zmq_z85_decode – 从一个用Z85算法生成的文本中解析出二进制密码
ZeroMQ 官方地址 :http://api.zeromq.org/4-0:zmq_z85_decode zmq_z85_decode(3) ØMQ Manual - ØMQ/4.1 ...
- Fuel4D 2.1 免费跨平台游戏引擎 现已发布
Fuel4D 2.1 免费跨平台游戏引擎 现已发布 开发环境:纯 C/C++,无JAVA.O-C. 支持 WIN32.安卓 系统. 详情见官方网站:http://www.fuel4d.com 或者进F ...
- JSON C# Class Generator是一个从JSON文本中生成C#内的应用程序
JSON C# Class Generator是一个从JSON文本中生成C#内的应用程序 .NET平台开源项目速览(18)C#平台JSON实体类生成器JSON C# Class Generator ...
- Python生成文本格式的excel\xlwt生成文本格式的excel\Python设置excel单元格格式为文本\Python excel xlwt 文本格式
Python生成文本格式的excel\xlwt生成文本格式的excel\Python设置excel单元格格式为文本\Python excel xlwt 文本格式 解决: xlwt 中设置单元格样式主要 ...
随机推荐
- java_GUI_监听事件关闭窗口_AWT
package Panel;import java.awt.*;import java.awt.event.WindowAdapter;import java.awt.event.WindowEven ...
- JVM学习第二篇思考:一个Java代码是怎么运行起来的-下篇
JVM学习第二篇思考:一个Java代码是怎么运行起来的-下篇 在上一篇<JVM学习第一篇思考:一个Java代码是怎么运行起来的-上篇>中咱们知道类一个Java类的生命周期需要经历以下七个阶 ...
- 拼多多API出租,拼多多API租用,拼多多订单信息获取API,拼多多开放平台权限出租,拼多多开放平台API出租
当前,拼多多开放平台的审核还是比较严格的,虽然可以申请,但是难度很大,对于一些用户来说困难还是蛮大的 拼多多的API主要拼多多订单信息获取.拼多多商品上传,拼多多库存更新等 需要这块API的一般是需要 ...
- [Udemy] AWS Certified Data Analytics Specialty - 3.Processing
Lambda Lambda 经常起胶水的作用,就是粘合不同的service. 如下图例子 另外Requirement #1 也是一个例子,还有Requirement #3 除了Kinesis Data ...
- SQL Server – Transaction & Isolation 事务与隔离
前言 上回在谈到 Concurrency 并发控制 时, 有提到过事务的概念. 这篇就补上它具体的实现. 以前写过相关的文章: sql server 学习笔记 (nested transaction ...
- 【学习笔记】数位DP
数位DP 适用条件 此类题目一般要求在\([l,r]\)区间内满足条件的数的个数,答案一般与数的大小无关,而与数各位的组成有关.题目中给出的数的范围一般较大,往往在\(10^9\)以上因此无法暴力枚举 ...
- 面试官:GROUP BY和DISTINCT有什么区别?
在 MySQL 中,GROUP BY 和 DISTINCT 都是用来处理查询结果中的重复数据,并且在官方的描述文档中也可以看出:在大多数情况下 DISTINCT 是特殊的 GROUP BY,如下图所示 ...
- 手搓大模型Task03:手搓一个最小的 Agent 系统
前言 训练一个大模型是一件高投入低回报的事情,况且训练的事情是由大的巨头公司来做的事情:通常我们是在已有的大模型基础之上做微调或Agent等:大模型的能力是毋庸置疑的,但大模型在一些实时的问题上, ...
- 《Cloudera Hadoop大数据平台实战指南》代码下载
<Cloudera Hadoop大数据平台实战指南>代码下载 本书图书资源下载地址链接:https://pan.baidu.com/s/1-P7Go5gdJLim33_Iju1rfg 提取 ...
- C#/.NET/.NET Core技术前沿周刊 | 第 7 期(2024年9.23-9.30)
前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...