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

首先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. 何为OKR?为何使用OKR?
  2. 06-02-测试 Office Online Server Updated 2018
  3. MySQL utf8mb4与emoji表情
  4. oracle中app文件夹下,Oracle Form开发之folder(文件夹)功能开发(一)
  5. Camera Calibration and 3D Reconstruction
  6. 一个使用ABAP Push Channel开发的乒乓球游戏,可以双打
  7. 蓝桥杯 历届试题 九宫重排 (bfs+康托展开去重优化)
  8. 数据结构排序法之希尔排序法(Shell Sort)
  9. codeforce 804B Minimum number of steps
  10. java shell排序_八大排序算法——希尔(shell)排序
  11. php模糊搜索 变量,自定义搜索seo变量{param}字符串
  12. 台式电脑计算机图标打不开怎么办,电脑计算机图标打不开怎么办
  13. 行业软件之PTV微观软件VISSIM4.3 5.0 5.1 5.2 5.3 5.4下载和相关资料
  14. 南京邮电大学812自动控制原理高分经验
  15. delphi mysql5_Delphi7连接MySql5.5.15
  16. 苹果cms播放器html,苹果cms 全局播放器dplayer带后台Dplayer播放器苹果CMSV10插件
  17. ValueError: Variable in_hidden/weights already exists, disallowed. Did you mean to set reuse=True or
  18. Java.math.BigDecimal.subtract()方法实例
  19. Warshall算法代码实现
  20. 怪诞行为学 读书笔记

热门文章

  1. 根据年份与月份获取年、月、日
  2. WIN7 XP设置MTU,提升下载速度
  3. linux ubantu / linux mint安装howdy人脸识别
  4. sae php 短信,中国电信翼聊短信PHP发送类实现详细代码
  5. Proteus彻底卸载干净和license密钥报错等问题
  6. (转载)超级精仿高仿金山手机卫士源码
  7. 设计模式:概念和类型
  8. 开源聊天机器人程序QRobot(QuickRobot)
  9. Django笔记(五)
  10. 应用计算机软件matlab使用迭代法仿真激光谐振腔模式_【激光器诞生60周年】带“旋”光束不简单...