🕝论文阅读:Neural Machine Translation of Rare Words with Subword Units
2024-1-4
| 2024-1-5
0  |  阅读时长 0 分钟
type
status
password
date
slug
summary
category
URL
tags
icon

背景

神经机器翻译(NMT)模型通常使用固定的词汇表,词汇表通常限制在 30,000-50,000个单词;但翻译是一个开放词汇的问题,固定词汇表有以下几个问题。
  1. 罕见词:固定词汇表中不包括罕见词,我们又无法不能生成词表中没出现的词,这使得翻译数据集中的罕见词变得困难重重。
  1. 生成词:在生成式语言中,通常使用agglutination(黏着法构词)和 compounding(复合构词法)生成单词。例如,德语中”Abwasser|behandlungs|anlange“污水处 理厂”这样的复合词。而固定词汇表无法生成罕见词。
  1. 词汇表长度问题:自然语言中一般使用softmax函数,词汇表越大softmax函数的开销越大,计算复杂度越高。

动机

本文的主要动机是,某些单词的翻译是透明的,即使对于一个新手翻译者,他们也可以通过已知的子词单位(如词素或音素)的翻译来进行翻译。潜在的翻译是透明的词类包括:
  • 命名实体。在共享字母表的语言之间,名称通常可以从源文本复制到目标文本。如果字母表或音节表不同,可能需要转录或音译。例如:
    • Barack Obama (英语;德语)、
      Барак Обама (俄语)、
      バラク・オバマ (ba-ra-ku o-ba-ma) (日语)。
  • 同源词和借词。具有共同起源的同源词和借词可能在语言之间存在规律性的差异,因此字符级别的翻译规则就足够了(Tiedemann,2012)。例如:claustrophobia (英语)、Klaustrophobie (德语)、Клаустрофобия (Klaustrofobiâ) (俄语)。
    • 💡
      借词(外来语):例如沙发等。
  • 形态复杂的单词。包含多个词素的单词,例如通过复合、词缀或屈折变化形成的单词,可以通过单独翻译词素来进行翻译。例如:solar system (英语)、Sonnensystem (Sonne + System) (德语)、Naprendszer (Nap + Rendszer) (匈牙利语)。

贡献

本文提出了低于词级的tokenize机制。本文有两个主要贡献:
  1. 我们展示了通过使用子词单元对(罕见)单词进行编码,可以实现开放词汇的神经机器翻译。我们发现我们的架构比使用大词汇和回退字典(Jean等人,2015;Luong等人,2015b)更简单和更有效。·
  1. 我们将字节对编码(BPE)(Gage,1994)这种压缩算法应用于分词任务。BPE通过固定大小的可变长度字符序列的词汇表,实现了对开放词汇的表示。
我们讨论了不同分词技术的适用性,包括简单的字符n-gram模型和基于BPE压缩算法的分词技术,并通过实验证明,在WMT15英德和英俄翻译任务中,子词模型比回退词典基线分别提高了1.1和1.3 BLEU。

研究现状

大词汇

计算softmax的时候,需要计算词汇表中的每个单词,随着词表的增大,计算复杂度和需要的内存都相应的增大。所以本节提出了一种模型专用的方法,将训练复杂度降低为常量级别,不再随目标词表的增大而增大。(待定)
Jean etal. On Using Very Large Target Vocabulary for Neural Machine Translation
https://blog.csdn.net/gaofeipaopaotang/article/details/102999585

回退到词典的方法

配有 back-off 的语言模型,需要维持数个不同精度的语言模型,当单词不在最大精度的模型中,就「退到」更高精度模型查询。以 n-gram 模型为例,若 bigram 的 token 发生 OOV 的情況,back-off 机制就会「退到」 unigram 的模型去查询该 token,若仍然在 unigram model 找不到该单词,模型就會发出 UNK token。
luong etal. Addressing the Rare Word Problem in Neural Machine Translation

基于音素的分词技术

已经提出了各种技术来基于字符或词素生成词向量(Luong等人,2013;Botha 和 Blunsom, 2014; Ling 等人,2015a; Kim等人,2015)。但是,将这些技术应用于NMT的工作并没有比基于单词的方法(Ling等人,2015b)好多少。可能是因为,Ling等人(2015b)的注意机制仍然以单词级别操作,并且每个单词的表示是固定长度的。
本文中,基于子词单元的注意机制可能会提高模型效果。回想一下我们的引言中的例子Abwasserbehandlungsanlange,子词分词使得模型可以学习不同子词单元上的表示。

