翻译:seq2seq model in Machine Learning

原文链接:seq2seq model in Machine Learning

seq2seq 首次被谷歌引用是用于机器翻译。在那之前的翻译方式十分朴素。敲入的每个单词会被忽视语法和上下文直接转换成目标语言。seq2seq 利用深度学习革新了这种翻译过程。它在翻译时不仅会考虑当前的输入,还会考虑邻居。

现在 seq2seq有了更广泛的应用,如图像描述、对话模型、文本总结等。

seq2seq的工作过程:

顾名思义,seq2seq将词序列(一个或多个句子)作为输入,再输出一个词序列。它通过一个循环神经网络做到。现在循环神经网络的基础版本已经少用,多用的是它的进阶版本长短期记忆网络或者门控制单元。这是因为基础的循环神经网络有梯度爆炸的缺陷。谷歌提出的(seq2seq)版本用的是长短期记忆网络。它发展单词上下文的方法是在每个时间点采用两个输入。一个来自用户,一个来自先前的输出,因此名字里面有循环(输出被作为输入)。

它主要由编码器和解码器两部分组成,因此有时被称作编解码器网络。

翻译:seq2seq model in Machine Learning_第1张图片

编码器:采用深神经网络层次,将输入的若干单词转化成相应的隐藏层向量。每个向量表示当前单词及该单词的上下文。

解码器:和编码器的工作过程相似。它将编码器生成的隐藏层向量、它自身的隐藏状态和当前单词作为输入,输出下一个隐藏层向量,最终预测出下一个单词。

除了上述两个组成要素,seq2seq 还做出了以下优化:

注意力(Attention):解码器的输入是单个向量,存储了有关上下文的全部信息。这样长序列的输入成为问题。注意力机制的引入让解码器能够对输入的序列有选择性地观察。

定向搜索(Beam Search):可能性最大的单词会被解码器选作输出。但是这样做存在贪心算法的通病,即并不总是产生最好的结果。定向搜索因此被用在每一步,来提示可能的翻译。具体做法是建立一棵由k个最佳结果组成的树。

装桶(Bucketing):对于seq2seq模型来说各种长度的序列都是可能的,因为在输入和输出时都存在0填充(the padding of 0’s不知翻译得是否准确)。可一旦最大长度被我们设为100,而序列只有3个单词就会造成大量的浪费。因此我们采用装桶的概念。我们制作不同尺寸的桶,如(4,8)(8,15)等等其中4是最大输入长度,8是最大输出长度。

你可能感兴趣的:(外文网页翻译,seq2seq)