递归神经网络引入了时序的反馈机制,在语音、音乐等时序信号的分析上有重要的意义。 
Hochreiter(应该是Schmidhuber的弟子)在1991年分析了bptt带来的梯度爆炸和消失问题,给学习算法带来了梯度 
震荡和学习困难等问题; 
Hochreater和Schmidhuber在1997年提出了LSTM的网络结构,引入CEC单元解决bptt的梯度爆炸和消失问题; 
Felix Gers(Schmidhuber是指导人之一)2001年的博士论文进一步改进了lstm的网络结构,增加了forget gate和peephole; 
Alex Graves(Schmidhuber的弟子)2006年提出了lstm的ctc训练准则

第一步:RNN->基本lstm

参考文献[1]和[2]

问题

问题一:gradient

BPTT学习算法存在梯度爆炸和消失问题(gradient blow up or vanish),简单通过local error flow分析如下: 
对RNN的隐层进行unfolding后,可以得到如下的递推关系: 

)


可以理解为t+1时刻的error通过j传递到t时刻的j节点。 
对于t时刻的节点u,通过bptt可以传递到t-q时刻的节点u,不难得到递推关系如下: 

1


由此可以递推: 

1


.


u
最后可得: 

1


所以后面的联乘公式对于梯度的传播影响很大,如果 

1.0


会有梯度爆炸问题,反之,有梯度消失问题。 
直观上理解,error向后传播的时候,每向前传递一步都需要乘以对应的系数W,系数W的大小会导致梯度的异常。

 

问题二:conflict

  • input weight conflict 
    假设i参数是跟输入无关,对于所有的输入,它的大小是一致的。由于缺少这种自动调节功能,从而导致学习比较困难。
  • output weight conflict 
    同理,隐层到输出层之间也存在放行和屏蔽的conflict。

解决

lstm(一) 演化之路
1997年Hochreiter和Schmidhuber首先提出了LSTM的网络结构,解决了传统RNN的上面两个问题。

问题一的solution

lstm通过引入CEC(constant error carrousel)单元解决了梯度沿时间尺度unfolding带来的问题。 
首先梯度的递推关系如下: 

)


要想梯度传播没有异常的话,最容易的想法是: 

1


这里进一步简化这个问题,可以如下约定: 

x


1


)


相比之前的RNN结构,做了如下改变: 
1. 矩阵x

 

以上两点保证了error可以无损由t时刻传递到t-1时刻,如上图中的j,CEC是lstm的核心部件

问题二的solution

针对问题二,lstm引入了两个gate:input gate(对应图中的i参数以及输入x等参数控制的,所以此时的输出多了一条watchdog,参数增多了控制的将会更精确。

第二步:lstm + forget gate

参考文献[3]

问题

传统的lstm存在一个问题:随着时间序列的增多,lstm网络没有重置的机制(比如两句话合成一句话作为输入的话,希望是在第一句话结束的时候进行reset),从而导致cell state容易发生饱和,进一步会导致cell state的输出h(趋近于1)的梯度很小(sigmoid函数在x值很大的时候梯度趋向于0),阻碍了error的传入;另一方面输出h趋近于1,导致cell的输出近似等于output gate的输出,意味着网络丧失了memory的功能。

解决

lstm(一) 演化之路
在传统lstm的基础之上,引入了forget gate。使用这种结构可以让网络自动学习什么时候应该reset。具体做法即为使用φ替换原来的CEC的常量1.0,定义如下; 

)


)


forget gate的引入可以解决需要内部切割(hierarchical decomposition)但又不知道切割位置的序列问题。

 

第三步:lstm+peephole

参考文献[3]

问题

lstm的gate的输入包含两个部分,网络输入和上一时刻(t-1)网络的输出。 
此时如果output gate关闭(值接近0)的话,网络的输出(t时刻)将为0,下一时刻(t+1)网络gate将完全跟网络输入有关,就会丢失历史信息。

解决

lstm(一) 演化之路
增加CEC到各个gate之间的连线,使得CEC(const error carrousels)和gate之间存在双向的关联,CEC收到当前时刻gate的限制,同时又会影响下一时刻的gate。 
- input gate和forget gate的输入增加一项)

peephole使得网络可以记录更多的时序上的关联性,有助于提取相关事件准确周期的相关信息,可以应用于音乐韵律的分析等工作。

第四步:CTC训练准则

ctc训练

参考

[1]《Untersuchungen zu dynamischen neuronalen Netzen》 Hochreiter(德文的,人家的硕士论文) 
[2]《Long Short-Term Memory》 Hochreiter, Sepp; Schmidhuber 
[3]《Long Short-Term Memory in Recurrent Neural Networks》 Felix Gers 
[4]《Supervised Sequence Labelling with Recurrent Neural Networks》 Alex Graves 
[5] http://colah.github.io/posts/2015-08-Understanding-LSTMs/

相关文章:

  • 2022-12-23
  • 2022-01-24
  • 2021-11-05
  • 2022-01-15
  • 2021-07-27
  • 2021-06-19
猜你喜欢
  • 2021-10-18
  • 2021-08-31
  • 2022-01-20
  • 2021-10-15
  • 2021-09-27
  • 2021-04-18
相关资源
相似解决方案