打开网易新闻 查看精彩图片

想象一下这个场景。你把同样三句话打印在两张纸上,一张连成一段,一张分成三个自然段。内容一模一样,一个字都没改。但你会发现,读分段那张纸的时候,你的眼睛会在每一段结尾处很自然地停顿一下,好像喘口气;而读连成一段的那张纸,你得一路读到底才能松口气。

这就是这篇论文想追问的问题,只不过它问的不是人怎么读文章,而是AI怎么"读"文章。

**换行本身是不是信息?**

这个问题听起来有点怪。毕竟对于人类读者来说,答案几乎是不言自明的:当然是。段落之间的空行会让人停顿,会暗示"这里换了个话题"或者"这段告一段落了"。但对于处理文本的AI模型来说,这件事情远没有那么显而易见。

要理解这为什么是个真问题,得先说说AI模型是怎么"知道"一个词在句子里的位置的。

位置编码:AI怎么知道谁在前谁在后

假设你要让一个模型读一句话:"这是我爱的。你是原因。"模型需要知道每个词出现的先后顺序,不然"我爱你"和"你爱我"在它眼里就没区别了。为了解决这个问题,研究者们设计了各种位置编码方法,告诉模型"这个词是第5个,那个词是第8个"。

RoPE(旋转位置编码):一种主流的位置编码方法,通过旋转向量的方式告诉模型两个词之间隔了多远,两个词的关联度只取决于它们的相对距离,不取决于绝对位置。

这套方法用了很久,效果也确实不错。但它有一个隐藏的假设:文本的位置可以用一个数字来表示,第5个词就是第5个词,不管它前面有没有换行,有没有分段。

这篇论文的作者,来自的研究者Shuyang Xiang,觉得这个假设站不住脚。

她举了一个特别直白的例子。设想有两组文字,内容完全一样:

"句子A。句子B。句子C。"

句子A。

句子B。

句子C。

如果你把这两组文字拆成一个个词元(token,也就是模型处理文本的最小单位,可以理解成模型眼里的"字"),会发现它们的词元序列、顺序、词元之间的距离,全都一模一样。按照传统位置编码的逻辑,模型应该对这两段文字一视同仁。

但你会这样读吗?显然不会。分段的那一版给你的感觉是"这是三个独立的事情",不分段的那一版更像是"这是一件事情的三个侧面"。人类天生就能感知到这种差异,那AI呢?

这就引出了论文的核心问题:段落边界改变的到底是不是模型内部对词与词关系的判断,还是说,这只是人类的一厢情愿?

如果只用一把尺子量所有距离,会漏掉什么

要回答这个问题,得先弄清楚文本结构到底长什么样。论文里给出一个层级关系:

文档包含段落,段落包含句子,句子包含词元。

这是个嵌套结构,不是一条直线。这意味着,两个词元之间哪怕隔的距离(也就是中间有多少个词)完全相同,它们的关系也可能天差地别:可能在同一句话里紧挨着,可能分属同一段落里的两句话,也可能干脆是两个不同段落里的内容。传统的位置编码只看"隔了几个词"这一个数字,是没法区分这三种情况的。

论文里有一个挺硬核的论证:一个包含n个词元的序列,可以有2的(n-1)次方种不同的分段方式。这是个纯数学事实,跟任何实验无关,就是组合数学算出来的。

这意味着什么?意味着同一串词的排列顺序,理论上对应着天文数字般多的段落划分可能性。用一个一维的、线性的坐标去表示这么复杂的结构信息,天然是不够的。这就好比你想用经度这一个数字来描述一个人在地球上的位置,理论上可行吗?完全不行,你至少还需要纬度,甚至海拔。经度相同的两个人,可能一个在北极一个在南极,天差地别。

hRoPE:给每个层级发一把自己的尺子

既然一维坐标不够用,那就加维度。论文提出了一种叫hRoPE(层级旋转位置编码)的方法。

