seq2seq attention
1.seq2seq:分为encoder和decoder
a.在decoder中,第一时刻输入的是上encoder最后一时刻的状态,如果用了双向的rnn,那么一般使用逆序的最后一个时刻的输出(网上说实验结果比较好)
b.每一时刻都有一个输出,即:[batch_size, decoder_output_size],经过一个MLP后,都跟词汇表中的每一个词都对应了一个概率,即: [batch_size, vocab_size]。
c.将每一个时刻的输出拼接起来,那么就是[batch_size, decoder_timestep, vocab_size],然后用beam search去寻找最优的解。
2.seq2seq attention: 在decoder的时候加入了attention机制
a.在decoder中,第一时刻输入的是上encoder最后一时刻的状态,如果用了双向的rnn,那么一般使用逆序的最后一个时刻的输出c0(网上说实验结果比较好),以后每一个时刻的输入则是上一时刻的输出与encoder的隐状态计算attention加权的结果。
b.attention:
1).用c0去跟encoder的所有时间步骤中的输出,进行match,即:用c0去和所有的输入求一个相似度,那么这个就是一个权值(attention的权值),含义就是当前时刻的输入是有encoder中的哪几个时刻来决定的,就是神经网络翻译中的那张经典的图。
2).decoder第一个时间步骤c1,会输出一个向量,那么再重复1)中的步骤用c1替换c0
c.将每一个时刻的输出拼接起来,那么就是[batch_size, decoder_timestep, vocab_size],然后用beam search去寻找最优的解。
attention decoder tensorflow api
https://tensorflow.google.cn/api_docs/python/tf/contrib/legacy_seq2seq/attention_decoder
在输入decoder的时候,输入的是
a.decoder input: 正确的输出序列,为什么要输入正确的序列,用正确的每个时刻的输入来替换上一时刻的输出,例如:t0时刻的输出应该输入到t1时刻,但是这里直接输入decoder inputs t1时刻的序列,把decoder input t1时刻的输入与decoder t0的输出拿来计算Loss,相当于引导的作用;而在测试的时候,直接用上一时刻的输出,不用decoder input。
b.init state: 初始化状态。
c.attention state: 注意力状态
d.cell: rnn cell
e.num_threads: 相当于计算出来的attention的倍数
f.loop_function: 如果为空,则不使用,如果不为空,则对上一时刻的输出做一些处理,用返回值替换上一时刻的输出
g.init_state_attention: 如果为true,则用c中的attention state来计算attention,如果为false,则全部为0;在训练时,置为0,因为下一时刻的输入是由decoder input来决定的,不关attention的事,所有用不到,所有为0.
在计算loss的时候,有一个weight,因为输出的序列长度不固定(开始我们固定了输出序列长度,不足则pad),为了方便计算loss,有词的地方(时间序列)*1,没有词的地方* 0,表示不计算loss。
在训练的时候:
输入到模型中有两个decoder inputs,一个是输入到decoder里面的,一个是输入到loss里面的,输入到decoder里面的需要再前面加一个开始符,因为是要训练的,第一个时刻的输出是词,所以是[start_token,word_embed,word_embed,....];输入到loss里面的是[word_embed,word_embed,....,end_token]

