真的好久没来更新学术相关的专栏了,主要最近是真的忙啊,余出来的时间又去剪视频了。当然另一个重要的原因是最近确实没有特别有趣的论文,我也不想做什么年度总结啥的。然后就看到了这篇论文:
1.文字顺序不影响GPT-4的阅读?
没错,这篇文章研究发现文字顺序不影响GPT-4的阅读。
肯呢个会有朋友说,这也没什么大不了的嘛,人类也能做啊,你把标题改成“文字影序顺响不GPT-4读阅”也不是不能看对吧,但这件事对于大语言模型(LLM)来说还真没那么容易,也就是来到我们这篇打算展开讲讲的token
2.token
token也算是曾经挖过的坑了,主要是很多时候确实没有填这个坑的必要,毕竟这个系列还是主要介绍“现在的AI在研究什么”这样high-level的问题。
token一般不做翻译,如果硬要翻译的话一般叫做“词元”“子词”之类的,以英语为例,就是介于字母和单词之间的一个单元,例如,在很多视频评论区都会出现的“sweet”在token层面可能就会被拆成“sw”和“eet”这两个token
为什么需要token呢?直接用字母或单词不好吗?原因还是有很多的,这里稍微介绍一些:
(1)数量比较合适。如果我们用字母的话,符号数量会比较少,用单词的话会比较多,用token比较合适
(2)对拼写错误和形式变换有一定的应对。例如,我如果觉得一个视频真的太甜了,我会用“sweeeeeet”这样的词汇,而我们不太可能为这样的单词单独建立一个单位,那这个单词可能就当做什么错误单词被扔掉了,但显然这个词可能在这句话中很重要。如果用token的话,也许就会拆成“sw”“eeee”“eet”这样的,你还是可以从“sw”“eet”中还原出sweet来的,也能认出中间的是加重的重复。初次之外,例如我们把sweet拼写错误成sweat了,那么“sw”的信息还在,那么LLM就有可能意识到这个拼写错误。当然也是一定的应对。
(3)有共性。作为表音语言,英语中很多相同的发音可能对应相似的意思,这时候用token就可以一定程度上捕捉单词见的“共性”
(4)可扩展性强。我们可以插入一些特殊字符啥的,也有一些研究把视觉也整合进来,做了个voken,可见token是可以被拓展为多模态的。
但不管怎么说吧,用token作为语言模型输入的基本单位已经是广泛使用的了。当然,token不是随便乱分的,也是需要数据来进行自动构建的,这里不展开。
3.token带来的不便
token虽然广泛使用,但也就意味着我们人类看文本和LLM看文本的底层单位就是不一样的,这往往使得一些我们看起来可能很简单的问题对于LLM来说却意外复杂,例如:
(1)颠倒单词顺序。这个看起来很容易的任务能难道很多LLM的,因为LLM看文本是token的,例如它们就很容易把“sweet”的颠倒写成“eetsw”
(2)提取单词的最后一个字母。例如给定“Apple John Table Anna”,提取这四个单词的最后一个字母并连起来。人类做起来是真的简单,但很多LLM都做不来的(有几个版本的ChatGPT是无法再zero-shot模式下给答案的,但是CoT加持下是可以的)
对于乱序也是一样,毕竟我们打乱文本还是按照字母为单位的,这也就意味着token几乎是完全的混乱,或者说面目全非,相当于我们把字母本身给拆掉然后胡乱组装在一起,这可不是随随便便就能看的了
4.本文的实验
本文一共就两个任务,如图:
即加扰句子恢复和加扰问答,所选用的数据集属于难度不至于很低也不会很高的那种,包括多选的阅读理解、需要多步推理的数学问题等。加扰动的方法主要有全随机、首字母不随机、首字母和最后的字母不随机三种,并且扰动幅度也会逐渐增大。
随着难度越来越高,大部分LLM都承受不住,最终只有GPT-4在高强度扰动下表现依然还可以(也不能过于难为人家是吧)
这个结果其实很让人惊讶,毕竟我们完全不知道在token几乎乱七八糟的情况下GPT-4究竟是怎样正常运行的?难不成有在内部再对token进行处理的我们不知道的机制(说的好像我么对GPT-4的运行原理理解的很清楚似的)。
当然,我对中文的token不熟啊,所以你们可以去文心之类的试下中文乱序情况如何,有些人说简单的扰动还是可以处理的。
5.结语
这研究真有意思,我还做了表情包,期待GPT-4取代梅莉和伍进行交谈的场景(什么冷门梗):
其实之前也有类似的好玩的研究,例如如果我们用密码和GPT-4交流(没错,人家确实可以这样交流),那么GPT-4就更容易生成有害内容,但当时也没多少人往token这个方面去想。
阳光数码爱好者 2024-11-15
Nint任拓-数字零售专家 2024-11-15