hRoPE:给每个词元同时标注三个坐标,段落编号p1、句子编号p2、词元编号p3,三者各自独立编码,互不干扰。比如坐标(3,4,5)就表示"第3段第4句第5个词"。

这里的关键设计是"独立"。三个坐标各自占用模型内部不同的通道,不会被压缩成一个混合的数值。这样做的好处是,研究者可以单独去"拧"某一个坐标,比如只改变段落编号p1,而保持句子编号、词元编号、以及词元本身完全不变。

这就好比你有一台老式收音机,音量、频道、音质分别是三个独立的旋钮,你想单独调音量的时候不会不小心把频道也换了。如果所有参数都挤在一个旋钮上,你根本没法做这种精确的实验:你一调,好几个东西同时变了,你也不知道刚才发生的变化到底是哪个参数造成的。hRoPE的三个独立通道,就是把段落、句子、词元这三个"旋钮"彻底分开,好让研究者能做干净的对照实验。

反事实实验:只改一个标签,看模型反应

有了这套独立的坐标系统,研究者就可以做一件很酷的事:反事实干预。

具体操作是这样的。拿一句话"这是我爱的。你是原因。"来说,原本两句话共享同一个段落编号。现在,保持所有词元不变,只把第二句话的段落编号悄悄改掉,相当于在"爱的。"和"你"之间凭空插入一个不存在的段落边界。

结果发现,模型的注意力(也就是模型在处理某个词时,会把多少"注意力"分配给其他词,这是Transformer模型判断词与词关系的核心机制)出现了明显的下降,第二句话对第一句话的关注度显著减弱。而作为对照的、没有段落坐标通道的模型,这种变化完全消失了。

这就证明了一件事:模型的注意力变化不是因为词变了,因为词根本没变,而是因为那个抽象的段落坐标变了。

这里必须解释一下注意力机制到底是什么。

注意力(Attention):Transformer模型判断两个词元之间关联强弱的核心机制,数值越高说明模型认为这两个词元关系越紧密,会在处理时互相参考更多。

论文还做了另一层验证,用来排除一种偷懒的可能性:会不会模型只是机械地对"多了一个坐标通道"这件事有反应,而不关心这个坐标里装的到底是什么内容?

为了检验这个疑虑,研究者用训练好的模型做推理测试,把真实的段落坐标换成四种不同的替代品:真实坐标本身、一个机械的周期性网格(比如固定每132个词就算一段,不管实际内容)、一个密度匹配的随机标签、以及把坐标直接设成一个常数(相当于抹掉这个信息通道)。

结果排序非常一致:用真实坐标时模型表现最好,用机械网格次之,用随机标签更差,直接抹掉最差。这个顺序在三个不同语料库、三次独立训练里都成立。

这说明模型不是在敷衍了事地"有个通道就行",它是真的学到了段落坐标里装的具体内容是什么,并且区分得出真实结构、伪装的规律、纯粹的噪音、完全没有这个信息,这四种情况的高下之分。

压缩,但不是所有压缩都一样

这里论文的故事出现了一个转折,也是全篇最耐人寻味的部分。

如果只满足于"段落边界确实影响了注意力"这个结论,故事到这里似乎就该结束了。但研究者接着问了一个更深的问题:段落边界处,注意力具体是怎么变化的?

答案是压缩。也就是说,当两个词元跨越段落边界时,模型给它们分配的注意力,会比同等词元距离下、但没有跨段落的情况要更低。用大白话说就是,模型会觉得跨段落的两个词"关系更疏远了",哪怕它们在纸面上隔的字数完全一样。

这本身没有让人意外,毕竟前面的干预实验已经证明了这一点。真正让人意外的是接下来这一步:研究者又设计了一个叫rand_axial的对照模型,它的架构和真正的层级模型一模一样,也有一个专门的段落坐标通道,唯一的区别是,这个通道里装的不是真实的段落信息,而是一个每一步训练都重新随机打乱的标签,密度和真实段落分布匹配,但内容毫无意义。

结果发现,这个纯随机的对照模型,居然也出现了压缩现象。