上面的输入是loss输入,下面的输入是decoder的输入,每个时刻拿来计算loss,最后对loss求和。
seq2seq attention的更多相关文章
- DL4NLP —— seq2seq+attention机制的应用:文档自动摘要(Automatic Text Summarization)
两周以前读了些文档自动摘要的论文,并针对其中两篇( [2] 和 [3] )做了presentation.下面把相关内容简单整理一下. 文本自动摘要(Automatic Text Summarizati ...
- 深度学习中的序列模型演变及学习笔记(含RNN/LSTM/GRU/Seq2Seq/Attention机制)
[说在前面]本人博客新手一枚,象牙塔的老白,职业场的小白.以下内容仅为个人见解,欢迎批评指正,不喜勿喷![认真看图][认真看图] [补充说明]深度学习中的序列模型已经广泛应用于自然语言处理(例如机器翻 ...
- Tensorflow Seq2seq attention decode解析
tensorflow基于 Grammar as a Foreign Language实现,这篇论文给出的公式也比较清楚. 这里关注seq2seq.attention_decode函数, 主要输入 de ...
- seq2seq+attention解读
1什么是注意力机制? Attention是一种用于提升Encoder + Decoder模型的效果的机制. 2.Attention Mechanism原理 要介绍Attention Mechanism ...
- seq2seq&attention图解
- NLP Attention
一.概述 自动摘要可以从很多角度进行分类,例如单文档摘要/多文档摘要.单语言摘要/跨语言摘要等.从技术上说,普遍可以分为三类: i. 抽取式摘要(extractive),直接从原文中抽取一些句子组成摘 ...
- attention 汇总(持续)
Seq2seq Attention Normal Attention 1. 在decoder端,encoder state要进行一个线性变换,得到r1,可以用全连接,可以用conv,取决于自己,这里 ...
- Attention & Transformer
Attention & Transformer seq2seq; attention; self-attention; transformer; 1 注意力机制在NLP上的发展 Seq2Seq ...
- NLP之基于Seq2Seq和注意力机制的句子翻译
Seq2Seq(Attention) @ 目录 Seq2Seq(Attention) 1.理论 1.1 机器翻译 1.1.1 模型输出结果处理 1.1.2 BLEU得分 1.2 注意力模型 1.2.1 ...
随机推荐
- (二分匹配 模板)过山车 -- hdu --2063
链接: http://acm.hdu.edu.cn/showproblem.php?pid=2063 http://acm.hust.edu.cn/vjudge/contest/view.action ...
- CDialog
对话框和对话框类CDialog 对话框经常被使用,因为对话框可以从模板创建,而对话框模板是可以使用资源编辑器方便地进行编辑的. 模式和无模式对话框 对话框分两种类型,模式对话框和无模式对话框. 模式对 ...
- 网页程序 vs 桌面程序
网页程序 vs 桌面程序 阅读: 评论: 作者:Rybby 日期: 来源:rybby.com 所谓的网页程序就是指以网页作为程序的操作界面,通过脚本语言“javascript”或其它客户端语言 ...
- 今天犯了一个StringBuilder构造函数引起的二逼问题。
在.Net里,StringBuilder的构造函数有很多,最常用的是无参的构造函数,默认分配16个字符的空间.其次就是填写StringBuilder空间的带一个Int32的构造函数,这个在优化代码的时 ...
- Android 将APK文件安装到AVD中并分析其界面结构
配置环境变量 将android sdk 中的android-sdk\tools .android-sdk\platform-tools 添加到windows环境变量中.用于打开android sdk中 ...
- Android开发基于百度地图的乘车助手
写在前面: 出去玩免不了挤公交.等地铁,不知道乘车方案当然不行,用官方APP吧,缺点一大堆,手机浏览器在线查的话既慢又麻烦...为了解决这些问题,我们来做一个简版的出行助手,嘛嘛再也不用担心我会迷路了 ...
- Win10更新失败 无限重启 怎么修复
首先使用安全模式进入电脑,win+R 输入gpedit.msc,进入组策略管理器.或者在开始菜单输入gpedit.msc 在组策略的左侧依次单击打开“计算机配置—管理模板—Windows组件”,并在右 ...
- SQL处理数据并发,解决ID自增
1 创建MaxIdProcess表,由于存储ID的最大值 CREATE TABLE [dbo].[MaxIdProcess]( ,) NOT NULL, --自增ID ) NOT NULL, --存储 ...
- UWP开发---DIY星级评分控件
一,需求来源 在开发韩剧TV UWP过程中,遇到了星级评分的控件问题,在安卓和html中很容易用现有的轮子实现星级评分,搜索了一下目前UWP还未有相关文章,在WPF的一篇文章中使用Photo shop ...
- 如何在centos下配置redis开机自启动
2014/11/10补充:其实在redis的下载包中就包含了官方自带的启动脚本,路径在/redis-stable/utils/redis_init_script.在utils目录下也有安装redis- ...