循环神经网络原理笔记

循环神经网络原理笔记

(1)数学原理

循环神经网络就是一类以序列(sequence)数据为输入,在序列的演进方向进行递归(recursion)且所有节点(循环单元)按链式连接的递归神经网络(recursive neural network)。
如下图,就是每一层的输入为这一段话分词之后的单词X1,X2,X3…(单词是经过处理的,比如one-hot编码),初始化一个a0(可以是0向量也可以是随机向量),与该层权重Waa,Wax,经过一系列运算之后得到a1,再将a1与Wya进行运算之后得到y ^,这种结构下生成的每一个y ^都只与该层之前的x相关。每一层共享权重,Waa为一个时间步。计算公式见下方。
注:双向循环神经网络就可以使其前后都相关联。
循环神经网络原理笔记

循环神经网络原理笔记
计算公式:
循环神经网络原理笔记
RNN前向传播示意图:
循环神经网络原理笔记
RNN的反向传播是通过时间的反向传播,它的计算方向是逆时间顺序的。
循环神经网络原理笔记
RNN反向传播示意图:
循环神经网络原理笔记

(2)基本RNN结构

一对一:基本单元
一对多:音乐生成/序列生成。是将上一层的输出当下一层的输入。
多对一:情感分类。将输出与所有输入相关联。
多对多:1、输入输出长度相同:命名实体识别。输出与该点之前的内容相关联。2、输入输出长度不同:机器翻译。输入部分可看作编码器,输出部分看作解码器。
循环神经网络原理笔记

(3)梯度消失

神经网络反向传播的时候,当网络层数很大时,后面的层得到的y很难传播回去,很难影响靠前层的权重。在RNN中,因为梯度消失,后层的输出误差难以影响前面层的计算,导致RNN不擅长捕捉长期依赖(如:一段话的主语与句子后面动词形态之间的关联,由于动词和主语之间可以间隔很长,在训练时后面动词影响很难传播到前面主语所在的层形成关联)。基本RNN模型中一层的参数只能受到附近几层的影响。RNN不能很好的处理长期依赖的问题。
为了解决梯度消失的问题,引入GRU单元(门控循环单元)和LSTM单元(长短期记忆单元)。

(4)GRU与LSTM单元

1、GRU(门控循环单元)

GRU有两个门:更新门u和相关门r告诉网络什么时候更新。
更新门u是一个0~1的值,它告诉网络什么时候该更新记忆细胞的值。
相关门r告诉c与c之间的相关性。

使用数学表达式表示如下:
循环神经网络原理笔记
直观一点看如下:
循环神经网络原理笔记

2、LSTM(长短期记忆)

LSTM有三个门:更新门u、遗忘门f、输出门o。
使用数学表达式表示如下:
循环神经网络原理笔记
直观表示如下:
循环神经网络原理笔记

(5)BRNN 与 Deep RNNs

1、BRNN(双向循环神经网络)

双向循环神经网络解决了基本神经网络只能获取“过去”信息的问题。它是由不同的单元(基本RNN单元、GRU单元、LSTM单元)组成的可以反映”过去“、”未来“信息的网络 。

循环神经网络原理笔记
y值不仅与“过去”相关,也受“未来”影响。

2、Deep RNNs(深层循环神经网络)

深层循环神经网络是将多个RNN进行堆叠之后,按时间展开的网络。它的每一层,共享权值
循环神经网络原理笔记

结语

学习内容是吴恩达深度学习第五课:序列模型,
部分截图自黄海广深度学习笔记,
内容只是自己日常学习笔记备份。

上一篇:DialogueRNN : An Attentive RNN for Emotion Detection in Conversations


下一篇:android 细节之 AndroidRuntimeException:This message is already in use