这一下子把之前那个看似干净的结论给复杂化了。如果随便塞一个随机标签进去都会导致压缩,那压缩这件事本身还能不能说明模型学到了"真正的段落结构"?

论文给出的答案是:能,但你得看压缩的深浅程度,而不是压缩本身存不存在。

真结构和假结构的差别,藏在压缩的深度里

研究者用一个专门设计的统计量,叫压缩深度(记作U*),来量化"跨段落时注意力被压低了多少"。这个量是在控制了词元距离这个混淆因素之后,才计算出来的干净指标。

具体计算方式是这样:先把词元之间的注意力取平均,然后发现注意力随词元距离呈指数衰减的规律,取对数把这个趋势拉直,再用线性回归剔除这个趋势,剩下的残差才是真正反映段落结构效应的部分。这个残差量记作Deff(有效距离效应)。

在三个不同类型的语料库上(维基百科文本、网页文本、Python代码),真实的层级模型(hrope_axial)和随机对照模型(rand_axial)都出现了压缩,但压缩的深度差异明显:在代码语料库和维基百科语料库上,真实结构的压缩深度明显超过随机对照,统计检验的置信区间完全不包含零,说明这个差距是可靠的;在网页文本语料库上,两者的差距没能被明确分辨出来,置信区间包含了零。

这个发现挺值得琢磨的。它说明"压缩"这件事本身可能只是任何一个密度匹配的坐标轴都会自带的某种通用反应,就像往水里扔一块石头,不管石头是什么材质,水面都会起涟漪。但涟漪的深浅,才真正取决于石头的分量。真实的段落结构,就是那块更重的石头。

论文的表格显示,代码语料库的压缩深度最深,达到-0.772;维基百科居中,-0.481;网页文本最浅,-0.305。这个排序本身也很有意思:越是结构严谨、段落边界越明确的文本(比如代码,每个函数块之间通常有明显的空行和缩进逻辑),压缩得越深。

这就好比你在图书馆里,如果一本书的章节划分极其规整、逻辑严密,你读到章节末尾时那种"该停一停"的感觉会特别强烈;但如果是一篇东拉西扯的网络杂谈,段落之间的界限本来就模糊,你读到所谓的"段落末尾"时,可能根本感觉不到明显的停顿。模型学到的压缩深度,某种程度上映照了这种人类阅读体验里的直觉。

寻找压缩深度背后的原因:一场没有圆满结局的搜索

既然压缩深度和语料库有关,那自然会问:能不能用一些语料库本身的统计特征,不借助模型,就预测出这个深度的排序?

研究者试了整整八种候选指标,归纳成三大类。

第一类是词汇持续性,简单说就是看相邻段落之间用词的相似程度会随着距离拉远而怎样衰减,衰减得慢说明段落之间联系紧密,衰减得快说明联系松散。这一类里包括了一个叫λstruct的核心指标,还有它的半衰点、局部衰减速率、累积持续性、以及一个作为负对照的零点交叉尺度,一共五个变体。

第二类很简单,就是段落的平均长度。

第三类是基于词嵌入的连贯性,用向量空间里段落与段落之间的余弦相似度来衡量语义上的连贯程度。

结果是,这三类指标里,没有一个能完整地复现压缩深度在三个语料库上的排序。词汇持续性指标λstruct给出的排序是维基百科最短、网页文本居中、代码最长,这和压缩深度的排序(代码最深、维基百科居中、网页文本最浅)对不上,维基百科和网页文本的位置整个反了。段落长度这一项也翻车了,代码和维基百科的顺序对不上。

相对来说,表现最接近的是基于词嵌入的连贯性指标。它至少能正确分辨出代码语料库和另外两个语料库之间的差异,虽然维基百科和网页文本这两者之间还是分不清楚。

这个结果诚实地告诉我们一件事:目前还没有找到一个纯粹基于文本表面统计特征、不依赖模型本身的量,能完全解释模型学到的这种压缩深度差异。这不是说这样的指标不存在,只是说,作者测试过的这几种,都没有完全命中。

