从文字到行动 / 06 OF 20

一句话没读完,前面已经忘了?

NLP、Agent与世界模型的20段故事
资料核查截止 2026年9月7日 · 正文约 1,757

设想我们要把“小王把书还给管理员”译成英文。现在逐渐加料:小王把昨天借来的那本蓝色的书,还给了正在登记新读者的管理员。

人还的是同一本书,句子却像报销流程一样,途中多了好几道手续。机器读到“管理员”时,需要保留谁在还、还什么、此前已经读到了哪里。只看最近几个词,显然容易把主角落在门外。

上一代方法为每次预测截取一个固定窗口。现在的问题是:能不能让早先读到的信息,随着阅读继续往前走?

边读边改一份状态

循环神经网络,英文简称RNN,采用一种反复更新状态的办法。这里的状态是一组数字,概括此前输入对当前计算有用的信息。

读“小王”时,用这个词的表示和初始状态算出新状态;再读“把”,把“把”的表示与刚才的状态合起来,再算一次。每一步使用同一套更新规则,但输入和状态不断变化。读得早的词因此有机会通过状态影响后续,而不必等它恰好还在一个短窗口里。1

可以把它想成边读边修改便笺,但便笺上没有整整齐齐的“主语:小王”。实际存的是数字,信息通过训练形成的计算关系保留。这个比喻只对应“前一步结果交给下一步”,不意味着机器偷偷写了一份中文摘要。

设想把开头改成“管理员把昨天借来的那本蓝色的书还给小王”。词差不多,顺序变了,状态经过的更新次序也变了。合适的训练应让最终预测反映“谁还给谁”的变化。循环提供了利用顺序的结构,是否学对关系,仍得由数据和结果检验。

和词向量那一篇相比,共享的不只是词之间的经验,还包括不同阅读位置使用的更新办法。一本便笺从头传到尾,页数没增加,肩上的责任倒是越来越重。

便笺为什么会越来越难用?

把“昨天借来的”扩成一整段插入说明。开头“小王”的影响,需要穿过许多次状态更新,才能帮助末尾预测。训练时,末尾的误差也要沿着这条链往回传,才能调整前面怎么处理“小王”。

在普通循环网络中,反复相乘的影响可能越来越小,也可能越来越大。前一种让早期步骤收到的调整信号变弱,后一种让调整不稳定。这里说的“忘”,并非一个词过了某个时限被定时删除,而是有用信息难以保留,或者训练难以学会保留它。

1997年,Hochreiter和Schmidhuber提出长短期记忆网络,英文简称LSTM,针对这类长距离学习困难设计了专门的记忆单元和控制结构。2

先理解其关键选择:如果每读一个新词,都把原有内容大幅改写,保留信息就困难。LSTM提供一条更适合持续保存内部数值的路径,并用学出来的“门”调节信息写入和读出。门是计算出来的数值控制,不是一名管理员判断“这句重要,请存档”。

在还书例子中,我们希望与“小王”有关的信息能穿过颜色、日期等插入内容,同时又把“蓝色”保留到需要翻译颜色时。它不要求所有内容永远不变,而是学习在不同位置怎样更新与使用记忆。好记性也需要选择,否则便笺很快成为会议纪要——什么都写了,谁负责却找不到。

LSTM缓解了训练与保存信息的困难,没有得到无限容量。不同后续版本还调整了门控设计;不能把后来常见的全部结构,都倒写成1997年原版已经具备。

读完一段,再生成另一段

还有一个问题:中文输入多少词,英文输出不一定有多少词;两边的顺序也不同。不能规定读一个中文词,就立即吐出一个英文词。

2014年,Sutskever、Vinyals和Le研究了一种序列到序列方法:一个多层LSTM读完输入,把结果交给另一个LSTM;后者逐步生成译文,直到产生结束标记。前者称编码器,负责把输入变成内部表示;后者称解码器,负责据此生成输出。1

设想在我们的教学例子中,编码器读完还书句子。解码器根据最终表示,先给英文开头的候选分配概率,选出一个,再结合已经生成的内容预测下一个。输出长度由生成过程决定,不必与中文逐词对齐。训练时则用成对的原文和译文,推动整套参数更准确地预测真实译文。

原论文还有一个反直觉操作:把源句词序倒过来输入,目标译文仍按正常顺序输出。它在论文的英法翻译实验中改善了结果。作者将效果与部分输入输出之间更短的依赖距离联系起来,同时明确表示没有完整解释。1

这不是发现法国人应该倒着读英文,更不能保证对所有语言和架构都有效。它说明,信息走多远、经过多少步,会实实在在影响学习。

能记住长句,不等于总该只交一份摘要

现在让解码器译“蓝色”。在上述方案里,它主要依赖编码器交出的固定规模表示以及自身状态,不能像人一样随手回原文核对颜色。原文越复杂,最终表示承担的信息越多。

这是一种潜在瓶颈,但不能把它写成“长句必败”。刚才那篇2014年论文就报告了模型在其长句测试上的良好表现。具体成败与结构、数据、训练和输入处理有关,不能为了给下一种方法登场腾地方,就替上一种方法安排一场惨败。1

真正值得追问的是设计选择:既然阅读时已经产生了沿途状态,为什么翻译时只能主要依靠最后交出的那一份?能不能保留各个位置的表示,在写到颜色、人物、动作时分别调用?

循环网络让早先信息可以传下去,LSTM让某些信息更容易被保留。下一步,则要改变查阅办法。还书的管理员终于有望拿到原始借阅记录,而不只是同事凭记忆写的便条。

参考资料

  1. Sequence to Sequence Learning with Neural Networks,Ilya Sutskever、Oriol Vinyals、Quoc V. Le,2014。论文
  2. Long Short-Term Memory,Sepp Hochreiter、Jürgen Schmidhuber,1997。原论文