算法原理

我们的假设是,将罕见单词分词为适当的子词单元足以使神经翻译网络学习透明翻译,并将此知识推广到翻译和生成未见过的单词。我们在第4和第5节中提供了这个假设的证据。

算法示例

图1:从字典(‘low’、‘lower’、‘newest’、‘widest’)中学习到的 BPE 合并操作。
图1:从字典(‘low’、‘lower’、‘newest’、‘widest’)中学习到的 BPE 合并操作。
  1. {('l', 'o'): 7, ('o', 'w'): 7, ('w', '</w>'): 5, ('w', 'e'): 8, ('e', 'r'): 2, ('r', '</w>'): 2, ('n', 'e'): 6, ('e', 'w'): 6, ('e', 's'): 9, ('s', 't'): 9, ('t', '</w>'): 9, ('w', 'i'): 3, ('i', 'd'): 3, ('d', 'e'): 3}) → 合并 ('e', 's')
  1. {('l', 'o'): 7, ('o', 'w'): 7, ('w', '</w>'): 5, ('w', 'e'): 2, ('e', 'r'): 2, ('r', '</w>'): 2, ('n', 'e'): 6, ('e', 'w'): 6, ('w', 'es'): 6, ('es', 't'): 9, ('t', '</w>'): 9, ('w', 'i'): 3, ('i', 'd'): 3, ('d', 'es'): 3}) → 合并 ('es', 't')
  1. {('l', 'o'): 7, ('o', 'w'): 7, ('w', '</w>'): 5, ('w', 'e'): 2, ('e', 'r'): 2, ('r', '</w>'): 2, ('n', 'e'): 6, ('e', 'w'): 6, ('w', 'est'): 6, ('est', '</w>'): 9, ('w', 'i'): 3, ('i', 'd'): 3, ('d', 'est'): 3}) → 合并 ('est', '</w>')
  1. {('l', 'o'): 7, ('o', 'w'): 7, ('w', '</w>'): 5, ('w', 'e'): 2, ('e', 'r'): 2, ('r', '</w>'): 2, ('n', 'e'): 6, ('e', 'w'): 6, ('w', 'est</w>'): 6, ('w', 'i'): 3, ('i', 'd'): 3, ('d', 'est</w>'): 3}) → 合并 ('l', 'o')
  1. {('lo', 'w'): 7, ('w', '</w>'): 5, ('w', 'e'): 2, ('e', 'r'): 2, ('r', '</w>'): 2, ('n', 'e'): 6, ('e', 'w'): 6, ('w', 'est</w>'): 6, ('w', 'i'): 3, ('i', 'd'): 3, ('d', 'est</w>'): 3}) → 合并 ('lo', 'w')
  1. {('low', '</w>'): 5, ('low', 'e'): 2, ('e', 'r'): 2, ('r', '</w>'): 2, ('n', 'e'): 6, ('e', 'w'): 6, ('w', 'est</w>'): 6, ('w', 'i'): 3, ('i', 'd'): 3, ('d', 'est</w>'): 3}) → 合并 ('n', 'e')
  1. {('low', '</w>'): 5, ('low', 'e'): 2, ('e', 'r'): 2, ('r', '</w>'): 2, ('ne', 'w'): 6, ('w', 'est</w>'): 6, ('w', 'i'): 3, ('i', 'd'): 3, ('d', 'est</w>'): 3}) → 合并 ('ne', 'w')
  1. {('low', '</w>'): 5, ('low', 'e'): 2, ('e', 'r'): 2, ('r', '</w>'): 2, ('new', 'est</w>'): 6, ('w', 'i'): 3, ('i', 'd'): 3, ('d', 'est</w>'): 3}) → 合并 ('new', 'est</w>')
  1. {('low', '</w>'): 5, ('low', 'e'): 2, ('e', 'r'): 2, ('r', '</w>'): 2, ('w', 'i'): 3, ('i', 'd'): 3, ('d', 'est</w>'): 3}) → 合并 ('low', '</w>')
  1. {('low', 'e'): 2, ('e', 'r'): 2, ('r', '</w>'): 2, ('w', 'i'): 3, ('i', 'd'): 3, ('d', 'est</w>'): 3}) → 合并 ('w', 'i')

