#学习笔记#(图在上,对应讲解在下)

首先seq2seq模型可以用来处理许多NLP相关任务,这里介绍加入attention机制的意义以及算法

对于普通Seq2Seq模型,Encoder本身是一个RNN模型,下面的x1,x2,x3,...,xm是embedding过的词向量,对应的h1,h2,3,...,hm是每个时间段对应的输出状态由于RNN的运作机制,每个词的信息都会一路保留至hm,也就是说hm内含有所有词向量的相关信息,这部分作为Encoder的输出s0(这里的s0=hm),同时作为DecoderRNN网络第一步的状态输入(Encoder也有初始的状态输入,可以是默认值0等等),之后s0与Decoder的新输入得到新状态s1并重复此工作至结束。

(本文主要介绍attention机制的应用,对seq2seq模型不做过多介绍)

这里可以看到在Decoder中除了第一次的输入状态有Encoder传入的状态信息,后续的输入并没有继续传入原始的Encoder信息,这就导致若句子过长,模型很容易遗漏许多关键信息,当单词数超过20个,模型输出质量明显下降。

下面开始讲解加入attention的seq2seq,首先Encoder的工作没有改变,输入词向量,编码后输出状态hm=s0。后面的工作发生了变化,对于Encoder中每一个输出hi,s0都与之进行一次align()函数运算(函数内容之后会讲),得到的阿尔法i(用a代指),每个h都对应有自己的a,最后再将hi与ai做加权平均得到c0。

讲一下上面提到的align()函数,首先concatenatehi与s0,在乘一个w矩阵(我个人将其理解为一个改变维度帮助理解词向量的全连接层),对结果进行tanh激活,再乘上一个v向量(同样理解为一个全连接),对结果进行softmax处理使得a1+a2+a3+...+am=1。

这里的w和v全都是需要通过训练得到的参数。

以上所有参数相乘,通过激励函数tanh,再通过softmax统一构成了align()函数。

再介绍另外一种align()函数的内容,可能更好理解一些,而且是与transformer中的attention机制相同的,也是大部分NLP任务的SOTA。

这里加入两个参数Wk和Wq,用每个h去乘Wk得到ki,用s0去乘Wq得到q0,两者内积得到的值再通过softmax得到最终的结果。

同理Wk和Wq都是需要训练得到的参数。

讲完了align()函数接着讲下面的内容,一起来看看加权平均后得到的c0怎么用在Decoder中,普通的seq2seq模型Decoder运作方式如上图左上角的所示,而加入了attention的模型运作方式如右上角所示,在传入数据方面添加了c0,并得到第二个状态s1,这个c0就是相当于对hi的一个整合,并且由于是加权平均,c0的值会更加接近相关性比较大的那个hi*ai,假如输出的状态与x2的输出结果h2关联性最强,那么h2*a2的值在c0中的占比就更大,也就可以理解为注意力更集中于h2。

在得到第二个状态s1后,再次进行相同的运算,用s1与每个hi通过align()函数再加权平均得到c1,由此可见,Decoder的每个输入由于添加了ci,相当于每次输入都提到了Encoder的输出内容,也就避免了信息遗漏或丢失的情况。

依此类推至结束,这就是完整的Seq2Seq(Attention),以上均为自己浅薄的理解,大体介绍了工作原理,有些小的细节我自己也还有一些疑惑,
比如在 hi*s0,求相关性那一步,既然hm与s0完全相等且hm包含所有Encoder的输出内容,那相关性不是应该最大吗?

还需要进行更深层的学习。

最后总结一下:

1、加入了Attention的Seq2Seq可有效避免信息遗忘的情况发生,可以大幅提高模型输出准确率。

2、同时Decoder也知道需要注意那些关联性更强的部分。

3、由于每步都要重新计算ci,运算量过大,可能导致模型训练速度较慢。

附一张Seq2Seq(Attention)的模型使用结果

#图片资料是截自王树森老师的ppt#

