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

前言:为什么有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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏人工智能LeadAI

TensorFlow从0到1 | 第七篇:TensorFlow线性回归的参数溢出之坑

上一篇 6 解锁梯度下降算法 解释清楚了学习率(learning rate)。本篇基于对梯度下降算法和学习率的理解,去填下之前在线性回归中发现的一个坑。 在5 ...

30550
来自专栏决胜机器学习

机器学习(二十三) —— 大数据机器学习(随机梯度下降与map reduce)

机器学习(二十三)——大数据机器学习(随机梯度下降与map reduce) (原创内容,转载请注明来源,谢谢) 一、概述 1、存在问题 当样本集非常大的时候,...

39830
来自专栏人工智能

基于TensorFlow生成抽象纹理

来源:otoro 编译:weakish 编者按:Google Brain机器学习开发者hardmu使用TensorFlow,基于CPPN网络生成了许多有趣的高分...

57680
来自专栏机器学习之旅

R开发:协调过滤推荐

对于realRatingMatrix有六种方法:IBCF(基于物品的推荐)、UBCF(基于用户的推荐)、PCA(主成分分析)、RANDOM(随机推荐)、SVD(...

11320
来自专栏ATYUN订阅号

图像处理:利用神经网络生成新图像和修复旧图像

查看附带Python代码的GitHub repo(链接地址为https://github.com/philkuz/PixelRNN)和Jupyter笔记本(链接...

1.1K70
来自专栏杨熹的专栏

图解何为CNN

参考 CNN - Convolutional Neural Networks 是近些年在机器视觉领域很火的模型,最先由 Yan Lecun 提出。 如果想学细...

34550
来自专栏机器之心

教程 | 如何在Python中用scikit-learn生成测试数据集

350110
来自专栏机器学习算法与理论

使用开源人脸特征提取器进行脸部颜值评分

本文仅为模型应用实战,而非颜值研究,所得结果仅供娱乐,仅供参考。 方法也仅供参考。 一般而言,数据量越大,结果越接近正常人审美。由于本次数据量较小,故仅为实验。...

84690
来自专栏UAI人工智能

基于RLLAB的强化学习 REINFORCE 算法解析

24320
来自专栏AI深度学习求索

目标检测(CVPR2017):Feature Pyramid Networks

(a)使用图像金字塔构建特征金字塔网络:每个图像尺度上的特征都是独立计算的,速度缓慢。

24430

扫码关注云+社区

领取腾讯云代金券