自然语言处理-第十四期-Attention Mechanism
上一期提到了Seq2Seq模型,其模型是NMT(神经网络翻译)和Chatbot的根底。可是从上一期咱们也能够看出来,Seq2Seq模型十分简略、十分直接。就是一个 RNN的Encoder 和 一个RNN的Decoder。 当然其缺点也是有的。Attention Mechanism是补足其的十分重要的一部分。
今日咱们会开始触及Attention Model。这一整篇,仅仅想介绍Attention Model是个啥。
Seq2Seq的缺点
上图就是Seq2Seq的大约的结构,其间Encoding部分会输出一个 隐藏状态(Hidden State)或许能够了解成一个向量。 该向量代表了Enocder部分的浓缩。即绿色方块传递到蓝色方块的信息。
而Decoder部分的作用就是将 Hidden State 扩展成咱们的方针句子。
我开始看到这个结构的两个首要 疑问是:
Hidden State怎样就能代表 输入句子了呢?
Hidden State怎样就能扩展出一个完好的句子了呢?
关于这两个问题,其实是我开始的考虑方向错了。Seq2Seq的encoder部分开始并不能代表输入句子。可是通过大量的训练样本后,就能到达这样的作用。 通过Autoencoder的比如更好了解一些:
下面是一个Autoencoder 的结构图,Autoencoder 也是分为Encoder 和Decoder部分,其异乎寻常的是 输入值 与 输出值是 同一个值。那么如果依照一个Seq2Seq的模型来了解它的话: Autoencoder 是将一组数据 紧缩成二维, 然后再放大回原始纬度。
那么为何二维数据,能代表原始数据的浓缩版呢? 原因很简略,就是训练得来的。当你紧缩完,解压完仍是你。那么浓缩版就make sense了
可是Seq2Seq有一个严重的缺点,当咱们遇到的是一个较长的句子时,咱们也能够幻想,咱们要将一个encoder 传递过来的hidden state “变换”为一段完好的输出文本。其间一个首要原因是Gradient Explosion 或许 Gradient Diminision。
解说下,什么是Hidden State。我又要用到RNN的一个GIF图了。 咱们能看到X0 输入终究会有一个输出值,该输出值会进入下一个神经元中。
而每列的输出值,就是该部分的Hidden State。
Attention Model开始
Attention Model应该是我自学以来觉得蛮难的一个东西。一个首要原因是我没有找到一个对新手比较友爱的材料。终究仍是Stanford公开课给力。
仍是老规矩,叫什么不重要。咱们需求从问题动身,了解该办法解决问题的思路及其解决问题的实质。
那么,从上一部分,咱们知道Seq2Seq 最大的问题是,当面对较长的句子,作用就会差许多。
而导致其作用欠好的原因是:Encoder部分只传递了终究的Hidden State进入Decoder。说白了就是光用 最终一个hidden state欠好使。
那么根据该问题,Attention Model的办法也很直接,就是操控运用的hidden state;或许说将注意力会集到对的Hidden State上。
如上图,当我需求输出赤色榜首个字时,我需求更多得把注意力放在“I” 上面。
换句话说,Attention Model将此问题转化为一个 “连连看” 的问题。如下图,就是将输入文本(横轴)与输出文本(纵轴)的单词进行对齐。当你翻译“I am a student” ------> "我是一个学生" 时, “我”的注意力应该几种在“I” 上面。
再换个视点,这就是一个Dynamic Memory Network(中文可能是动态回忆提取?)。 Hidden State 就是咱们的memory,而咱们提取的办法是动态的。当我输出值是 “我” 的时分,我的Hidden State 提取更多的应该从“I”对应的Hidden State。
当然上面所说的连连看,并不是一一对应的联系。而是一个权重的分配。如下图。
Attention 的作用
Attention Model的作用就是做到动态的回忆提取。 在翻译不同部分时,将注意力放在不同的Hidden State上。
天然比传统Seq2Seq,一切的信息只要一个 输入文本终究的Hidden State
总结下
Attention Model是什么呢?
根底的Seq2Seq Model只运用了 句子结束的Hidden State。其最大的问题就是,当面对较长句子时,难以从单一Hidden State 推出完好的方针句子。
而Attention Model的思路是,Dynamic Memory 动态的回忆提取。 或许说,将方针句子与输入句子做一个“对应联系”。
Attention Model的作用是什么呢? 能够动态提取Hidden State。 如果能做到对应联系靠谱,那么Attention Model的提高将是明显的。
而其间最重要的是,怎么计算出,咱们的Attention 应该放在哪些地方。 而这个将在下一期带来。