Seq2Seq(Attention)相关推荐

  1. Tensorflow 自动文摘: 基于Seq2Seq+Attention模型的Textsum模型

    Github下载完整代码 https://github.com/rockingdingo/deepnlp/tree/master/deepnlp/textsum 简介 这篇文章中我们将基于Tensor ...

  2. Seq2Seq Attention模型

    首先强调一下图文来源,真正的完全图解Seq2Seq Attention模型.本人目前用到此模型,发现该知乎作者的文章写得通俗易懂,于是整理作为自己的笔记.如果小伙伴对模型中各种隐层状态感到不解,请看我 ...

  3. NLP-生成模型-2017-PGNet:Seq2Seq+Attention+Coverage+Copy【Coverage解决解码端重复解码问题;Copy机制解决解码端OOV问题】【抽取式+生成式】

    PGNet模型训练注意事项: Coverage机制要在训练的最后阶段再加入(约占总训练时间的1%),如果从刚开始训练时就加入则反而影响训练效果: Copy机制在源文本的各个单词上的概率分布直接使用At ...

  4. Seq2Seq+Attention生成式文本摘要

    任务描述: 自动摘要是指给出一段文本,我们从中提取出要点,然后再形成一个短的概括性的文本.自动的文本摘要是非常具有挑战性的,因为当我们作为人类总结一篇文章时,我们通常会完整地阅读它以发展我们的理解,然 ...

  5. 文本生成任务之营销文本生成(Seq2seq+attention、Pointer Generator Network、Converage、Beam Search、优化技巧、文本增强)

    文章目录 引言 项目任务简介 0. 数据预处理 0.1 将json文件转化成txt文件 0.2 词典处理 0.3 自定义数据集SampleDataset(Dataset类) 0.4 生成Dataloa ...

  6. seq2seq + attention

    1.思考几个问题:① 为什么解码器 一般来说 需要与 编码器的 hidden_size 相同呢? 2.seq2seq + attention 注意的几个问题:① 如果编码器 的 RNNCell 是LS ...

  7. Seq2Seq Attention输入输出维度分析(最全面细致)

    先给出Seq2Seq Attention的计算过程的截图,来源于知乎Yuanche.Sh的题为真正的完全图解Seq2Seq Attention模型的文章,也希望你阅读了我的上一篇文章:Seq2Seq ...

  8. 智能客服系列3 seq2seq+attention【Python十分钟写出聊天机器人】基于Keras实现seq2seq模型

    开篇导读 首先复习下前面聊天机器人系列: <一>聊天机器人/翻译系统系列一梳理了聊天机器人网络设计模型原理 (理论篇-图文解锁seq2seq+attention模型原理) <二> ...

  9. 基于PyTorch实现Seq2Seq + Attention的英汉Neural Machine Translation

    NMT(Neural Machine Translation)基于神经网络的机器翻译模型效果越来越好,还记得大学时代Google翻译效果还是差强人意,近些年来使用NMT后已基本能满足非特殊需求了.目前 ...

最新文章

  1. php agi api,PHP agi 编写测试
  2. 数据分析索引总结(下)Pandas索引技巧
  3. python——selenium框架实现无头浏览器访问 + 规避检测配置
  4. 开发团队测试的难与易
  5. Educational Codeforces Round 77 (Rated for Div. 2) D. A Game with Traps 贪心 +二分
  6. 汇编语言-018(FLD 、FST、FSTP、FCHS、FABS 、浮点运算符、浮点比较 )
  7. duilib vs2015 安装_FFmpeg视频播放器开发-FFmpeg简介与项目环境搭建(一)
  8. python接口自动化测试(七)-unittest-批量用例管理
  9. asp.net core的TagHelper简单使用
  10. 组织结构及权限模型设计
  11. Alibaba Cloud Linux 2 LTS 正式发布,提供更高性能和更多保障!
  12. vector函数里的pair用法
  13. oracle dba_tables degree default,oracle中如何将表的并行度设定为DEFAULT?如下:
  14. 操作系统总结之 输入输出系统(下)
  15. mysql目录结构与源码
  16. Linux制作简版的镜像,手把手教你制作一个精简版Windows10镜像
  17. 关于未知的USB设备(设备描述符请求失败)的解决方法。
  18. Go语言Cookie常用设置
  19. 【笔记】程序性能优化28个策略原则
  20. Vladik and fractions

热门文章

  1. 页面关闭时发起接口请求
  2. Linux常用命令之新手上路(二)
  3. ArcGIS MPK的两种打包方式_陈焜浩Arain_新浪博客
  4. 2015年百度之星程序设计大赛 - 资格赛 (1004放盘子)
  5. redhat rpmbuild 环境搭建
  6. 眼动数据分析基础_01
  7. Matlab中的movie问题、动态演示问题
  8. cmd界面英文变中文
  9. axios再次封装,axios拦截器
  10. 【时空融合:遥感图像】