13_RNN相关

115 阅读2分钟

RNN

  • 针对序列数据建模,输入数据格式类似于(batch, seq, dim)
  • 相比与全连接网络(batch, dim)多了一个时间步长维度
  • 因此网络在计算一个batch时,要按照seq顺序计算
  • RNN就是在一个seq计算过程中,考虑步长里面的历史信息

LSTM

RNN的问题:梯度消失和爆炸

zhuanlan.zhihu.com/p/28687529

1个神经元的计算:y(t) = tanh( x(t) + h(t-1) ) 
一个seq的计算你就是累乘每一个神经元输出
  • RNN公式在反向求导过程中,有一个连乘公式,当其中为一个很大的数或者很小的数,则出现梯度消失和爆炸

  • LSTM在结构上引入不同门的操作,主要是把连乘项输出控制在0-1之间(激活函数),

LSTM结构

  1. long-term 特征C,
其中f表示遗忘门输出,过滤掉历史信息,
i表示输入门输出,表示要新增的历史信息
  1. 遗忘门,过滤C
激活函数sigmoid,除以0-1之间,小于0.5的减少权重,大于的增加权重
  1. 输入门,并入C
其中it也有选择的作用,sigmoid激活函数,大于0.5的加强,小于0.5的减弱
Ct表示当前step下输入后的激活输出,tanh在-11之间,
整体输出表示当前step下要选择哪些信息保留到长期特征当中
  1. 输出门,神经元输出
长期特征C激活后进行过滤,确定哪些信息是做为神经元输出
  1. 整体结构:
这只是一层,LSTM也可以向全连接堆叠多层,一般2层足够
  1. 双向LSTM:

Code