设想你读完一段借阅记录,原文随即被收走,接下来只能凭一张摘要翻译。短句还好:“小王把书还给管理员。”长句开始加上昨天、蓝色、新读者,再加几处说明,摘要逐渐兼任储物间。
上篇的编码器与解码器已经能完成“读一段、写另一段”,但有些设计把原文集中压进一个固定规模表示。一个自然的改动是:别收走沿途记录。译到哪里,就重新看看哪些输入信息有用。
这个改动看上去很像开卷考试。不过,机器没有手指,也没有人在卷面旁写“答案在第三行”。它需要一套能学习的查阅办法。
先让原文的每个位置留下记录
2014年公布、后发表于2015年国际学习表征会议的Bahdanau、Cho与Bengio论文,为神经机器翻译引入了一种联合学习对齐与翻译的注意力机制。这里的注意力,是根据当前生成需要,对不同输入表示分配不同权重。1
先看“可查阅的东西”怎样产生。论文使用双向循环编码器:一条链从前往后读,一条链从后往前读,再把每个位置两边的信息合起来。这样,“书”的位置保存的表示不只涉及“书”这个词,也带有周围语境。
设想沿用“小王把昨天借来的那本蓝色的书还给管理员”。读完之后,各位置都留下一份数字表示。它们不是一排互不相干的词典释义;“蓝色”附近的表示与这句话中的书有关,而不是与所有蓝色事物混在一起。
这个阶段仍有循环计算。注意力论文没有凭空提前造出Transformer,更没有让网络从此不必按序编码。它先解决另一件事:让解码器可以反复利用多处原文信息。
原来只有一张总便条,现在保留了一排带语境的便条。下一步的麻烦是:不能每译一个词,就把所有便条不分轻重地塞进口袋。
权重怎样改变本轮拿到的信息?
设想英文已经生成到需要表达颜色的位置。解码器此刻有自己的状态,里面包含已经生成内容的影响。系统拿这个状态,分别与各个原文位置的表示一起计算匹配分数。
然后把分数变成一组非负、合计为一的权重。为演示,假设“蓝色”附近得到0.7,“书”附近得到0.2,其余位置合计0.1。这些数字是自拟的,不是从论文或实际模型读取的注意力图。
接着不是只取“蓝色”三个字,也不是把中文直接贴进英文。系统把各位置的数字表示按权重缩放,再相加,得到本轮使用的上下文表示。0.7表示这一处对本轮组合贡献较多;它不是“模型有七成把握这本书是蓝色”。
解码器把这份本轮材料和自身信息一起用于下一词预测。轮到翻译“管理员”时,匹配分数重新计算,权重可以向句末移动。这就是“边生成边回头看”的具体操作:每一步都形成不同的信息组合。1
与上篇相比,改变的是原文信息进入解码器的路径。输入还是那句话,目标还是翻译;不同处在于不再要求同一份固定摘要从头到尾包办所有细节。蓝色终于可以在需要颜色的时候发言,不用从句首开始一直举手。
没有老师逐字画线,怎么学会看对地方?
如果每句话都要人先标出中文哪个词对应英文哪个词,省下的翻译劳动可能又以画连线的形式回来。
论文中的匹配计算本身带有可训练参数,并与翻译部分一起训练。训练目标推动模型给正确译文更高概率;误差信号也通过加权组合影响匹配参数,因此系统可以学到对当前翻译有用的分配方式。1
设想它总在应该输出颜色时集中使用“昨天”的信息,得到的颜色预测很差。这种预测误差能够影响整条计算链,包括颜色相关信息怎样进入本轮结果。反复训练后,合适的信息分配有机会得到加强。
但这不是人类语言学家藏在机器里逐句划分主谓宾。一个目标词可能需要多个源词,某个源词也可能影响多个输出位置。权重是连续分配的,通常称为软对齐;它不像小学连线题,要求一端只能牵一只手。
历史上,统计翻译也研究词语之间的对齐。这里的变化是,对齐相关计算进入可一起优化的神经网络,不必把它理解为注意力第一次发现“翻译两边有对应关系”。
开卷能帮忙,不能替你读懂题
论文在自己的英法翻译比较中,发现该方法相对所用基础编码解码模型更能应对长句。这个结论有明确比较对象,不能扩张成“所有没有注意力的系统都不会翻长句”。上一篇介绍的另一项2014年研究,就采取不同设计并报告了良好的长句结果。1 2
再设想源句根本没写书是什么颜色。注意力再努力,也不能从不存在的信息中查出蓝色。又如“他”有两个合理指代对象,模型可能分配出看起来集中的权重,却选错了人。能够访问证据,与证据足够、使用正确,是三件事。
查阅也需要成本。每生成一步,都要对多个源位置做匹配和组合。长原文与长译文意味着更多此类计算。我们改善了信息入口,并没有获得免费的无限阅读。
开篇的问题因此有了明确答案:可以回头看,方法是保留原文各处表示,用当前生成状态计算权重,再组合所需信息。它让翻译过程不必死守一份总摘要。
但我们目前主要讨论的是“译文怎样查看原文”。接下来要把视线移到原文内部:读“书”的时候,能不能直接汇集“小王”“蓝色”“还给”的信息,而不必让消息沿着一长串阅读步骤挨个传来?
开卷考试已经获准,下一轮要改的是教室里的通信方式。