神经机器翻译的Subword技术

简介: 神经机器翻译的Subword技术

神经网络机器翻译(NMT)是目前最先进的机器翻译技术,通过神经网络的处理可以产生流畅的翻译。然而非机器翻译模型受到词汇外问题和罕见词问题的影响,导致翻译质量下降。OOV词是语料库中未出现的词,而rare词是语料库中出现次数很少的词。在翻译这些未知单词时,这些单词将被替换为无用的标记。因此,这些无意义的符号破坏了句子结构,增加了歧义使翻译变得更糟。

字符分割是机器翻译中为了避免词层翻译的缺点而采用的一种技术。字符分割的主要优点是它可以对任何字符组成进行建模,从而能够更好地对罕见的形态变体进行建模。但是由于缺少重要信息,因此改进可能不会有太大意义,因为字符级别更细。

为了缓解这些问题,Sennrich等人(2016)通过提供更有意义的表示,引入了将单词分割成子词单元序列的概念。举个分词的例子,看看“look”这个词。这个词可以分为“look”和“ed”。换句话说,用两个向量来表示“looked”。因此,即使这个词是一个未知的词,模型仍然可以通过将它作为一个子词单元的序列来准确地翻译这个词。

640.png

随着自然语言处理技术的发展,各种分词算法被提出。以下的子词技术会在这篇文章中进行全面的描述。

  • Byte Pair Encoding (BPE)
  • Unigram Language Model
  • Subword Sampling
  • BPE-dropout

字节对编码(BPE)

Sennrich等。(2016)提出了这种基于Byte Pair Encoding压缩算法的分词技术。这是使NMT模型能够翻译稀有单词和未知单词的有效方法。它将单词分解为字符序列,然后将最频繁出现的字符对迭代地组合为一个。

以下是BPE算法获取子词的步骤。

步骤1:初始化词汇表

步骤2:对于词汇表中的每个单词,附加单词标记的结尾</ w>

第3步:将单词拆分为字符

步骤4:在每次迭代中,获取最频繁的字符对并将其作为一个令牌合并,然后将此新令牌添加到词汇表中

步骤5:重复步骤4,直到完成所需的合并操作数量或达到所需的词汇量

640.png

Unigram Language Model

Kudo(2018)提出了一种基于Unigram语言模型的子词分段算法,该算法可输出多个子词分段及其概率。该模型假定每个子词独立出现。子字序列x =(x1,...,xM)的概率是通过将子字出现概率p(xi)乘以得到的。

640.png

在此,V是预定的词汇。句子X的最可能分割x *由下式给出:

640.png

S(X)是使用句子X获得的一组分割候选。x *是通过维特比算法(一种动态规划算法)获得的。

使用期望最大化(EM)算法通过最大化以下似然度L估计子词出现概率p(xi)。

640.png

以下步骤描述了获得所需大小的词汇表V的过程。

步骤1:初始化相当大的种子词汇。

步骤2:定义所需的词汇量。

步骤3:通过修正词汇表,使用EM算法优化子词出现概率。

步骤4:计算每个子字的损失。子词的损失表示为:当从词汇表中删除该子词时,上述可能性L会递减多少。

步骤5:按损失对子词进行排序,并保留前n%个子词。子词应使用单个字符,以避免出现词汇问题。

步骤6:重复步骤3至5,直到达到步骤2中定义的所需词汇量。

准备种子词汇的最常见方法是使用语料库中最常见的子字符串和字符。这种基于unigram语言模型的子词分割由字符,子词和词组成。

Subword(子词)采样

在这种技术中,模型是基于unigram语言模型进行多个子词分割的训练,并且在训练过程中概率地对它们进行采样。L最佳分割是一种可用于近似采样的方法。首先,获得l最佳分割,并在执行l最佳搜索之后,对一个分割进行采样。

子字正则化有两个超参数,分别是采样候选的大小(l)和平滑常数(α)。从理论上讲,设置l→∞意味着考虑所有可能的分割。但这是不可行的,因为字符数会随着句子的长度呈指数增长。因此,使用前向过滤和后向采样算法进行采样。另外,如果α小,则分布更均匀,如果α大,则倾向于维特比分割。

