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 ...
随机推荐
- spring读取数据库的配置信息(url、username、password)时的<bean>PropertyPlaceholderConfigurer的用法
用法1: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://w ...
- [redis] redis 如何删除匹配模式的多个key值
redis-cli keys "user:*" | grep "user:[0-9]\+$" | xargs redis-cli DEL redis-cli k ...
- 破解Oracle ERP密码
前提:你有apps的数据库账户,想知道某个用户的密码,因为fnd_user中的密码为加密的,所以无法看懂,你可以尝试用下边的方式来查看用户密码. SQL> desc fnd_user; Name ...
- Android-fragment简介-fragment的简单使用
1.fragment简介 在Android3.0版本之前Google还没有推出fragment,在Android3.0版本之后Google推出了fragment,由于Android3.0版本是过渡期版 ...
- Android-ByteUtil工具类
Byte处理转换相关的工具类: public class ByteUtil { private ByteUtil(){} /** * 把byte[] 转成 Stirng * @param bytes ...
- 曲演杂坛--使用TRY CATCH应该注意的一个小细节
群里一个朋友遇到一个TRY CATCH的小问题,测试后发现是自己从来没有考虑的情况,写篇blog加深下印象 --============================================ ...
- C# 对接Https接口
最近公司项目需要对接Https接口,将对接的代码整理如下: public void Get() { HttpWebRequest request = null; request = WebReques ...
- C# Po3协议读取邮件内容遇到的问题
背景:最近在做一个小工具,读取PO3协议邮件服务器的指定人员的邮件,东西做出来了,弄了一个While死循环,20秒执行一次, 结果运行了3天,周一来IT人员找上门来了,你的电脑什么情况,怎么一个小时下 ...
- 微信退款证书使用c#
微信退款需要证书 data为已封装好的xml数据 具体怎么封装>打开 public string get(string data) { string cert = @"D:\certi ...
- OpenVswitch mirror 镜像功能
# 从int-br-eth1进入的包镜像一份给dummy0 # 现象:dummy0 可以抓到 int-br-eth1 进入的包 modprobe dummy ip link set up dummy0 ...