开云体育
开云APP下载Karpathy新实验火了!一个“表情”占53个tokenDeepSeek-R1苦思10分解谜失败
【新智元导读】一个简单的笑脸可能远不止这么简单?最近,AI大神Karpathy发现,一个竟然占用了多达53个token!这背后隐藏着Unicode编码的哪些秘密?如何利用这些「隐形字符」在文本中嵌入、传递甚至「隐藏」任意数据。更有趣的是,这种「数据隐藏术」甚至能对AI模型进行「提示注入」!
Karpathy揭示道:这背后,就隐藏着Unicode和隐藏字符的秘密!
在数字世界中,文字可不像看上去那么简单。你可能以为e和е看起来都一样,但它们很可能来自不同的字符集。
比如,拉丁字母的「e」(U+0065)和西里尔字母的「е」(U+0435)在外观上几乎一模一样,但它们的Unicode编码是不同的。这类易混淆字符,就被称为Confusables。
更神奇的是,还有一种更隐蔽的方法可以在文字中藏入数据,那就是变体选择符(Variation Selectors)。
比如Karpathy举的这个例子:正常来说,一个普通的只会占用1-2个token。而如今的53个token,就意味着它正在偷偷传递信息,并且不会被肉眼察觉。
我们也尝试利用工具将一句话藏在了这个表情里。可以看到,它的token数量一下子就飙升到了146个。
Karpathy表示,自己能用这种方法使用不可见字节,进行基本的提示注入(prompt injection),但如果没有明确的解码提示,这种方法就没用。
而具有思维能力的模型,似乎就更容易受此方法的影响了,因为它们天生喜欢解谜,而且会因为注意到添加的字节而表现出浓厚的兴趣和好奇心。
根据它的推断,隐藏信息在说,「Onli!n37e27i4h4he3ingle7odlol」。虽然不是正确答案「lol」,但也算比较接近了。
但从理论上讲,LLM确实很有可能发现隐藏在变体选择符中的信息,并执行相应指令。
Karpathy指出,如果这篇文章被收录到预训练数据中,这些知识可能会被整合到模型参数中,这样模型就可能在没有特定提示的情况下,自动识别和解码这种特殊编码了。
有网友表示,自己也有同样经历。对于这个笑脸表情包,Gemini无法解码,但Claude和GPT都能解码消息,而且还能执行其中的操作。
另有网友制作了一个「token炸弹」,大幅超出GPT-4o上下文长度,让模型直接崩溃无法处理内容。
Karpathy之所以得出如上观点,想法来自软件工程师Paul Butler的一篇博客。
理论上,通过使用 ZWJ(零宽连接符)序列,你可以在单个表情符号中编码无限量的数据。
要知道,若是在单个字符(表情包)嵌入极端数量的token,会导致LLM处理信息时,计算量急剧上升。
Unicode规定了256个码位作为「变体选择器」(variation selector),分别命名为VS-1到VS-256。这些变体选择符本身不显示任何内容,但它们会改变紧跟在它们之前的那个字符的显示样式。
大多数Unicode字符都没有与之相关的变体(不同的显示样式)。因为Unicode是一个不断发展的标准,并且力求未来兼容,所以即使处理Unicode的代码不知道变体选择符的含义,在进行转换时也应该保留它们。
举个例子,字符 「g」(U+0067) 后面跟着一个VS-2 (U+FE01),显示出来还是小写的「g」,和单独的「g」一模一样。但是,如果你复制粘贴它,变体选择符会跟着一起被复制。
因为256刚好足以表示一个字节(byte)的所有可能值,所以这给我们提供了一种方法,可以将一个字节的数据「隐藏」在任何一个 Unicode 码位后面。而且,Unicode规范并没有明确说明多个变体选择符序列的情况,只是暗示在渲染(显示)时应该忽略它们。
我们可以将一系列变体选择符连接起来,以表示一个任意的字节串(byte string)。
举个例子,假设我们要藏的数据是[0x68, 0x65, 0x6c, 0x6c, 0x6f] (就是「hello」这几个字母)。我们可以把每个字节变成一个对应的变体选择符,然后把它们串起来。
变体选择符的编号分两块:前面16个是U+FE00到U+FE0F,后面240个是U+E0100到U+E01EF。要将一个字节转换为变体选择符,我们可以使用类似这样的Rust代码:
表面上看起来只是一个普通的表情符号,但当你将它粘贴到解码器中时,就能看到其中隐藏的信息。
如果我们使用调试模式(debug formatter)来查看,就能观察到实际的编码结构:
请注意,基础字符不一定要是表情符号——变体选择符的处理与普通字符相同。只是用表情符号会更有趣。
需要特别指出的是,这种行为本质上属于对Unicode规范的不当使用,如果你开始考虑将此类技术用于实际场景,请立即停止这种想法。
1. 绕过人工内容审核:由于通过这种方式编码的数据在显示时是不可见的,人工审核员或审查者无法发现它们的存在。
2. 为文本添加数字水印:目前已有一些技术可以通过在文本中添加细微变化来实现「数字水印」标记,这样当文本被发送给多个接收者后发生泄露时,就能追踪到最初的接收者。变体选择器序列是一种特殊方法,它不仅能在大多数复制/粘贴操作中保持不变,还支持任意密度的数据嵌入。
本文为澎湃号作者或机构在澎湃新闻上传并发布,仅代表该作者或机构观点,不代表澎湃新闻的观点或立场,澎湃新闻仅提供信息发布平台。申请澎湃号请用电脑访问。