aihot  2017-10-14 11:30:16  深度学习 |   查看评论   

  上图是神经单元的展开,如果收起,则结构如下:

一个循环的神经单元

一个循环的神经单元

  那使用RNN如何解决前面提到的问题呢?在RNN里,当前面的词不同时,对应的隐层输出也就不同,前面词的隐层输出作为输入的一部分提供给了Taipei对应的隐层,进而使得Taipei被填进每个槽位的概率也不同。从而实现,当前面是arrive时,将Taipei填进目的地槽;当前面是leave时,将Taipei填进出发地槽。

  下面来讲RNN中广泛使用且效果极为出色的一种类型 —— LSTM(长短期记忆神经网络,Long-Short Term Memory)。

  前面讲,普通RNN无法处理随着递归,梯度爆炸或消失的问题,这样导致普通RNN无法捕捉过长时间的关联。前面隐层输出的不同会随着梯度消失,距离越远,影响就越小。而LSTM通过特殊的结构解决了这个长期依赖的问题。

  LSTM的结构这部分我主要读了两篇资料,一篇是,另一篇是李宏毅教授Deep Learning Tutorial里面的对应内容。

  这两篇资料的讲解,一篇以等价的逻辑结构来讲,更通俗;一篇以真实结构来讲,更深入,这里我准备加上自己的理解,将两种结构对比起来讲。

  先说标准RNN的结构,所有的RNN都有神经网络的重复模块组成的链式结构。对于标准的RNN,这种重复模块有一个非常简单的结构,如一个单一的tanh(双曲正切)层:

浅谈深度学习基础

 

  LSTM中也有这样的链式结构,但重复模块却具有和一般RNN不同的结构。前面标准RNN只有一个交互层,而LSTM有四个。

  为了便于理解,我们先以LSTM的等价逻辑结构进行讲解:

LSTM的等价逻辑结构

LSTM的等价逻辑结构

  如图所示,LSTM的神经元由四部分组成,分别是:输入门、输出门、遗忘门和记忆细胞。接受4个输入,1个输出。输入门、输出门、遗忘门各接受一种控制信号输入。输入门还额外接受上个神经元的输入,输出门额外给出一个到下个神经元的输出。3种门是用来保护和控制细胞状态的。

  下图展示了逻辑结构下的实际计算过程:

浅谈深度学习基础

 

  首先,前面讲输入门、输出门、遗忘门各接受一种控制信号输入,也就是这里图上的zizozf,这三种信号进来要经过的函数f为激活函数,通常使用Sigmoid函数,我们知道Sigmoid函数的输出在0到1之间,非常适合作为门的控制信号,0代表完全舍弃(关闭),1代表完全保留(开启)。

  关注图中门的开启关闭是如何起作用的,我们可以发现,假如输入门接受信号zi过小,导致对应Sigmoid函数的输出为0,则意味着输入门关闭,我们可以看到f(zi)与神经元的输入z处理得到的g(z)是相乘的关系,也即如果输入门关闭,则该LSTM神经元不再接收输入门的输入z。同理,如果输出门关闭,则该LSTM神经元输出门无法产生有效的输出a。而对于遗忘门,根据图中的公式可知,如果遗忘门关闭,则意味着记忆细胞过去的记忆值c将被忘记,该LSTM神经元的输出完全独立,不受过去输出的影响。(如果将遗忘门叫做记忆门或许更好理解,记忆门关闭则完全遗忘。)

 

除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自浅谈深度学习基础(下)

留言与评论(共有 0 条评论)
   
验证码:
[lianlun]1[/lianlun]