这一讲我们将介绍自然语言处理的另一大应用——机器翻译。
- 首先需要明确的是,这里的机器翻译并不完全覆盖所有的翻译任务。对于一些文学作品(如诗歌)的翻译,其需要极强的创造性,因而不在我们机器翻译讨论的范畴内。这里我们主要讨论的翻译对象是日常的信息(如网页内容,杂志新闻等)。
- 机器翻译一般使用编码器-解码器架构。在上上讲中我们简要提到了这一架构,它非常擅长处理复杂的语言序列映射。
机器翻译
在介绍机器翻译的算法之前,我们先简单了解一下不同语言之间的差异。(研究这些差异的邻域也被称为语言类型学)
- 首先,不同语言在简单陈述句中动词、主语和宾语的基本语序上有所不同。比如,德语、法语、英语和汉语都是SVO(主语—动词—宾语)语言,即动词通常位于主语和宾语之间。印地语和日语则是SOV语言,动词通常位于基本分句末尾;爱尔兰语和阿拉伯语则是VSO语言。
- 其他语序偏好会因语言而具有各自特点。在一些SVO语言(如英语和汉语)中,形容词通常位于名词之前;而在西班牙语和现代希伯来语等语言中,形容词位于名词之后。
- 语言间的所有这些语序差异都会给翻译造成困难,要求系统在生成输出时完成大幅度的结构重排。
- 其次,不同语言之间的词汇语义可能也存在差异,无法做到语义完全对应;不同语言对词汇的语法约束也不尽相同(如英语中的复数/时态在中文中不会直接体现);有时一种语言的某些词汇在另一种语言中没有对应的表达(称为词汇空缺)。
- 最后,不同语言在倾向省略哪些成分这一类型学维度上也有差异。英语等语言在谈论语篇中已经给出的指称对象时,要求使用显式代词;另一些语言则有时可以完全省略代词。【这可以用指称密度来度量】
编码器-解码器
机器翻译的标准架构是编码器-解码器Transformer,也称序列到序列(seq2seq)模型。【当然,序列到序列模型最初是指代使用循环神经网络+LSTM的架构,可参见神经机器翻译】
-
大多数机器翻译任务采用一种简化假设:每个句子可以独立翻译。因此下面的讨论中主要以句子为基本单位。
-
机器翻译使用的训练数据是源语言句子都与目标语言句子组成的平行句对。在学习时,先将句子拆分为词元序列,再使给定源语言词元序列的条件下最大化目标语言词元序列的出现概率:
在编码器-解码器架构中,编码器接收输入词,产生中间上下文;解码时,系统取得,逐词生成输出:
-
在编码器-解码器系统中,上述词元序列主要使用BPE算法(可见文本预处理)得到。现代编码系统不会直接使用BPE算法,而一般采用它的两个变体:WordPiece和unigram。下面我们就具体介绍这两个方法:
-
WordPiece不选择频率最高的词元对合并,而选择最能提高词元化结果的语言模型概率(即n-gram条件概率乘积)的合并。其具体步骤如下:
-
用字符初始化WordPiece词典(例如 Unicode 字符的一个子集,其余字符统一归入特殊未知字符词元)。
-
重复以下过程,直到词表包含个WordPiece(一般取8K~32K):
- 使用当前WordPiece集合,在训练语料库上训练n-gram语言模型。
- 考察把当前词典中两个WordPiece串接起来形成的所有新WordPiece,选择最能提高训练语料库的语言模型概率的一项。
最终,WordPiece会在每个词元开头加上特殊符号(如
_或##)。 -
-
unigram算法也称SentencePiece算法(名称来源于SentencePiece库),它不通过合并词元逐步构建词表,而从包含每个Unicode字符及所有高频字符序列(对使用空格的语言还包括全部空格分隔词)的庞大词表开始,迭代移除词元,直至达到目标大小。【具体细节可参考hugging face文章】
-
-
标准的机器翻译训练语料库以对齐句对的形式提供。给定互为翻译的两篇文档,产生句子对齐通常需要两步:
- 计算代价函数:接收一段源语言句子和一段目标语言句子,返回衡量二者互为翻译的可能性分数。
- 一个代价函数的例子如下: 其中与分别表示源语言与目标语言文档,是分别从两篇文档中随机采样的句子,表示文档句子数量。
- 对齐算法:利用这些分数找出文档之间的良好对齐。一般采用动态规划(在之前提到的最短编辑距离基础上进行扩展)实现。
- 另外,也可以选择删除有噪声的句对(如准确性低的句对或过于相似的句对),这有助于清理语料库。
- 计算代价函数:接收一段源语言句子和一段目标语言句子,返回衡量二者互为翻译的可能性分数。
编码器-解码器Transformer架构
- 下面我们就可以正式开始介绍编码器-解码器Transformer模型了。编码器部分与上上讲提到的双向Transformer编码器结构基本相同,最终会得到输出表示。下面重点阐述解码器部分:
- 解码器本质上是一个关注编码器表示、逐个生成目标词的条件语言模型。在每个时间步,它以源句和此前生成的目标语言词为条件生成一个词元。
- 解码器在LLM使用的decoder-only架构基础上在Transformer块的多头注意力层与前馈层之间增加了一个交叉注意力层(有时也称为编码器-解码器注意力层或源注意力层)。它与之前的多头注意力层形式相同,主要区别在于它的键和值来自编码器输出。交叉注意力的计算表达式具体如下: 其中表示上一层的Transformer块输出(已经过层归一化)。
- 与LLM的预训练方法一样,编码器-解码器的训练同样使用交叉熵损失函数(或正确词元概率负对数),同时也使用教师强制。
解码方法
- 机器翻译使用的解码方法也与LLM有所不同:它不使用贪心解码或温度采样,而使用一种称为束搜索(beam search)的解码方法。
-
束搜索把解码建模为在可能生成结果空间中的搜索。该空间表示为搜索树,分支表示动作(生成一个词元),节点表示状态(已经生成某个前缀)。目标是寻找最佳序列,即概率最高的字符串。
-
对于这一目标,一种解决方案是使用动态规划维特比算法,但其不适用机器翻译这种输出决策之间存在长距离依赖的生成问题。另一种直接的想法是穷举搜索,但这样效率显然又太低。
-
束搜索采用的是一种启发式搜索方法,它在每一步保留个可能选项【称为束宽(beam width)】。其具体过程如下:
- 首先,经过softmax层得到词表概率分布,从中选出个概率最高的词元作为搜索前沿(search frontier),也称为假设;
- 后续每一步,把个最佳假设分别交给不同解码器扩展;每个解码器都对整个词表生成softmax,把假设扩展到每个可能的下一词元。这个假设分别按评分,即当前词选择概率乘以通向它的路径概率。随后将其剪枝为最佳个,这样每一步都只需要个解码器。【一般取5~10】
- 重复上述过程持续到生成
EOS,表明已找到完整候选输出。此时从前沿移除完成的假设,束大小减一。搜索持续到束减为,最终得到个假设。
当然,上述评分也可以使用对数概率:
这样每一步只需把当前前缀句子的对数概率与生成下一词元的对数概率相加即可。
-
上述算法还可能存在一个小问题:最终得到的假设输出序列长度可能不同,而越长的输出结果评分概率越低,从而导致算法倾向选择较短的输出。对此,我们可以将评分进行长度归一化:
-
- 另一种解码方法是最小贝叶斯风险(minimum Bayes risk, MBR)解码,其表现在一些情况下会优于束搜索,通常也优于温度采样算法。
- MBR解码的核心思想是:不选择概率最高的译文,而选择预期错误最少的译文。具体而言,MBR通常会在某组候选译文中选择拟合指标最相似的候选项。具体公式为: 其中为候选译文集合,为译文与的相似度指标,可使用chrF、BERTScore或BLEU。(在下面会详细介绍)
- 除了机器翻译之外,MBR解码也适用于语音识别、图像描述等任务。
评估指标
如著名翻译家严复所言:翻译的三大标准是“信、达、雅”。对于机器翻译的结果,我们同样可以用这一标准进行人工评估。具体而言,可以让人工评估者对翻译结果的流畅性与充分性进行打分,或者对候选译文进行排序。
- 不过,与之前对LLM的评估一样,人工评估耗时且成本高,因此引入一些自动评估指标可以提高评估的效率,甚至可以作为训练的损失函数。常用的自动评估指标如下:
-
chrF(character F-score,字符F分数)
这是最简单稳健的评估指标,直接根据机器翻译的候选译文与人工参考译文重叠的字符n-gram数量为其评分。具体而言,首先计算字符准确率与字符召回率:- chrP(字符精确率):所有-gram()准确率(候选译文与参考译文共现n-gram与候选译文n-gram总数比值)的均值;
- chrR(字符召回率):所有-gram()召回率(候选译文与参考译文共现n-gram与参考译文n-gram总数比值)的均值;
然后就能得到chrF的计算公式(与常见的分类F-score完全一致):
通常取。研究表明,chrF在许多语言中与人工判断高度相关。
- 在比较两个翻译系统时,可以采用配对bootstrap显著性检验。然而,chrF也存在一定的局限:它无法检测出短语的长距离移动,也无法评估文档的跨句属性,在比较差异很大的系统时表现不佳。因此,chrF最适合评估同一系统的改动。
-
BLEU(BiLingual Evaluation Understudy)
BLEU只关注译文的准确率,会对整个候选译文集合统一计算分数。具体计算公式为:其中表示所有句子的词-gram准确率(会经过截断修正),表示在整个语料库上计算的长度惩罚,计算公式为:
其中与分别表示候选译文的长度与参考译文的最短长度。
注:使用BLEU比较之前要先保证词元化方法统一。
-
基于嵌入的自动评估
上述指标使用精确的字符n-gram匹配,这一标准可能过严。现代的机器翻译系统一般会使用BERT等嵌入,通过嵌入相似度衡量评估候选译文。【可参见BERTScore开源库,不详细展开】
-
至此,NLP系列笔记正式完结!当然自然语言处理的内容远不止笔者涉及的这些,不过目前的内容笔者觉得也算比较完整了。
至于未来是否会出现颠覆Transformer与LLM的NLP技术,Let’s wait and see……