实验

模型

网络结构

我们使用Bahdanau等人(2015)的神经机器翻译架构进行验证。但注意,我们的方法不仅限于此架构。该架构是一个带有编码器-解码器的循环神经网络。
编码器是一个具有门控循环单元(GRU)的双向神经网络,它读取输入序列并计算正向隐藏状态序列和反向隐藏状态序列。将隐藏状态连接起来以获得annotation vector
解码器是一个循环神经网络,它基于循环隐藏状态,先前预测的单词和上下文向量预测目标单词每个通过对齐模型得到,对齐模型是一个单层前馈神经网络,可通过反向传播与网络的其余部分一起学习。

超参数设置

遵循之前的模型设置(Bahdanau 等人,2015;Jean等人,2015)。所有网络的隐藏层大小为1000,embedding大小为620。根据Jean等人(2015),我们只在内存中保留一个的单词表。

训练设置

使用Adadelta(Zeiler,2012)优化器,minibatch大小为80。我们训练网络约7天,然后取最后4个保存的模型(每12小时保存一个模型),并使用固定的嵌入层继续训练每个模型12小时(如Jean等人,2015所建议)。对于每个模型,我们进行两次独立的训练运行,一次使用5.0的梯度剪切截止值(Pascanu 等人,2013),一次使用1.0的截止值-后者在大多数设置下效果更好。我们报告了系统在我们的开发集(newstest2013)上表现最佳的结果,以及所有8个模型的集成结果。

beam search

我们使用12个词做beam search。

BPE应用方式

我们评估了两种BPE的应用方法:学习两个独立的编码,一种用于源词汇表,一个用于目标词汇表,或者学习两个词汇表的并集编码(我们称之为联合BPE)。前者在文本和词汇量方面更紧凑,并且更保证每个子词单元在各自语言的训练文本中都有出现,而后者提高了源语言和目标语言分词的一致性。如果我们独立应用BPE,同一个名称可能在两种语言中被分词成不同的方式,这使得神经模型更难学习子词单元之间的映射。为了增加英语和俄语分词的一致性,尽管字母表不同,我们使用ISO-9将俄语词汇转写为拉丁字符,以学习联合BPE编码,然后将BPE合并操作转写回Cyrillic以应用于俄语训练文本。

数据集

我们在WMT2015的共享翻译任务数据上进行实验。对于英语→德语,我们的训练集包含420万个句对,约1亿个token。对于英语→俄语,训练集包含260万个句对,约5000万个token。我们使用Moses提供的脚本对数据进行分词和大小写处理(Kochn等人,2007)。我们将 newstest2013作为验证集,并在newstest2014和newstest2015上报告结果。

评估指标

BLEU
一句机器翻译的话与其相对应的几个参考翻译作比较,算出一个综合分数。这个分数越高说明机器翻译得越好。
candidate: the cat sat on the mat reference: the cat is on the mat 那么各个bleu的值如下:
candidate中的5个词,{the cat,cat sat,sat on,on the,the mat} ,查找是否在reference中,发现有3个词在reference中,所以占比就是0.6
CHRF
CHRF和BLEU类指标的最大不同之处在于,BLEU是单词级的,CHRF是字符级的,也就是基于字符n-gram计算的。
  • chrP是精确度,指翻译句子和参考译文句子匹配的字符级n-gram在翻译句子中占的比例;
  • chrR是召回率,指翻译句子和参考译文句子匹配的字符级n-gram在参考译文句子中占的比例;
  • 可以控制召回率和精确度两个指标的重要性(召回率比准确率重要β倍),当时二者同样重要。
F1分数
我们报告了BLEU (mteval-v13a.pl)和CHRF3(Popovic,2015)的结果,CHRF3是一个字符n-gram F3 score。由于我们的主要关心罕见和未见词汇的翻译,所以我们添加了 F1 score。

子词统计

