首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深度学习——RNN(1)RNN基础LSTM

深度学习——RNN(1)RNN基础LSTM

作者头像
DC童生
发布2018-06-04 14:55:48
9190
发布2018-06-04 14:55:48
举报
文章被收录于专栏:机器学习原理机器学习原理

前言:为什么有BP神经网络、CNN,还需要RNN? BP神经网络和CNN的输入输出都是互相独立的,也就是说它模拟了神经元之间的信息传递过程,但是作为人,我们依旧会记得小时候的很多事情,这就需要RNN了

RNN基础

实际应用中有些场景输出内容和之前的内容是有关联的。 RNN引入“记忆”的概念;递归指其每一个元素都执行相同的任务,但是输出依赖于输入 和“记忆”。所以说RNN一般应用到NLP当中。

  • 循环神经网络中的“循环”体现在哪? 可以前bp神经网络不同的是,输入一个x,产生一个状态,保存,把这个状态作为输入,输入到下一次循环中,也就是说,把当前的信息进行记忆。用图可以直观理解。
  • 加入了哪些参数? 1.输入层到隐藏层直接的权重由U表示 2.隐藏层到隐藏层的权重W,它是网络的记忆控制者,负责调度记忆。 3.隐藏层到输出层的权重V
  • 正向传播 在t=1的时刻,U,V,W都被随机初始化好,s0通常初始化为0,然后进行如下计算:

时间就向前推进,此时的状态s1作为时刻1的记忆状态将参与下一个时刻的预测 活动,也就是:

以此类推,可得:

其中f可以是tanh,relu,sigmoid等激活函数,g通常是softmax也可以是其他。 值得注意的是,我们说递归神经网络拥有记忆能力,而这种能力就是通过W将以 往的输入状态进行总结,而作为下次输入的辅助。可以这样理解隐藏状态: h=f(现有的输入+过去记忆总结)

  • 反向传播 bp神经网络用到的误差反向传播方法将输出层的误差总和,对各个权重的梯度 ∇U,∇V,∇W,求偏导数,然后利用梯度下降法更新各个权重。 对于每一时刻t的RNN网络,网络的输出ot都会产生一定误差et,误差的损失函 数,可以是交叉熵也可以是平方误差等等。那么总的误差为E=∑tet,我们的目标 就是要求取:

用到链式求导法则,w的偏导如下:

u,V同理可以得到 问题,由于反向传播过程中,出现多个小于一想乘的情况,容易出现梯度消失,这时候LSTM和GRU模型便后续被推出了?由于它们都有特殊的方式存储”记忆”,那么以前梯度比较大的”记忆”不会像简单的RNN一样马上被抹除,因此可以一定程度 上克服梯度消失问题。

LSTM

LSTM是RNN的一种,大体结构一致,区别在于: LSTM的“记忆细胞”是改造过的 该记录的信息会一直传递,不该记录的信息会被截断掉. RNN 在语音识别,语言建模,翻译,图片描述等问题的应用的成功,都是通过 LSTM 达到的。

  • LSTM结构 传统的RNN“细胞”结构: 所有 RNN 都具有一种重复神经网络模块的链式的形式。在标准的 RNN 中,这个重复的模块只有一个非常简单的结构,例如一个 tanh 层。

LSTM结构: 单一神经网络层,这里是有四个,以一种非常特殊的方式进行交互。

图中使用的各种元素的图标:

每一条黑线传输着一整个向量,从一个节点的输出到其他节点的输入。粉色的圈代表 pointwise 的操作,诸如向量的和,而黄色的矩阵就是学习到的神经网络层。合在一起的线表示向量的连接,分开的线表示内容被复制,然后分发到不同的位置。

  • LSTM关键:“细胞状态” 细胞状态类似于传送带。 直接在整个链上运行,只有一些少量的线性交互。信息在上面流 传保持不变很容易。
  • LSTM怎么控制“细胞状态”? LSTM可以通过gates(“门”)结构来去除或者增加“细胞状态”的信息 包含一个sigmoid神经网络层次和一个pointwist乘法操作 Sigmoid层输出一个0到1之间的概率值,描述每个部分有多少量可以通过,0表示“不允 许任务变量通过”,1表示“运行所有变量通过” LSTM中主要有三个“门”结构来控制“细胞状态”
  • 第一个“门”==>“忘记门”: 决定从“细胞状态”中丢弃什么信息;比如在语 言模型中,细胞状态可能包含了性别信息(“他”或者“她”),当我们看到新的代名词的时候,可以考虑忘记旧的数据
  • 第二个“门”==>“信息增加门”: 决定放什么新信息到“细胞状态”中; Sigmoid层决定什么值需要更新; T anh层创建一个新的候选向量Ct; 主要是为了状态更新做准备
  • 经过第一个和第二个“门”后,可以确定传递信息的删除和增加,即可以进行 “细胞状态”的更新 更新Ct-1为Ct; 将旧状态与ft相乘, 丢失掉确定不要的信息; 加上新的候选值it*Ct得到最终更新后的“细胞状态”
  • 第三个“门”==>基于“细胞状态”得到输出; 首先运行一个sigmoid层来确定细胞状态的那个部分将输出 使用tanh处理细胞状态得到一个-1到1之间的值,再将它和sigmoid门的输出相乘,输出 程序确定输出的部分。

前向传播和反向传播可以参看前面的传播过程写下来,更新LSTM中的参数。具体的公式可以参看:https://blog.csdn.net/Dark_Scope/article/details/47056361 作者的论文:https://arxiv.org/pdf/1402.1128v1.pdf

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.06.03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • RNN基础
  • LSTM
相关产品与服务
语音识别
腾讯云语音识别(Automatic Speech Recognition,ASR)是将语音转化成文字的PaaS产品,为企业提供精准而极具性价比的识别服务。被微信、王者荣耀、腾讯视频等大量业务使用,适用于录音质检、会议实时转写、语音输入法等多个场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档