写给自己的备忘内容:RNN的基础

1概述

Recurrentneural network,循环神经网络,在普通多层BP神经网络基础上,增加了隐藏层各单元间的横向联系,通过一个权重矩阵,可以将上一个时间序列的神经单元的值传递至当前的神经单元,从而使神经网络具备了记忆功能,对于处理有上下文联系的NLP、或者时间序列的机器学习问题,有很好的应用性。

 

2、特点、优点

优点:模型具备记忆性。缺点:不能记忆太前或者太后的内容,因为存在梯度爆炸或者梯度消失。

 

3、模型

RNN循环神经网络以及LSTM长短期记忆模型-简介

1输出层的计算公式,输出层是一个全连接层,也就是它的每个节点都和隐藏层的每个节点相连。V是输出层的权重矩阵g**函数。式2是隐藏层的计算公式,它是循环层U是输入x的权重矩阵,W是上一次的值作为这一次的输入的权重矩阵f**函数

 RNN循环神经网络以及LSTM长短期记忆模型-简介

双向循环神经网络:

1输出层的计算公式,输出层是一个全连接层,也就是它的每个节点都和隐藏层的每个节点相连。V是输出层的权重矩阵g**函数。式2是隐藏层的计算公式,它是循环层U是输入x的权重矩阵,W是上一次的值作为这一次的输入的权重矩阵f**函数

 

双向循环神经网络:

RNN循环神经网络以及LSTM长短期记忆模型-简介

RNN循环神经网络以及LSTM长短期记忆模型-简介

4、常见**函数/激励函数

参考博文的神经网络简介。

 

5、代价函数

原理与NN一样。

类似这种:

RNN循环神经网络以及LSTM长短期记忆模型-简介

6、求解模型参数的方法

BPTT。(backpropagation through time)

BPTT算法是针对循环层的训练算法,它的基本原理和BP算法是一样的,也包含同样的三个步骤:

首先确定参数的初始化值,然后

1.    前向计算每个神经元的输出值;于是,就有了代价函数的值,接下来需要算出各个参数的梯度,从而能够让参数沿梯度下降。

2.    反向计算每个神经元的误差项值,它是误差函数E对神经元j加权输入的偏导数;反向传播包括两个层面:一个是空间上层面的,将误差项向网络的上一层传播。另一个是时间层面上的,沿时间反向传播,即从当前t时刻开始,计算每个时刻的误差。

3.    计算每个权重的梯度。

最后不断重复前面的1-3步,用随机梯度下降算法更新权重。

LSTM的原理

1概述

Longshort term memory,循环神经网络的变形结构,在普通RNN基础上,在隐藏层各神经单元中增加记忆单元,从而使时间序列上的记忆信息可控,每次在隐藏层各单元间传递时通过几个可控门(遗忘门、输入门、候选门、输出门),可以控制之前信息和当前信息的记忆和遗忘程度,从而使RNN网络具备了长期记忆功能,对于RNN的实际应用,有巨大作用。

 

2、特点、优点

优点:比RNN具备长期记忆功能,可控记忆能力。缺点:网络结构上比较复杂,门多,对效率又影响。于是,在此基础上,2014年,更加简化实用的结构形式GRU(gate recurrent unit)提高了效率,它把输入门和遗忘门进行了合并,把St和Ct,即记忆单元和输出单元进行了合并。

 

3、模型

RNN循环神经网络以及LSTM长短期记忆模型-简介

RNN循环神经网络以及LSTM长短期记忆模型-简介

                      几个门的作用示意图

RNN循环神经网络以及LSTM长短期记忆模型-简介

                     LSTM的隐藏单元的完整逻辑结构图

 

LSTM也设计两个门控制记忆单元状态c的信息量:一个是遗忘门(forget gate)。所谓的遗忘,也就是记忆的残缺。它决定了上一时刻的单元状态有多少记忆可以保留到当前时刻;另一个是输入门(input gate),它决定了当前时刻的输入有多少保存到单元状态。
在图14-5中,我们说过,LSTM是由三个门来实现的。实际上,为了表述方便,很多文献还添加了一个门,叫候选门(Candidate gate),它控制着以多大比例融合历史信息和当下刺激。
最后,LSTM还设计了一个输出门(output gate),来来控制单元状态有多少信息输出。下面对这4个门分别进行详细介绍。

 

RNN循环神经网络以及LSTM长短期记忆模型-简介遗忘门的模型

RNN循环神经网络以及LSTM长短期记忆模型-简介输入门的模型

RNN循环神经网络以及LSTM长短期记忆模型-简介候选门的模型

于是,记忆单元的模型函数就是:

RNN循环神经网络以及LSTM长短期记忆模型-简介

输出门的模型是:

RNN循环神经网络以及LSTM长短期记忆模型-简介

最终的时间序列上的输出量是:

RNN循环神经网络以及LSTM长短期记忆模型-简介

4、常见**函数/激励函数

同上。

 

5、代价函数

原理与RNN一样。

类似这种:

RNN循环神经网络以及LSTM长短期记忆模型-简介

 

6、求解模型参数的方法

BPTT。(backpropagation through time)

BPTT算法是针对循环层的训练算法,它的基本原理和BP算法是一样的,也包含同样的三个步骤:

首先确定参数的初始化值,然后

  1. 前向计算每个神经元的输出值;不过它的输出值比RNN和NN要多,因为有几个门,对于LSTM而言,依据前面介绍的流程,按部就班地分别计算出ftitctotst

2.    反向计算每个神经元的误差项值,它是误差函数E对神经元j加权输入的偏导数;与传统RNN类似,LSTM误差项的反向传播包括两个层面:一个是空间上层面的,将误差项向网络的上一层传播。另一个是时间层面上的,沿时间反向传播,即从当前t时刻开始,计算每个时刻的误差。 

3.    计算每个权重(即参数)的梯度。

最后再用随机梯度下降算法更新权重。

 

7、目前具备该算法的常用模块

tensorflow、keras等等

8、常见应用场景

首先是自然语言处理,较好地解决了传统语言处理模型的维度咒诅,机器翻译,语音识别,情感分析等等;

谷歌公司利用LSTM来做语音识别和文字翻译,苹果公司使用LSTM来优化Siri应用。

还有个性化推荐;比如:网易考拉商品推荐、Youtube视频推荐