<p>> <strong>编者按:</strong> 难道语言模型对破折号的偏爱,真的只是因为它们“喜欢”吗? > > 我们今天为大家带来的文章,作者的核心观点是:当前主流大语言模型对破折号的偏爱,很可能源于其训练数据中大量引入了 19 世纪末至 20 世纪初的纸质书籍 —— 这些文本本身就比当代英语更频繁地使用破折号。 > > 文章系统梳理并逐一反驳了多种主流解释,然后通过分析标点使用的历史趋势、尼日利亚英语语料库统计数据,以及 GPT-3.5 到 GPT-4o 破折号使用激增的时间节点,有力支撑了“旧书数字化”这一最合理的假说。 > > 尽管这一解释属于猜想,尚未得到官方证实,但它为我们理解 AI 写作风格提供了一条有趣的线索。</p>
作者 | Sean Goedecke
编译 | 岳扬
如果你让大多数人说出 AI 生成文本的一个标志性特征,他们很可能会说破折号 —— 就像这样。语言模型对破折号的使用已频繁到让真正喜爱破折号的真人使用者望而却步[1],生怕自己的文字被误认为 AI 所作。更令人意外的是,要想通过提示词让模型避免使用破折号,竟出奇地困难:比如 OpenAI 论坛上的这个帖子[2],许多用户在此分享了自己失败的尝试经历。既然如此,我们居然至今未能真正破译语言模型痴迷破折号的原因,着实有些诡异。
01 难以令我信服的几种解释
一种常见说法是,正常的英语文本中本来就大量使用破折号,因此这只是模型从训练数据中学到的行为。我觉得这很难令人信服,原因很简单:如果 AI 使用破折号的频率与人类相当,那它就不会比其他标点符号更引人注意了。
另一种我不太认同的解释是:AI 模型喜欢破折号,是因为它用途太灵活。当模型试图预测下一个 token 时,使用破折号能让它保留更多选择 —— 既可以继续当前话题,也可以突然转向新观点。既然模型的目标只是选择下一个最可能出现的 token,那它会不会只是因为想“稳妥行事”,所以选了破折号?我不这么认为。首先,其他标点符号同样具备灵活性;其次,“稳妥行事”这个说法本身也不太适合用来理解模型如何生成文本。
还有人认为[3],AI 使用破折号是因为模型训练过程显式地偏向简洁性,而破折号的词元效率很高。根据我对 OpenAI 分词器[4]的测试,破折号本身并不天然更省 token,但可以想象,不用它的话可能就得写一些连接词,比如 “, therefore”。尽管如此,我依然不信这套说法。许多破折号(比如常见的 “it’s not X – it’s Y” 结构)完全可以换成逗号,而逗号同样简洁。此外,我也不认为 GPT-4o 会执着于简洁到这种程度,非要对标点符号做这种优化:如果它真想节省 token,大可少说些废话。
02 破折号的使用会不会是通过 RLHF 从非洲英语中引入的?
我花了不少时间研究的一种理论认为,破折号的使用可能反映了 RLHF 标注人员的英语使用习惯。语言模型训练的最后阶段包含 RLHF(基于人类反馈的强化学习):简单来说,数百名测试人员会与模型互动,并对模型的输出进行打分,这些评分再被反馈给模型,以提升其友好度和实用性。
出于成本考量,AI 公司倾向于在生活成本较低但拥有大量英语流利者的国家开展此项工作。对 OpenAI 而言,就是肯尼亚、尼日利亚等非洲国家。但这一决策带来了一个有趣的副作用:非洲英语与美式或英式英语存在细微的差异。例如,非洲英语更频繁使用 “delve” 这个词,这也解释了[5]为什么 GPT-4o 特别喜欢 “delve”(以及其他华丽辞藻,比如 “explore” 和 “tapestry”)。
那么,非洲英语是否大量使用破折号,从而导致非洲的 RLHF 工作者更倾向于给包含破折号的回答打高分?这个解释看似完美,但我认为并不成立。我获取了一份尼日利亚英语文本的数据集[6],并统计了破折号的出现频率。结果显示,破折号仅占全部词汇的0.022%。而一篇关于英语文本中标点符号使用频率的论文[7]估计,整体破折号的使用率通常在 0.25% 到 0.275% 之间:
> 破折号的使用在 1750 年后开始增加,并在 1860 年左右达到顶峰(约 0.35%),此后持续下降,直到 1950 年代,之后开始在 0.25% 至 0.275% 之间波动。本研究中标点符号的频率是相对于语料库的总词量计算得出的。
请先记住 1860 年破折号使用率达到顶峰这一点,后文会提及。但就目前来看,尼日利亚英语实际上更少使用破折号。因此,我认为破折号的过度使用与 “delve” 的高频出现并非源于同一机制。
03 纸质媒体的数字化
关于破折号,有一个有趣的现象:GPT-3.5 并不怎么使用它。而 GPT-4o 使用的破折号数量大约是前代模型的 10 倍,GPT-4.1 则更为严重。 不过,Anthropic 和 Google 的模型确实也会使用破折号,甚至连开源的中文模型也使用破折号。那么,在 2022 年 11 月到 2024 年 7 月之间,究竟发生了什么变化?
一个关键变化是训练数据的构成。2022 年时,OpenAI 几乎可以肯定是使用公开互联网数据和来自 LibGen 等网站的盗版书籍混合进行训练。然而,随着语言模型的强大能力显现出来,AI 实验室迅速意识到,他们需要更多高质量的训练数据 —— 这意味着要扫描大量纸质书籍。只有 OpenAI 员工知道他们是否以及何时开始扫描书籍,但法庭文件[8]已披露,Anthropic 是在 2024 年 2 月启动这一流程的。我们有理由推测 OpenAI 也采取了类似的行动。换句话说,2022 到 2024 年间,训练数据中新增了大量纸质书籍。
还记得上文提到的那项标点使用频率研究吗?它指出破折号的使用率在 1860 年左右达到顶峰。我认为一个合理的假设是:AI 实验室所数字化的书籍,相比盗版书籍更接近 1860 年的语言风格。直观来看,盗版内容往往倾向于当代流行文学 —— 因为这些才是读者愿意下载的。如果 AI 实验室希望超出这一范围,他们就得去购买更古老的书籍,而这些书很可能包含更多破折号。由此,我们得出了我认为最合理的解释:
当前最先进的模型依赖 19 世纪末到 20 世纪初的纸质书籍作为高质量训练数据,而这些书籍使用的破折号比当代英语散文多出约 30%。这就是为什么很难让模型停止使用破折号 —— 因为它们是从充满破折号的文本中学到英语的。
我要感谢 Maria Sukhareva 的这篇博客[9],正是她让我注意到这一点。虽然我不同意她关于破折号具有 structurally preferred(译者注:模型本身更“喜欢”或“偏向”使用破折号,即使输入数据中破折号并不特别多。)的观点(原因已在上文简要说明),但我认为她提出的“数字化进程推动破折号的使用”这一说法非常可信。若想看更具体的例子以及类似观点,也可以参考这篇文章[10],其中展示了一些经典著作中破折号的惊人数量 —— 我最爱的《白鲸》(Moby-Dick)竟包含 1728 个破折号!
04 总结
关于模型过度使用破折号的现象,现有解释可归纳为三大类:
第一类是模型结构驱动论,认为自回归模型天生偏好破折号 —— 比如因为它节省 token、保留更多表达可能性,或者其他类似原因。此说法难以令人信服,因为 GPT-3.5 并没有过度使用破折号,而且这也不符合我对模型推理机制的直觉。
第二类是 RLHF 影响论,主张人类评分者更青睐破折号,因其能使行文更口语化,或符合 RLHF 工作者所处英语区的使用习惯。我认为地域差异论缺乏依据,但“更口语化”的说法或许有道理,只是目前难以找到确凿证据支撑或否定它。
第三类是训练数据决定论,强调破折号本就大量存在于训练数据中。虽然我不认同这是根本原因,但确实认为某些高质量训练数据(特别是 20 世纪初的印刷书籍)中破折号比例过高。总体而言,这仍是目前最具说服力的解释。
05 Final thoughts
以上推论目前仍主要基于推测。 也许我对 OpenAI 开始数字化书面文本的时间判断有误。如果他们在 GPT-3.5 之前就已开始,那破折号的泛滥就不能归因于此。当然,如今训练的模型至少部分受到了其他 AI 模型输出的“污染” —— 要么是故意用合成数据训练,要么就是在抓取互联网文本时不可避免地吸入了大量 AI 生成内容。
我仍有些困惑的一点是:如果破折号之所以常见,是因为它是 19 世纪末到 20 世纪初写作风格的特征,那为什么 AI 生成的文本读起来并不像《白鲸》? 模型是否有可能只吸收了旧式英语写作中的一些碎片化元素(比如标点符号),却仍产出听起来很现代的文本?
我也可能错了 —— 新数字化的内容未必就出版年代更早。盗版书籍确实可能偏向当代作品,但大量已进入公有领域的旧书是否足以压倒这种偏向?
还可能存在一个更简单的解释:比如,破折号读起来更口语化,因此受到 RLHF 评分员的青睐,从而形成恶性循环,导致模型越来越频繁地使用破折号。这似乎与 Sam Altman 某次访谈[11]中“因用户喜爱而增加破折号”的说法吻合。但我不知道该如何证实或证伪这一点。
总的来说,我仍然惊讶于:对于 AI 文本最显著的特征之一,居然没有广泛的共识解释其成因。 我个人仍倾向于认为,数字化 19 世纪末至 20 世纪初的著作是主要原因 —— 但如果曾参与 GPT-3.5 到 GPT-4o 之间 OpenAI 工作(或因其他原因知情)的人能确认这一点,那就再好不过了。
编辑补充:这篇文章在 Hacker News[12] 上收到了一些评论。其中有一条有趣的评论[13]指出,Medium 的 CEO 认为责任在 Medium —— 因为 Medium 会自动将两个连字符(”—”)转换为一个破折号,而 Medium 曾是高质量训练数据的来源。
我完全无法认同这种说法。如果问题是“为什么人类常用连字符或双连字符代替破折号,而 LLM 却输出真正的破折号字符”,那我或许会考虑这种排版相关的解释。但真正的问题是:“为什么 LLM 使用破折号的频率远高于人类?” —— 这里指的是那种功能类似括号、或比逗号更强调语气的标点用法。
因此,那些提及 Unicode[14]、俄语训练数据[15]、维基百科排版规范[16]或 OCR 识别错误[17]的评论令我费解。这些因素根本无法解释模型为何会“像人类那样使用破折号”!如果在训练中把连字符(比如 “double-crossed” 中的)误读为破折号,模型更可能学会把破折号当连字符用,而不是学会用破折号来插入补充说明或制造语气停顿。其他类似解释也存在同样问题。
END
本期互动内容 🍻
❓你觉得语言模型偏爱使用破折号是什么原因呢?
文中链接
[1]https://www.reddit.com/r/OpenAI/comments/1mk62b1/comment/n7gnqpb/
[2]https://community.openai.com/t/cannot-get-responses-to-not-include-dashes-and-em-dashes/1023216/7
[3]https://msukhareva.substack.com/p/the-mystery-of-emdashes-part-two?
[4]https://platform.openai.com/tokenizer
[5]https://www.theguardian.com/technology/2024/apr/16/techscape-ai-gadgest-humane-ai-pin-chatgpt
[6]https://varieng.helsinki.fi/CoRD/corpora/ICE-NIG/
[9]https://msukhareva.substack.com/p/the-mystery-of-emdashes-part-two
[12]https://news.ycombinator.com/item?id=45788327
[13]https://news.ycombinator.com/item?id=45789077
[14]https://news.ycombinator.com/item?id=45790985
[15]https://news.ycombinator.com/item?id=45795391
[16]https://news.ycombinator.com/item?id=45788891
[17]https://news.ycombinator.com/item?id=45789129
本文经原作者授权,由 Baihai IDP 编译。如需转载译文,请联系获取授权。
原文链接:
https://www.seangoedecke.com/em-dashes/
</div>