系统学习NLP(十五)--seq2seq
转自:https://blog.csdn.net/aliceyangxi1987/article/details/73420477
本文结构:
- 什么是 seq2seq?
- Encoder–Decoder 结构?
- seq2seq 结构?
什么是 seq2seq?
seq2seq 是一个 Encoder–Decoder 结构的网络,它的输入是一个序列,输出也是一个序列, Encoder 中将一个可变长度的信号序列变为固定长度的向量表达,Decoder 将这个固定长度的向量变成可变长度的目标的信号序列。
这个结构最重要的地方在于输入序列和输出序列的长度是可变的,可以用于翻译,聊天机器人,句法分析,文本摘要等。
下面是写过的 seq2seq 的应用:
RNN与机器翻译
http://www.jianshu.com/p/23b46605857e
如何自动生成文本摘要
http://www.jianshu.com/p/abc7e13abc21
自己动手写个聊天机器人吧
http://www.jianshu.com/p/d0f4a751012b
Encoder–Decoder 结构?
Cho 在 2014 年提出了 Encoder–Decoder 结构,即由两个 RNN 组成,
https://arxiv.org/pdf/1406.1078.pdf
(其中的 RNNCell 可以用 RNN ,GRU,LSTM 等结构)
在每个时刻, Encoder 中输入一个字/词,隐藏层就会根据这个公式而改变,
到最后一个字/词 XT 时 ,隐藏层输出 c ,因为 RNN 的特点就是把前面每一步的输入信息都考虑进来了,所以 c 相当于把整个句子的信息都包含了,可以看成整个句子的一个语义表示。
Decoder 在 t 时刻的隐藏层状态 ht 由 ht−1,yt−1,c 决定:
yt 是由 ht,yt−1,c 决定:
f 和 g 都是激活函数,其中 g 函数一般是 softmax。
模型最终是要最大化下面这个对数似然条件概率:
其中每个 (xn, yn) 表示一对输入输出的序列, θ 为模型的参数。
seq2seq 结构?
Sutskever 在 2014 年也发表了论文:
https://arxiv.org/pdf/1409.3215.pdf
这个模型结构更简单,
因为 Decoder 在 t 时刻 yt 是由 ht,yt−1 决定,而没有 c:
论文中的 Encoder 和 Decoder 都用的 LSTM 结构,注意每句话的末尾要有 “” 标志。 Encoder 最后一个时刻的状态 [cXT,hXT] 就和第一篇论文中说的中间语义向量 c 一样,它将作为 Decoder 的初始状态,在 Decoder 中,每个时刻的输出会作为下一个时刻的输入,直到 Decoder 在某个时刻预测输出特殊符号 结束。
LSTM 的目的是估计条件概率 p(y1, … , yT′ |x1, … , xT ) ,
它先通过最后一个隐藏层获得输入序列 (x1, … , xT ) 的固定长度的向量表达 v,
然后用 LSTM-LM 公式计算输出序列 y1, … , yT′ 的概率,
在这个公式中,初始状态就是 v,
而且用了 4 层的 LSTM,而不是一层:论文中的实验结果表明深层的要比单层的效果好
下面是个 3 层的例子
计算公式如下:
为了便于理解,单层的表示如下:
并且对输入序列做了一个翻转,即不是把 a, b, c 映射到 α, β, γ, 而是把 c, b, a 映射到 α, β, γ, 这样的结果是相应的 a 会更接近 α,并且更利于 SGD 建立输入输出间的关系。
参考:
Learning Phrase Representations using RNN Encoder–Decoder
for Statistical Machine Translation
https://arxiv.org/pdf/1406.1078.pdf
Sequence to Sequence Learning
with Neural Networks
https://arxiv.org/pdf/1409.3215.pdf
Generating Sequences With
Recurrent Neural Networks
https://arxiv.org/pdf/1308.0850.pdf
系统学习NLP(十五)--seq2seq相关推荐
- 系统学习NLP(五)--句法分析
转自:https://www.jianshu.com/p/fb408b6a0904 真佩服作者的毅力,把基础概念都敲出来了... 句法分析的基本任务是确定句子的语法结构或句子中词汇之间的依存关系.句 ...
- java系统学习(十五) --------xml基础
XML的产生及于HTML的比较 XML的产生 XML的全称是"Extensible Markup Language",是可扩展的标记语言.为什么说它是可扩展的?它又扩展谁?其实它由 ...
- [系统安全] 四十五.APT系列(10)Metasploit后渗透技术信息收集、权限提权和功能模块详解
您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...
- windows内核开发学习笔记十五:IRP结构
windows内核开发学习笔记十五:IRP结构 IRP(I/O Request Package)在windows内核中,有一种系统组件--IRP,即输入输出请求包.当上层应用程序需要访问底层输入输 ...
- 5G基础知识学习(十五)—NSA手机的5G信号是怎么显示的?
5G基础知识学习(十五)-NSA手机的5G信号是怎么显示的? 参考网址:http://www.txrjy.com/thread-1106049-1-1.html 看完了前面的连载,相信大家对NSA也就 ...
- Polyworks脚本开发学习笔记(十五)-用Python连接Polyworks的COM组件
Polyworks脚本开发学习笔记(十五)-用Python连接Polyworks的COM组件 用Polyworks脚本开发,没有高级语言的支持,功能难免单一,一些比较复杂的交互实现不了,界面和报告也很 ...
- 孤傲苍狼 只为成功找方法,不为失败找借口! javaweb学习总结(十五)——JSP基础语法 任何语言都有自己的语法,JAVA中有,JSP虽然是在JAVA上的一种应用,但是依然有其自己扩充的语
javaweb学习总结(十五)--JSP基础语法 任何语言都有自己的语法,JAVA中有,JSP虽然是在JAVA上的一种应用,但是依然有其自己扩充的语法,而且在JSP中,所有的JAVA语句都可以使用. ...
- Linux的冒号和波浪号用法,shell 学习三十五天---波浪号展开与通配符
shell 学习三十五天---波浪号展开与通配符 shell 中两种与文件名相关的展开.第一种是波浪号展开,第二种是通配符展开式. 波浪号展开 如果命令行字符串的第一个字符为波浪号(~),或者变量指定 ...
- Linux的基本学习(十五)——认识系统服务
Linux的基本学习(十五)--认识系统服务 前言 继续学习Linux 什么是daemon与服务(service) 从CentOS 7.x开始,传统的init已经被抛弃,取而代之的是systemd 什 ...
- python数据挖掘学习】十五.Matplotlib调用imshow()函数绘制热图
python数据挖掘学习]十五.Matplotlib调用imshow()函数绘制热图 #2018-03-28 14:47:19 March Wednesday the 13 week, the 087 ...
最新文章
- JavaXml教程(一)简介
- jquery ajax json 数据的遍历
- Deeplearning入门篇(2)
- openssl php api,PHP7使用openssl解密易班API中的用户数据
- c语言fgets函数的用法
- html盒子模型子元素怎么水平占满父元素_立下flag)每日10道前端面试题18 关于【盒模型】十问...
- Integer与int的种种比较你知道多少?
- shell直接退出后 后台进程关闭的原因和对处
- 创业当然比守业难太多
- python中文件的读写方式_Python文件处理之文件写入方式与写缓存(三)
- 计算机科学导论第5版ppt,计算机科学导论第5讲-1.ppt
- 分布式机器学习原理及实战(Pyspark)
- 腾讯实习生招聘之总体感悟
- 天池大数据比赛-天体分类总结
- 调查计算机对运算能力的影响,计算器对运算能力的影响
- 我把自己的java库发布到了maven中央仓库,从此可以像Jackson、Spring的jar一样使用它了
- net.sf.json
- Linux MySQL数据库冷迁移采坑记录
- 使用python爬取中国电影票房数据并写入csv文件
- 【雅思】【绿宝书错词本】List1~12
热门文章
- iOS base64编解码
- windows Server 2016 开启远程登录和多用户同时远程登录
- oracle解析关闭,oracle起动和关闭详解(转)
- 3h精通OpenCV(二)-基本功能
- java 1.7图片压缩_appium+java(七)图片的放到及缩小操作
- 计算机软件技术职业工作规划,软件技术职业规划书.docx
- opencv双线程图片处理_打开正经图片,你可能会看到一张黄图,这种造假方法能同时骗过 AI 和人眼...
- 如何让debuge的dll名字改变_杨石头:如何给品牌取个好名字?
- linux下esc退不出vi
- 基于matlab的数字水印技术研究,MATLAB在数字水印技术研究中的应用