1.attention模型计算上下文语意,为什么需要解码端的隐藏单元?

2.另外上下文语言如何与带反馈的解码输出合并?


在深度学习中,网路由特征层和分类层(或者回归层)组成,特征层负责特征的提取,特征层得到的结果可以看做两方面组成:

  1. 特征的种类,例如图像卷积得到的Feature Map的每个通道便对应一种特征;
  2. 特征对应输入数据的位置,还是图像,Feature Map的每个像素点会对应输入图像中固定的感受野,以及NLP的机器翻译等任务中每个时间片对应的是句子的一个单词。

传统的方法是将这些特征平等的考虑,例如将特征拼接到一起,或者直接去平均数之类的方法。那么能不能让机器自己学哪些东西更重要呢?当然可以,这就是Attention的工作,对于上面我说的特征层的分类,有几个经典的论文:

  1. 哪个特征更重要?参考Momenta的([1709.01507] Squeeze-and-Excitation Networks),它就是为每个Feature Map学一个权值,也就是哪些通道对于目前的任务会更重要。

图1:SENet

2. 学习什么位置的特征呢?计算机视觉方向参考论文《Show, Attend and Tell: Neural Image Caption Generation with Visual Attention》,演算法学到的是哪个位置的东西对我们的任务更优帮助,如图2中的高亮部分:

图2:Show, Attend and Tell: Neural Image Caption Generation with Visual Attention

3. NLP呢?计算目标句子中结果需要哪些时间片的信息呢?例如对于机器翻译来说,一般是时间片接近的位置对翻译越有帮助,参考论文《[1409.0473] Neural Machine Translation by Jointly Learning to Align and Translate》,正如我们所理解的,Attention会给相同时间片的特征更高的权值,如图3所示

图3

有了上面的例子就很好理解了,假设 [公式] 是编码码器得到的N个特征,首先需要为每个特征(位置)学习一个权值

[公式]

其中softmax是激活函数,保证概率和是1。

那么输入到解码器的就是特征加权后的结果,例如加权和(拼接类似):

[公式]

上面就是Attention最简单的理解,正如Faster R-CNN中所讲,Attention的本质就是『Where to look!』


Attention?!Seq2Seq Recurrent Neural Networks(RNNs)Seq2Seq 模型包含两个部分: Encoder和Decoder。像LSTM和GRU这样的循环神经网路(RNN)比较适合处理序列数据,使得RNN成为Encoder-Decoder架构的主流选择。Encoder接受一个输入序列并输出上下文向量( context ve…2 赞同 · 0 评论查看完整文章

Seq2seq Models With Attention


https://zhuanlan.zhihu.com/p/44731789

attention is all you need(注意力模型),一文解读注意力模型详细流程。


回答第一个问题。

经典NMT模型的attention的参数是一个矩阵,每次解码的时候,将矩阵与解码器的上一个引状态做一个惩乘法,得到一个向量,这个向量归一化后就是权重,权重表示在当前时刻的解码中,更应该关注哪个原句的词。

attention is all your need中,对attenion做了一个精辟的定义:


个人理解,复杂功能很难靠单一网路来完成任务,而是需要多个子系统协作耦合,attention本质上是耦合进了一个系统,系统的维度比不使用注意力机制的系统更高。这种耦合结构某种程度上是把问题空间进行分解,以后的复杂功能系统都会慢慢走向有意识的设计这类耦合系统来解决问题。

说句题外话,人类意识可能就是人脑多子系统耦合过程中生成的一个相对稳定的使用latent parameter的系统,这个系统耦合了多种人脑区域又有一定的相对独立性,而且是全局的。动物可能只有局部的这类系统,所以其意识有缺失。而我们说的潜意识可能就是没有被这个系统耦合的部分。


输入的序列是「我在编程」,如果只是按照上文seq2seq的原理,可能会得到【编程在我】,【在我编程】,【程编我在】多种词义对的上但是顺序混乱的语句,特别是你想翻译诗歌,最后的效果驴头对得上马嘴的情况下,仅仅用seq2seq还是有时会失手的。

而注意力机制 相当于在原文输入时,为每个辞汇对应的翻译输出,下了一个位置锚,更好的定位预测词,翻译输出合理的自然的语序。首先Encoder中的h1、h2、h3、h4就可以分别看做是「我」、「在」、「编」、「程」所代表的信息。在翻译成英语时,第一个上下文c1应该和「我」这个字最相关,因此对应的a11比较大,相应的a12、a13、a14会比较小。c2应该和「在」最相关,因此对应的a22比较大。最后的c3和h3、h4最相关,因此a33/a34的值就比较大。由此看来,输入字元与输出字元除了编码以外,对应的位置相当重要,在最终翻译结果中,可以将模糊的一句话,结合输入时原文的辞汇位置进行权重赋值,最终输出的模糊语文轮次的句子被编排的更加得体自然。

2attention核心-权重计算:我们如何计算aij的权重呢?

首先下图是加入了Attention机制的seq2seq:

其中encoder的Ht层和decoder的Hs层是计算权重的关键所在。

再然后是开始计算咱们的aij权重啦:

有三种计算方式:主要看第一种dot模式下aij权重计算。

输入是encoder的所有hidden states H: 大小为(hid dim, sequence length)。decoder在一个时间点上的hidden state, s: 大小为(hid dim, 1)。

第一步:旋转H为(sequence length, hid dim) 与s做点乘得到一个 大小为(sequence length, 1)的分数。

第二步:对分数做softmax得到一个合为1的权重。

第三步:将H与第二步得到的权重做点乘得到一个大小为(hid dim, 1)的context vector。

第二种模式图解如下:很类似 增加了一个中间调解向量W。

————————————————

版权声明:本文为CSDN博主「AI工匠book」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weixin_37479258/article/details/99887469

AI工匠聊天机器人Seq2Seq模型+attention(理论篇-图文详解)智能对话系统神仙组合_百度搜索?

www.baidu.com图标

问题1:通过解码端的隐藏单元保存之前输出的文字的语义信息。

Bahdanau D, Cho K, Bengio Y. Neural Machine Translation by Jointly Learning to Align and Translate[J]. Computer Science, 2014. P14

通过[公式] 保留 [公式] (Embedding of i-1th output word)信息。

问题2:题中"带反馈的解码"指代不明,请给更详细描述。


推荐阅读:
相关文章