翻译一段很长句子:
Keras is a high-level neural networks API, written in Python and capable of running on top of TensorFlow, CNTK, or Theano. It was developed with a focus on enabling fast experimentation. Being able to go from idea to result with the least possible delay is key to doing good research.
在注意力模型出现之前,会将这段话输入到下面的RNN网络中:
Keras是一个高级神经网络API,用Python编写,能够在TensorFlow,CNTK或Theano之上运行。 它的开发重点是实现快速实验。 能够以最小的延迟从想法到结果是进行良好研究的关键。
在这个过程中,我们一次性将所有要翻译的话输入到模型中,模型一次性将结果返回给我们,当句子较短的时候这没问题,但是当句子非常长的时候,模型的准确率会明显下降,而且太长的输入,模型训练也是个问题.
类比人类的翻译过程,人类翻译也不是一下子翻译整段话的,而是一小段一小段的翻译.那么有没有一种算法也能一句一句翻译呢?基于这种思想诞生了注意力模型.
注意力模型的思想是当翻译到某处时也把注意力放到原文对应的地方,具体实现方法如图所示:
为了便于区分,将Endcoder的时序称为,Decoder的时序为.
Encoder采用的是双向RNN,Decoder时的输入为所有的加权和.详细的生成方式见下图:
首先会把正反两向的合并到一起称之.
接下来将Encoder中的与Decoder中的合并为:
接下来通过softmax计算出其与的相关概率,接下来结合所有时序的.
对影响越大的,占的比重越大.翻译到某个词的时候对应原文的那个词权重最大.这就做到了将注意力放到重要位置的效果.
参考:
https://www.coursera.org/learn/nlp-sequence-models