表1:使用不同分词技术的德语训练语料库统计。#UNK:newstest2013中的未知词块数量。△:(Koehn 和Knight,2003):*:(Creutz和Lagus,2002);0:(Liang,1983)。
表1:使用不同分词技术的德语训练语料库统计。#UNK:newstest2013中的未知词块数量。△:(Koehn 和Knight,2003):*:(Creutz和Lagus,2002);0:(Liang,1983)。
表1显示了对德语平行数据的不同分词技术的统计数据。简单的基线是将单词分词成字符n-gram。字符n-gram可以在序列长度(#标记)和词汇量大小(#类型)之间进行不同的权衡,具体取决于n的选择。字符n-gram算法生成的词汇表远远大于BPE算法生成的词汇表。
我们报告了几种在以前的SMT研究中证明有用的单词分词技术的统计数据,包括基于频率的复合分词(Koehn and Knight,2003),基于规则的连字符(Liang,1983)和 Morfessor(Creutz and Lagus,2002)。我们发现它们只能适度减少词汇量,并不能解决未知词问题。
BP不仅可以解决开放词汇表问题,而且可以通过合并子词单元生成新词。与字符级模型相比,BPE的词汇表更小,序列编码更短,并且注意力模型在子词单元上进行操作。表1显示了具有59,500个合并操作的BPE,以及具有89,500个操作的联合BPE。
💡
我们没有将不常见的子词单元包含在NMT网络词汇表中。因此,表2中的网络词汇表通常略小于表1中的类型数量。

翻译实验

表2:英语→德语翻译性能(BLEU、CHRF3 和单字符F1)在newstest2015上的表现。Ens-8:8个模型的集合。最佳的NMT 系统用粗体标出。单元F1(包含集合)是为所有单词(n=44085)、罕见单词(训练集中前50.000名以外:n=2900),以及00V(训练集中没有的单词;n=1168)计算的。
表2:英语→德语翻译性能(BLEU、CHRF3 和单字符F1)在newstest2015上的表现。Ens-8:8个模型的集合。最佳的NMT 系统用粗体标出。单元F1(包含集合)是为所有单词(n=44085)、罕见单词(训练集中前50.000名以外:n=2900),以及00V(训练集中没有的单词;n=1168)计算的。
表3:英语→俄语翻译性能(BLEU、CHRF3 和单词频率F1)在newstest2015上的表现。Ens-8:8个模型集成。最佳NMT 系统用粗体表示。单词频率F1(使用集成)计算所有单词(n=55654)、稀有单词(训练集中排名前50,000外;n=5442)和00V(训练集中没有的单词;n=851)。
表3:英语→俄语翻译性能(BLEU、CHRF3 和单词频率F1)在newstest2015上的表现。Ens-8:8个模型集成。最佳NMT 系统用粗体表示。单词频率F1(使用集成)计算所有单词(n=55654)、稀有单词(训练集中排名前50,000外;n=5442)和00V(训练集中没有的单词;n=851)。
我们的基准模型WDict是一个基于单词级别的模型,带有回退字典。它与WUnk不同之处在于后者不使用回退字典,只将词汇外的单词表示为。回退字典改善了罕见和未见单词的单字F1值,但是对于英语→俄语而言改善较小,因为回退字典无法转写名称。
所有子词系统都不使用回退字典。我们首先关注单字F1值,在这个指标上,所有系统都比基准模型有所改进,尤其是对于罕见单词(EN→DE 从36.8%提高到41.8%;EN→RU从26.5%提高到29.7%)。对于词汇外单词,基准策略即复制未知单词在英语→德语的翻译中效果良好。然而,当字母表不同时,比如英语→俄语,子词模型的效果更好。
单字F1分数表明,在词汇联合上学习BPE 符号(BPE-J90k)比分别学习它们(BPE-60k)更有效,也比使用带有50,000个未分词单词的字符双字组(C2-50k)更有效,但所有报告的子词分词都是可行的选择,并且优于回退字典基准模型。
我们的子词模型在罕见和未见单词的翻译中带来了很大的提升,虽然这些单词只占测试集的9-11%,但是,由于罕见单词往往在句子中承载着核心信息,BLEU和CHRF3两个评估指标低估了罕见词对翻译质量的影响。尽管如此,我们还是可以看到子词模型在单字F1值、BLEU和CHRF3上也看到了相比基准模型有了提升,而且子词模型在BLEU和CHRF3上优于WDict基准模型0.3-1.3和0.6-2分。BLEU 和CHRF3之间存在一些不一致,我们将其归因于BLEU具有精确度偏差,而CHRF3具有召回偏差。
对于英语→德语,我们观察到最好的BLEU分数是25.3(使用C2-50k),但最好的CHRF3分数是54.1(使用BPE-J90k)。为了与(据我们所知)在该数据集上表现最好的非神经机器翻译系统进行比较,我们报告了基于语法的统计机器翻译结果(Sennrich 和Haddow,2015)。我们观察到,我们的最佳系统在BLEU方面优于基于语法的系统,但在CHRF3方面不如后者。关于其他神经系统,Luong等人(2015a)在newstest2015上报告了一个BLEU分数为25.9的结果,但我们注意到他们使用了8个独立训练的模型的集成算法,并且还通过应用dropout 获得了显著的改进,而我们没有使用dropout。我们相信我们对罕见单词翻译的改进与通过网络架构、训练算法或更好的集成所能实现的改进互不影响。
对于英语→俄语,目前最先进的是Haddow等人(2015)的基于短语的系统。它比我们的WDict基准模型提高了1.5个BLEU。子词模型缩小这一差距,BPE-J90k相比于WDict提高了1.3个BLEU和2.0个CHRF3。
我们想强调的是,性能的变化仍然是神经机器翻译中的一个悬而未决的问题。在我们的开发集上,我们观察到不同模型之间的差异高达1BLEU。对于单一系统,我们报告在开发集上表现最好的模型的结果(共8个模型),这具有稳定的效果,但如何在未来研究中控制随机性值得进一步关注。

分析

单字组准确性

我们的主要观点是,单词级别的神经机器翻译模型在罕见词和未知词的翻译上表现不佳,而子词模型改善了这些单词类型的翻译。为了进一步说明不同子词分词对罕见词和未见词翻译的影响,我们按照它们在训练集中的频率对目标端单词进行排序。为了分析词汇量的影响,我们还包含了系统C2-3/500k,这是一个与WDict 基线具有相同词汇量的系统,以及使用字符级的bigrams表示未见单词的系统。
图2:在newstest2015上,不同NMT系统的英文→德文单字符F1得分按照训练集频率排名绘制。
图2:在newstest2015上,不同NMT系统的英文→德文单字符F1得分按照训练集频率排名绘制。
图2显示了英语-德语集成系统在newstest2015上的结果。所有系统的单字F1 值在频率较低的单词上都有所下降。基准系统在OOV的F1值上有一个峰值,即在训练文本中没有出现的单词。这是因为OOV中很大一部分是名字,将其从源文本复制到目标文本是英语→德语的一个好策略。
目标词汇量为500,000个单词的系统主要在翻译排名大于500,000的单词上有所不同。回退字典是对UNK的明显改进,但子词系统C2-3/500k的性能更好。需要注意的是,回退字典产生的所有词汇外单词都是从源文本复制过来的,通常是名称,而子词系统可以创造性地形成新词,如复合词。
对于最常见的50,000个单词,所有神经网络的表示都是相同的,并且所有神经网络在这个类别中的单字符词F1值都相当。对于频率排名在50,000和500,000之间的单词,C2-3/500k和C2-50k之间的比较揭示了一个有趣的差异。这两个系统之间唯一的区别在于短列表的大小,C2-3/500k将该区间的单词表示为单个单元,而C2-50k则通过子词单元表示。我们发现,C2-3/500k在频率排名达到500,000之前的区间内性能严重下降,而在此时模型切换到子词表示并恢复性能。C2-50k的性能更加稳定。我们将这归因于子词单元比单词更稠密。在我们的训练集中,频率排名50,000对应训练数据中的频率为60,频率排名为500,000的词频降低到了2。由于子词表示更加稀疏,减小网络词汇表的大小,并通过子词单元表示更多的词,可以提高性能。
图3:在newstest2015上,将不同NMT系统的英语→俄语单字符F1得分按训练集频率等级绘制。
图3:在newstest2015上,将不同NMT系统的英语→俄语单字符F1得分按训练集频率等级绘制。
F1数值隐藏了系统之间的一些定性差异。对于英语→德语,WDict 产生了很少的OOV(26.5%的召回率),但精确度很高(60.6%),而子词系统实现了更高的召回率,但精确度较低。我们注意到字符二元模型C2-50k产生了最多的OOV词,并且在这一类别中的精确度相对较低,为29.1%。然而,它在召回率方面(33.0%)优于回退字典。由于分词不一致性导致的转写错误,BPE-60k的精确度略高(32.4%),但召回率较低(26.6%)。与BPE-60k相比,BPE-J90k的联合BPE编码提高了精确度(38.6%)和召回率(29.8%)。对于英语→俄语,未知名称很少能够直接复制,通常需要音译。因此,WDict 基准在OOV方面表现较差(9.2%的精确度;5.2%的召回率),而子词模型提高了精确度和召回率(BPE-J90k的精确度为21.9%,召回率为15.6%)。图3显示了完整的单字F1图。

人工分析

表4展示了英语→德语翻译方向的两个翻译示例,表5展示了英语→俄语的示例。基准系统在所有示例中都失败了,要么删除了内容(健康),要么复制了应该翻译或音译的源词。健康研究机构的子词翻译表明,当过度分词(搜索→Folrslchlunlg)或分词不符合词素边界时,子词系统能够学习翻译:Forschungslinstituten的分词在语言学上更合理,更容易与英语研究机构对齐,而不是BPE-60k系统中的Forschjungsinstitulten,但仍然能够产生正确的翻译。如果系统由于数据稀疏性而未能学习到翻译,例如应该翻译为dumm的asinine,我们会看到错误的翻译,但对于(部分)外来词可能是合理的(asinineSituation→Asinin-Situation)。
英语→俄语的示例表明,子词系统能够进行音译。然而,音译错误确实会发生,要么是由于模棱两可的音译,要么是由于源文本和目标文本之间不一致的分词,这使得系统难以学习音译映射。需要注意的是,BPE-60k系统对两种语言对的Mirzayeva的编码不一致(Mirz|ayeva→>MuplsaleBa Mir|zaleva)。这个例子仍然被正确翻译,但我们观察到BPE-60k系统中出现了不必要的字符插入和删除。一个例子是rakfisk的音译,其中插入了一个n并删除了一个K。我们追溯这个错误到训练数据中具有不一致分词的翻译对,例如(plrak|ri{ti→mpalxpuru(pra|krit|i)),从中错误地学到了翻译(rak→→mpa)。联合 BPE 系统(BPE-J9Ok)的分词更一致(pra/kriti→mpalkpur|u (prakrit|i))。
表4:英语→德语翻译示例。“|”标记子词边界。
表4:英语→德语翻译示例。“|”标记子词边界。
表5:英语→俄语翻译示例。“|”标记子词边界。
表5:英语→俄语翻译示例。“|”标记子词边界。

结论

本文的主要贡献在于我们展示了神经机器翻译系统通过将罕见词和未见词汇表示为子词单元序列,能够进行开放词汇的翻译。这比使用回退翻译模型更简单且更有效。我们引入了一种字节对编码的变体用于单词分词,能够使用可变长度子词单元的紧凑符号词汇表对开放词汇进行编码。我们展示了使用BPE分词和简单的字符二元分词都能提高基准系统的性能。
我们的分析表明,不仅是词汇外的词汇,而且是罕见的词汇在基准NMT 系统中翻译效果不佳,并且减小子词模型的词汇量实际上可以提高性能。在这项工作中,我们选择词汇量大小有些随意,主要是与之前的工作进行比较。未来的研究方向之一是学习适合翻译任务的最佳词汇量大小,我们预计这将取决于语言对和训练数据的数量,并且可以自动进行。我们还相信,在双语信息的指导下,双语分词算法有进一步的潜力,可以创建更多可对齐的子词单元,尽管分词算法在运行时不能依赖目标文本。
虽然相对有效性将取决于语言特定因素,如词汇量大小,但我们相信子词分词适用于大多数语言对,消除了大型NMT词汇表或回退模型的需求。致谢我们感谢 Maja Popovic对CHRF的实施,我们通过她验证了我们的重新实施。本出版物中的研究是与Samsung Electronics Polskasp.z0.0.-Samsung R&D Institute Poland合作进行的。该项目获得了欧洲联盟Horizon2020研究和创新计划的资助,合同编号645452(QT21)。
Armbian Docker Openwrt 旁路由详细设置教程Hyper-V安装iStoreOS
Loading...
目录