RNN 与 LSTM 的应用
之前已经介绍过关于 Recurrent Neural Nnetwork 与 Long Short-Trem Memory 的网络结构与参数求解算法( 递归神经网络(Recurrent Neural Networks,RNN) ,LSTM网络(Long Short-Term Memory )),本文将列举一些 RNN 与 LSTM 的应用, RNN (LSTM)的样本可以是如下形式的:1)输入输出均为序列;2)输入为序列,输出为样本标签;3)输入单个样本,输出为序列。本文将列举一些 RNN(LSTM) 的应用,了解 RNN(LSTM) 是如何应用在各种机器学习任务中的,在讲解具体任务之前,先看一下一些通用的 RNN(LSTM) 的结构,下图列举的这些结构都有描述详细的论文:
图中蓝色节点为输入,红色为输出,绿色为 hidden node 或者 memory block ,(a)描述的是传统的 MLP 网络,即不考虑数据的时序性,认为数据是独立的;(b)将输入序列映射为一个定长向量(分类标签),可用于文本、视频分类;(c)输入为单个数据点,输出为序列数据,典型的代表为 Image Captioning;(d)这种是一种结构 sequence-to-sequence 的任务,常被用于机器翻译,两个序列长度不一定相等;(e)这种结构会得到一个文本的生成模型,每词都会预测下一时刻的字符。
Machine Translation
机器翻译长期以来是 NLP任务 的一个难题,首先难点就在于文本表示方法,在 NLP 任务中,若处理词语级的序列, 当 RNN 的输出层为 $softmax$ 时,每个时刻输出会产生向量 $y^t \in \mathbb{R}^K $ , $K$ 即为词表的大小,$y^t$ 向量中的第 $k$ 维代表生成第 $k$ 个词语的概率;每个时刻的输入也均为一个词语,以前经常用 one-hot (Bag-of-Word)的方法表示,现在比较常用的是 distribute representation(Glove ,word2vec)。若 RNN 处理字符级序列,这时通常采用的是 ont-hot 的方式。通常文本分类方法采用 one-hot 的方式(不考虑词序)即可取得很好的效果,但是词序在文本翻译中很重要,比如“Scientist killed by raging virus”和 “Virus killed by raging scientist”的 ont-hot 表示结果完全相同,所以机器翻译非常有必要考虑词序。Sutskever et al. [2014] 提出一个两层 LSTM 结构的机器翻译模型,在将英语翻译为法语的任务上表现出色,第一层 LSTM 用来对输入英语语句(phrase)编码,第二层用来解码为法语语句(phrase),模型如下图所示:
图中 LSTM1 为 encoding LSTM, LSTM2 为 decoding LSTM ,蓝色与紫色节节点为输入,粉红节点为输出:
1)对源语句 $x^t$ 设置结束标志(实现时可任意设定不出现在语句中的符号),每次将一个词语送入 encoding LSTM中,且每次网络均不输出。
2)当到达 $x^t$ 的末尾(图中的<EOS>),意味着目标语句将开始被送往 decoding LSTM,如图中的<EOS>对应 “j’al”,且 decoding LSTM 将 encoding LSTM 的输出作为输入(图中 LSTM1 $\rightarrow $ LSTM2 交接处),decoding LSTM 在每个时刻的输出为与词表大小相同的 $softmax$ 层,分量代表每个词语的概率。
3)推断时,在每个时刻通过 beam search 来找到最有可能的词语。直到输出达到<EOS>为结束状态。
训练阶段,将输入语句扔进 encoder ,翻译语句被扔进 decoder ,损失从 decoder 一直回传到最开始,整个模型通过极大化训练集中标签样本的概率,推断时,运行一个从左到右的 beam search 算法来找到最优序列,原文中作者用 SGD 来训练,每跑完一次 epoch ,将学习速率减半,跑完 5 个 epoch, BLEU 值(用来度量模型的好坏)达到 start –of-the-art ,模型本身通过 8 个 GPU 跑了 10 天训练出来的 - -!,每个 LSTM memory block 含有 1000 个 memory cell,英语词表为 160,000 ,法语词表为 80,000 ,权重初始化为 (-0.08,0.08) 的均匀分布。
Image Captioning
最近一些工作是关于用自然语言描述一幅图像([Vinyals et al., 2015, Karpathy and Fei-Fei,2014, Mao et al., 2014].)。
Image Captioning 是一种监督学习任务,输入数据为图像 $x$ ,输出数据为描述图像的语句 $y$ 。Vinyals et al. [2015]的做法类似于刚才的 Machine Translation ,只不过将原来的 encoder 换成 Convolution Neural Network ,decoder 还是 LSTM 层,Karpathy and Fei-Fei [2014] 使用一种带有 attention 机制的双向 CNN 来 encoding 图像,且用标准的 RNN 去解码对图像的说明,使用的是 word2vec 产生的词向量。该模型即产生整个图片的 captioning ,并且还会产生图像区域与文本片段的对应性。
对印图片进行推断时,过程类似于 Machine Translation ,每次解码一个单词,得到最优词语作为下一时刻的输入,知道到达<EOS>.Karpathy and Fei-Fei 分别在三个数据集上进行试验: [Flickr8K, Flickr30K, and COCO, 大小分别为50MB (8000 images), 200MB (30,000 images), 与 750MB (328,000 images)],且 encoder 用的 CNN 是在 Image Net 上训练的。
其他的一些任务 比如 Handwriting recognition,在这个任务上,bidirectional LSTM 达到了 state-of-the-art 的效果, HMM 的准去率为 70.1% , 而 bidirectional LSTM 达到了 81.5% 。且这几年人们还有把以上成功的方法与应用到 unsupervised video encoding [Srivastava et al., 2015] 与 video captioning [Venugopalan et al., 2015] 甚至 program execution [Zaremba and Sutskever, 2014] ,video captioning 中作者用 CNN 得到图片的帧的特征 然后扔到 LSTM 里去编码,解码时生成对应的词语。
RNN 与 LSTM 的应用的更多相关文章
- RNN and LSTM saliency Predection Scene Label
http://handong1587.github.io/deep_learning/2015/10/09/rnn-and-lstm.html //RNN and LSTM http://hando ...
- Naive RNN vs LSTM vs GRU
0 Recurrent Neural Network 1 Naive RNN 2 LSTM peephole Naive RNN vs LSTM 记忆更新部分的操作,Naive RNN为乘法,LSTM ...
- TensorFlow之RNN:堆叠RNN、LSTM、GRU及双向LSTM
RNN(Recurrent Neural Networks,循环神经网络)是一种具有短期记忆能力的神经网络模型,可以处理任意长度的序列,在自然语言处理中的应用非常广泛,比如机器翻译.文本生成.问答系统 ...
- RNN和LSTM
一.RNN 全称为Recurrent Neural Network,意为循环神经网络,用于处理序列数据. 序列数据是指在不同时间点上收集到的数据,反映了某一事物.现象等随时间的变化状态或程度.即数据之 ...
- 浅谈RNN、LSTM + Kreas实现及应用
本文主要针对RNN与LSTM的结构及其原理进行详细的介绍,了解什么是RNN,RNN的1对N.N对1的结构,什么是LSTM,以及LSTM中的三门(input.ouput.forget),后续将利用深度学 ...
- 3. RNN神经网络-LSTM模型结构
1. RNN神经网络模型原理 2. RNN神经网络模型的不同结构 3. RNN神经网络-LSTM模型结构 1. 前言 之前我们对RNN模型做了总结.由于RNN也有梯度消失的问题,因此很难处理长序列的数 ...
- RNN以及LSTM的介绍和公式梳理
前言 好久没用正儿八经地写博客了,csdn居然也有了markdown的编辑器了,最近花了不少时间看RNN以及LSTM的论文,在组内『夜校』分享过了,再在这里总结一下发出来吧,按照我讲解的思路,理解RN ...
- 深度学习:浅谈RNN、LSTM+Kreas实现与应用
主要针对RNN与LSTM的结构及其原理进行详细的介绍,了解什么是RNN,RNN的1对N.N对1的结构,什么是LSTM,以及LSTM中的三门(input.ouput.forget),后续将利用深度学习框 ...
- 利用RNN(lstm)生成文本【转】
本文转载自:https://www.jianshu.com/p/1a4f7f5b05ae 致谢以及参考 最近在做序列化标注项目,试着理解rnn的设计结构以及tensorflow中的具体实现方法.在知乎 ...
随机推荐
- iOS-xib(使用XIB实现嵌套自定义视图)
参考:http://wtlucky.github.io/geekerprobe/blog/2014/08/10/nested-xib-views/?utm_source=tuicool 因为主要练习x ...
- 免安装jdk 和 免安装tomcat
免安装tomcat 运行的时候要执行免安装的 jdk,可以进行如下设置. 在 startup.bat 里加上这么一句, set "JAVA_HOME=C:\jdk1.6.0_43"
- PYTHON发送邮件时,有的服务器不用密码认证的
#!/usr/bin/python # coding: UTF-8 import smtplib from email.mime.text import MIMEText receivers_list ...
- sqlserver 分页
SQL语句: create PROCEDURE [dbo].[GetPageDataOutRowNumber] ( @tn nvarchar(),--表名称 @idn nvarchar(),--表主键 ...
- C#DataGridView 美化
private void dataGridView(DataGridView dataGridView) { System.Windows.Forms.DataGridViewCellStyle da ...
- .NET单例模式-------各种写法&&验证
.NET单例模式-------各种写法&&验证 前言 单例模式对大家来说都不陌生,也很容易搞懂其原理,本篇文章也不提供单例模式的详细原理解析,本篇文章的目的是展示在C#中单例模式的各种 ...
- PowerDesigner中name和code取消自动关联
PowerDesigner中,如果修改了某个字段的name,其code也跟着修改,如果想取消,可以如下操作 解决方法如下: 1.选择Tools->GeneralOptions...菜单,出现Ge ...
- 求1+2+…+n,要求不能使用乘除法、for、while、if、else、s witch、case 等关键字以及条件判断语句(A?B:C)和不用循环/goto/递归输出1~100的10种写法
来源:据说是某一年某个公司的面试题 题目:求1+2+…+n, 要求不能使用乘除法.for.while.if.else.s witch.case 等关键字以及条件判断语句(A?B:C) 分析:这题本来很 ...
- 什么是智能dns解析
智能DNS解析是针对目前电信和网通互联互通不畅的问题推出的一种DNS解决方案.具体实现是:把同样的域名如test.winiis.com的A记录分别设置指向网通和电信IP,当网通的客户访问时,智能DNS ...
- Eclipse项目内存溢出解决方案
方法一: 打开eclipse,选择Window--Preferences...在对话框左边的树上双击Java,再双击Installed JREs,在右边选择前面有对勾的JRE,再单击右边的“Edit” ...