这就好比医生想通过验血指标来预测一个人会不会得某种病,测了八项指标,发现有几项跟这个病有点相关,但没有一项能百分之百地对应上,那说明这个病背后的机制,可能比目前已知的这几项指标更复杂,还得接着找。

压缩曲线的形状:不是简单的加法能解释的

论文里还有一个挺有意思的数学论证,值得单独说一说。

在代码语料库和网页文本语料库里,压缩曲线呈现出一种先加深、后变浅的形状,也就是说注意力压缩程度会随着段落距离拉大而先增强,到某个点之后又开始减弱。这种"先强后弱"的形状,直觉上很容易让人猜测:是不是这里面有两股力量在拔河,一股是"段落内容相关性"导致的吸引力,随距离衰减;另一股是"干扰噪声"导致的排斥力,随距离增长,两者叠加就形成了这个先低后高的曲线?

研究者专门写了一个数学证明来检验这个猜测,结果发现:不成立。只要吸引力是单调衰减的,排斥力是单调不减的,两者相加得到的曲线必然是单调递增的,不可能出现中间那个凹陷的最低点。这个证明相当直接,通过计算相邻两点的差值,可以严格证明这个和函数永远是正的。

这个结果排除了一种最简单直观的解释,但没有给出真正的答案。论文坦诚地说,剩下最有可能的解释是一种"竞争性"的机制,也就是两股力量不是简单相加,而是通过softmax这种归一化机制互相争夺"注意力份额",一方增长会挤压另一方的相对权重。但这个假设论文没有进一步验证,留作了一个开放问题。

这种老老实实说"我们排除了A,但B还没验证"的态度,在论文写作里其实挺难得的。很多研究倾向于把一个排除法的结果包装成"我们发现了机制",但这篇论文很克制地只承认自己确实证伪了什么,没有过度延伸。

被掩盖的关键词:是少数高频词在撑场面吗

论文还做了一个挺细致的补充实验,检验这种压缩效应是不是主要由少数几个"关键词"贡献的。

具体做法是,找出对压缩效应贡献最大的前5%的词元,称为"枢纽词",然后在推理阶段把这些词元跨段落的注意力强行屏蔽掉,看看压缩深度会发生什么变化,同时设置了几组对照,包括屏蔽同等数量的高频词、屏蔽同等数量的随机词、以及屏蔽移除等量注意力数据量的随机词。

结果发现,如果只是屏蔽同等数量的随机词,压缩深度几乎不变;但如果屏蔽的是同等数据量(也就是同等数量的跨段落词对)的随机词,压缩深度会大幅度、非线性地下降,在网页文本语料库里甚至直接从压缩变成了扩张。这说明压缩效应的大头,其实是由"移除了多少注意力数据量"决定的,跟具体是哪些词没太大关系。

但在扣除这部分"数据量效应"之后,还剩下一个大小相当一致的残余效应,大约都在15个百分点左右,只不过这个残余落在不同的位置:在代码语料库里,这部分残余让压缩依然存在;在维基百科里,残余效应刚好把压缩效应完全抵消到接近零;在网页文本里,残余效应把曲线彻底推过了零点,变成了扩张。

这个差异背后其实藏着一个挺合理的解释:在代码里,出现频率最高的词往往就是空格、括号、运算符这些东西,它们本身就是语句和代码块边界的天然标志,屏蔽它们确实会破坏结构信息;而在自然语言文本里,高频词大多是"的"、"是"、"和"这种功能词,它们虽然常见,但本身并不承担划分段落边界的作用,屏蔽掉它们的效果就跟屏蔽一批随机词差不多。

这个补充实验的结论作者也说得很清楚:这只是一个探索性的分析,只用了单个训练好的模型,没有重复训练验证,不能当作解决了"压缩深度从哪里来"这个根本问题的证据,只是提供了一个侧面的观察角度。

