[神经网络学习笔记]递归神经网络,即循环神经网络(Recurrent Neural Network,RNN)综述

本人刚入门神经网络,学习了各个大佬们的博客,按照自己的学习思路整理出来的笔记,边学习边完善,供入门的同学学习,其中可能有错误的地方,望指出

学习其他模型链接

  • [神经网络学习笔记]卷积神经网络CNN(Convolutional Neural Networks, CNN) 综述
  • [神经网络学习笔记]长短期记忆模型(Long-Short Term Memory,LSTM)综述

一、引言

  • 现实问题中存在着很多序列型的数据,例如文本、语音以及视频等。这些序列型的数据往往都是具有时序上的关联性的,既某一时刻网络的输出除了与当前时刻的输入相关之外,还与之前某一时刻或某几个时刻的输出相关。
  • 而前馈神经网络并不能处理好这种关联性,因为它没有记忆能力,所以前面时刻的输出不能传递到后面的时刻。

二、RNN本质

  • 本质:用于处理和预测序列数据的神经网络模型
  • 特点:神经元在某时刻的输出可以作为输入再次输入到神经元
  • RNN通常难以训练,循环多次之后,大多数情况下哎梯度往往倾向于消失,也有较少情况会发生梯度爆炸问题,针对此问题,提出长短期记忆LSTM网络。能够保持信息的长期存储。

三、RNN模型

[神经网络学习笔记]递归神经网络,即循环神经网络(Recurrent Neural Network,RNN)综述_第1张图片

循环神经网络的记忆单元会保存时刻时循环层(图中隐藏层)的状态,并在t+1时刻,将记忆单元的内容和t+1时刻的输入一起给到循环层。引导信息从输出单元返回隐藏单元.

四、RNN的应用

对NLP是非常成功的。如词向量表达、语句合法性检查、词性标注等

  • 情感分析
  • 提取关键词
  • 语音识别
  • 机器翻译

五、RNN训练的算法

(一)随时间反向传播(backpropagation through time,BPTT)

(二)实时循环学习(real-time recurrent learning,RTRL)

  • 两种算法都是基于梯度下降,不同的是BPTT算法是通过反向传播的方式来更新梯度,而RTRL算法则是使用前向传播的方式来更新梯度。目前,在RNN的训练中,BPTT是最常用的参数更新的算法。

三、RNN的梯度消失和梯度爆炸

  • 详细讲解梯度消失和梯度爆炸

(一)产生原因

其实就是矩阵的高次幂导致的。在多层神经网络中,影响因素主要是权值和激活函数的偏导数。

(二)梯度消失

[神经网络学习笔记]递归神经网络,即循环神经网络(Recurrent Neural Network,RNN)综述_第2张图片

前馈神经网络图1

[神经网络学习笔记]递归神经网络,即循环神经网络(Recurrent Neural Network,RNN)综述_第3张图片

求梯度公式图2
该前馈网络图,若要对于w1求梯度。根据图2求导法则。如果我们使用标准化初始w,那么各个层次的相乘都是0-1之间的小数,而激活函数f的导数也是0-1之间的数,其连乘后,结果会变的很小,导致梯度消失。 ### (三)梯度爆炸 若我们初始化的w是很大的数,w大到乘以激活函数的导数都大于1,那么连乘后,可能会导致求导的结果很大,形成梯度爆炸。

四、RNN和CNN的同异

(一)不同点

  • 普通卷积神经网络(CNN)处理的是 “静态” 数据,样本数据之间独立,没有关系。
  • 循环神经网络(RNN)处理的数据是 “序列化” 数据。 训练的样本前后是有关联的,即一个序列的当前的输出与前面的输出也有关。比如语音识别,一段语音是有时间序列的,说的话前后是有关系的。
  • 在空间或局部上有关联图像数据适合卷积神经网络来处理,在时间序列上有关联的数据适合用循环时间网络处理。

(二)相同点

  • 从硬件相关的算子角度来看,CNN和RNN没有特殊的算子。

五、学习汇报PPT

  • 汇报CNN+RNN+LSTM神经网络模型介绍PPT

你可能感兴趣的:(神经网络学习笔记)