BPE-dropout

BPE-dropout是一种有效的基于BPE的子词正则化方法,它可以对特定词进行多次分割。这将使BPE词汇表和合并表保持原始,同时更改分段过程。在此,在每个合并步骤中以p的概率随机删除了一些合并,从而为同一单词提供了多个分段。以下算法描述了该过程。

640.png

如果概率为零,则子词分割等于原始BPE。如果概率为1,则子词分割等于字符分割。如果概率从0变到1,它将给出具有不同粒度的多个细分。由于此方法将模型暴露于各种子词分割中,因此可以更好地理解词和子词。BPE删除是一个简单的过程,因为无需训练即可进行训练,而无需训练除BPE之外的任何细分,并且推理使用标准BPE。

目录
相关文章
|
1月前
|
机器学习/深度学习 自然语言处理 网络架构
神经机器翻译(NMT)
神经机器翻译(NMT)
18 2
|
机器学习/深度学习 自然语言处理 PyTorch
在PyTorch中使用Seq2Seq构建的神经机器翻译模型(三)
在PyTorch中使用Seq2Seq构建的神经机器翻译模型
119 0
在PyTorch中使用Seq2Seq构建的神经机器翻译模型(三)
|
机器学习/深度学习 自然语言处理 数据可视化
在PyTorch中使用Seq2Seq构建的神经机器翻译模型(二)
在PyTorch中使用Seq2Seq构建的神经机器翻译模型
164 0
在PyTorch中使用Seq2Seq构建的神经机器翻译模型(二)
|
机器学习/深度学习 存储 JSON
在PyTorch中使用Seq2Seq构建的神经机器翻译模型
在PyTorch中使用Seq2Seq构建的神经机器翻译模型
254 1
在PyTorch中使用Seq2Seq构建的神经机器翻译模型
|
机器学习/深度学习 存储 人工智能
NLP教程(6) - 神经机器翻译、seq2seq与注意力机制
本文介绍了序列到序列模型(seq2seq)及其在翻译系统中的应用,以及注意力机制、序列解码器、神经翻译系统、基于字符级别的翻译模型等。
1126 1
NLP教程(6) - 神经机器翻译、seq2seq与注意力机制
|
机器学习/深度学习 自然语言处理 数据库
J Cheminform.|基于子结构的神经机器翻译用于逆合成预测
J Cheminform.|基于子结构的神经机器翻译用于逆合成预测
128 0
J Cheminform.|基于子结构的神经机器翻译用于逆合成预测
|
机器学习/深度学习 数据采集 自然语言处理
基于注意力机制,机器之心带你理解与训练神经机器翻译系统
本文是机器之心 GitHub 实现项目,我们根据谷歌的 Transformer 原论文与 Harvard NLP 所实现的代码学习构建了一个神经机器翻译系统。因此,我们希望各位读者也能根据这篇文章了解 Transformer 的架构,并动手实现一个神经机器翻译系统。
263 0
基于注意力机制,机器之心带你理解与训练神经机器翻译系统
|
机器学习/深度学习 存储 人工智能
INTERFACE | 从技术到产品,搜狗为我们解读了神经机器翻译的现状
3 月 12 日,搜狗正式在线上平台发布了「旅行翻译宝」。这款随身翻译设备结合了搜狗神经网络机器翻译、语音识别、图像识别等多项技术,不仅支持语音、图像翻译等多种翻译模式,还提供中英日韩俄德等 18 种语言互译。
191 0
INTERFACE | 从技术到产品,搜狗为我们解读了神经机器翻译的现状
|
7月前
|
算法 C语言
算法竞赛入门【码蹄集新手村600题】(MT1240-1260)C语言(二)
算法竞赛入门【码蹄集新手村600题】(MT1240-1260)C语言(二)
153 0
|
7月前
|
算法 C语言
算法竞赛入门【码蹄集新手村600题】(MT1240-1260)C语言(一)
算法竞赛入门【码蹄集新手村600题】(MT1240-1260)C语言
162 0