这个研究到底告诉了我们什么,又留下了什么

把整篇论文的逻辑串起来看,其实是一个层层递进的故事。

第一层证明了段落这种抽象的层级结构,确实会因果性地影响模型内部的注意力分配,这不是文本表面词汇变化带来的假象,而是纯粹由"位置身份"造成的真实效应。

第二层进一步发现,这种影响表现为注意力的压缩,但压缩这件事本身并不足以证明模型学到了"真正的段落结构",因为随便给一个假的、随机的坐标轴,也会诱发类似的压缩反应。真正能区分真假结构的,是压缩的深度,真实结构压缩得更深,而且这个深度会随着语料库的不同而系统性变化。

第三层是一次没有成功的搜索,研究者试图用纯粹基于文本统计的量去预测这种深度差异,但测试的八个指标都没能完全命中,只有基于语义嵌入的连贯性表现相对接近。

作者自己在论文最后总结得挺坦诚:决定这个压缩深度的到底是什么,目前还是个悬而未决的问题。她甚至提醒读者,不要把这个"压缩深度"过度解读成模型真的具备了某种类似人类阅读理解的能力,这个类比虽然直观,但目前的证据只能支持到"模型对层级坐标有结构化、且和语料库相关的响应"这一步,说它构成了一套完整的几何理论,还为时过早。

写在后面

读完这篇论文,最让我觉得意外的地方,其实是那个"随机标签也会导致压缩"的发现。

很多研究在验证一个新方法有效的时候,往往满足于"加了这个模块之后效果变好了",就直接下结论说这个模块学到了什么什么东西。但这篇论文自己给自己设了一道更难的坎:先假设随便一个类似的架构改动,哪怕内容毫无意义,也可能带来类似的表面效果,然后专门设计对照实验去验证这一点,结果还真的验证出了这种"假阳性"的存在。

这提醒我,看到一个模型行为上的变化,不能只问"这个变化存在吗",还得追问"这个变化有多深,跟一个什么都不做但架构相同的对照比起来,差距在哪"。压缩存在不等于结构被学到了,深度的差异才是。这是一种挺值得搬到其他研究场景里去用的思维习惯。

另一个让我反复琢磨的地方,是那个关于"叠加两个单调过程无法产生中间凹陷曲线"的数学证明。这不是什么复杂的定理,推导过程几行字就能写完,但它精确地排除了一种看起来最顺理成章的解释。这种"用一个简单证明堵死一条直觉上很诱人的解释路径"的做法,其实是很多领域里推进认知边界的常见方式:不是每次都能立刻找到正确答案,但至少能明确告诉后来者,哪条路走不通。

那么,如果换成句子内部更细粒度的标点符号、从句、语气停顿这些结构信号,会不会也存在类似的压缩深度差异?论文里明确说没有去做这个延伸,作者自己也承认,句子内部的距离太短,很难把"结构差异"和"词元距离"这两个变量彻底分开。这道题目,还等着被继续问下去。

Q&A

Q1:hRoPE是什么?

A:hRoPE是一种层级旋转位置编码方法,它给每个词元同时标注段落、句子、词元三个独立坐标,能够让研究者单独调整某一层级的位置信息而不影响其他层级,用于研究段落结构对模型注意力的因果影响。

Q2:为什么随机标签也会让模型产生注意力压缩?

A:论文发现,只要给模型一个密度匹配的坐标轴,不管里面装的是真实段落信息还是每步都重新打乱的随机标签,模型都会表现出注意力压缩现象。这说明压缩本身不能证明模型学到了真实结构,真正能区分真假结构的是压缩的深度,真实结构的压缩明显更深。

Q3:这篇研究有没有找到能预测压缩深度的文本特征?

A:研究者测试了词汇持续性、段落长度、语义嵌入连贯性三类共八种基于文本本身的统计指标,结果没有一个能完全复现压缩深度在三个语料库上的真实排序,相对最接近的是基于词嵌入的语义连贯性指标,但仍有一对语料库的差异无法区分。