外行语言中的机器翻译是“用文本或其他形式的语言交流从语言替换为另一种语言”。更根据维基百科的技术,它可以描述为: -

“计算语言学的一个子领域,研究使用软件将文本或语音从一种语言翻译成另一种语言。”

Seq2seq(序列到序列)架构被认为是MT(机器翻译)的重要媒介。该序列具有可变输入和输出长度的多对多序列架构。一般来说,MT的架构由编码器和解码器组成。编码器对一种语言的词汇中存在的词进行嵌入,对其进行编码并将其作为开始激活提供给解码器。解码器看起来类似于用于生成随机序列的神经网络语言模型,但不同之处在于,神经网络语言模型是一对多架构,它生成随机序列,并且模型初始化的激活为0.而解码器工作关于条件概率理论,可以称为条件语言模型。它生成一个给定输入的序列,即

机器翻译中的编码器和解码器

给定输入序列x<1>, x<2>, x<3>,…., x,在语言-1中x长度T x,由解码器网络生成输出y<1>, y<2>,…., y。 y在语言-2中长度为Ty。输出由softmax层组成。输出由概率P(y 1,y 2,......,y | a)给出。为了获得最可能的句子,这个概率表达式需要最大化,即: -

一种常用的启发式方法是Beam Search。上述的另一个解决方案是使用贪婪搜索。贪婪搜索只考虑了一个输出,这减少了获得其他句子的可能性,而这些句子更有可能输出到译文中。当我们看到Beam Search算法的工作原理后,就会更加清晰。

Seq2Seq建模中的Beam Search

同样,Beam Search是用于最大化概率的上述表达式的算法。我们将使用MT的示例详细描述和讨论该算法。考虑法语' Soumya doit travailler dur pour obtenir de bons points '中的一个例子,当用英语翻译成“Soumya must work hard to get good points ”时。

在继续之前,我们为算法定义一个参数,即 beam width(B),它一次考虑n个单词的概率。如果解码器输出y <1>那么它将是10000 units 的softmax(考虑到词汇表中有10k个单词)。我们选择具有最高概率的最佳n个单词。为简单起见,我们考虑 beam width(B)= 3。

Beam搜索所做的第一件事是从具有最大概率的词汇表(忽略大写)中选择英语翻译的前3个(如B = 3)单词。我们使用概率表达式P(y 1 | a)来计算解码器序列的第一时间步的输出。该表达式意味着,给定y <1>的词汇表中所有单词的概率是多少。让我们考虑神经网络模型选择了英文单词的,soumya和points ,因为他们在所有的最高概率。

模型挑选前3个英文单词

挑选了,soumya和points 对于第一个单词,Beam Search将执行什么,给定前三个单词,它将在第二个时间步骤中为前三个单词中的每个单词计算3个单词。为此目的,RNN神经网络模型被实例化3次。在这种情况下,概率的表达式变为P(y 2 | a,y 1)。该表达式在给定输入作为a和y 1的情况下在第二时间步骤找出softmax层y 2的最可能的单词。因此,到目前为止形成的包含2个单词的句子的表达式最有可能由 P(y<1>,y<2>|a) = P(y<1>|a)*P(y<2>|a,y<1>)给出。 我们可以看到该模型关注词语y <1>和y <2>用于翻译,而不是只考虑模型中预测的单个单词。不太可能在第一次步骤中第二次步骤有30000种可能(10k each for the 3 ouputs of y<1>)。

y 2的预测

从30k的可能性出发,让我们考虑具有最大概率y 2 =(good)的3个输出,并且y 2 =(must, should)分别为y 1 = for和y 1 = soumya。由于y <2>的3个单词来自y <1>的2个单词,因此忽略剩余单词y <1> = points 。同样的过程一直持续到EOS即句末,最后我们得到了输入序列最可能的3个翻译。

注意:当B(Beam width)保持为1时,光束搜索变得类似于贪婪搜索算法。

Beam搜索算法的一些改进

长度归一化: -将 得到完整输出后的总概率表达式 P(y<1>,y<2>, ….,y|a) = P(y<1>|x)*P(y<2>|a,y<1>)*P(y<3>|a,y<1>,y<2>)*….. 等等。我们已经知道任何事件的概率都小于1,在这种情况下,因为我们有一个10k词汇量的样本空间,我们得到的数字非常小。当这些概率乘以表达式时,结果输出变得非常小,这导致数值下溢。最终,如果我们有一个长句,我们会得到一个非常小的数字。这限制了机器学习模型翻译更长的句子。对表达式应用一个对数函数将其转换为单个时间步长的概率的对数值的总和,使表达式具有数值稳定性。对数函数是单调递增函数,其意义与前面的表达式相似。

虽然我们使用对数概率,但我们应该记住,log(值<1)给出负数并将负数相加以得到更大的负数将导致表达式在数值上变得更不稳定。为了避免这种出现的情况,使用生成Ty的翻译序列的长度对对数表达式进行归一化。为了使用更柔和的方法,Ty也可以被提升到0到1之间的数字。

B值(Beam width)

用于生产目的的beam width值通常保持在10-100之间,而用于研究目的的beam width通常在1000 - 3000之间。波束宽度越大,就越有可能找到一个可能的句子,但它使计算开销和内存需求显著提高。

查看原文 >>
相关文章