1概述

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

 

2、特点、优点

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


3、模型

BiLSTM双向长短期记忆网络 短时记忆提取双重模型_RNN


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

 

BiLSTM双向长短期记忆网络 短时记忆提取双重模型_LSTM_02

双向循环神经网络:


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


双向循环神经网络:

BiLSTM双向长短期记忆网络 短时记忆提取双重模型_BiLSTM双向长短期记忆网络_03

BiLSTM双向长短期记忆网络 短时记忆提取双重模型_RNN_04


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

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


5、代价函数

原理与NN一样。

类似这种:


BiLSTM双向长短期记忆网络 短时记忆提取双重模型_激活函数_05


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、模型

BiLSTM双向长短期记忆网络 短时记忆提取双重模型_LSTM_06

BiLSTM双向长短期记忆网络 短时记忆提取双重模型_BiLSTM双向长短期记忆网络_07

                      几个门的作用示意图

BiLSTM双向长短期记忆网络 短时记忆提取双重模型_激活函数_08

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

 

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


BiLSTM双向长短期记忆网络 短时记忆提取双重模型_LSTM_09

遗忘门的模型

BiLSTM双向长短期记忆网络 短时记忆提取双重模型_LSTM_10

输入门的模型

BiLSTM双向长短期记忆网络 短时记忆提取双重模型_RNN_11

候选门的模型

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

BiLSTM双向长短期记忆网络 短时记忆提取双重模型_BiLSTM双向长短期记忆网络_12

输出门的模型是:

BiLSTM双向长短期记忆网络 短时记忆提取双重模型_权重_13

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


BiLSTM双向长短期记忆网络 短时记忆提取双重模型_LSTM_14



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

同上。


5、代价函数

原理与RNN一样。

类似这种:

BiLSTM双向长短期记忆网络 短时记忆提取双重模型_激活函数_15



6、求解模型参数的方法

BPTT。(backpropagation through time)

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

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

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

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

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

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


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

tensorflow、keras等等


8、常见应用场景

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