接下来是遗忘门和输入门,在上面已经讲过了:
上面说了,f(zf)
就对应着ft
,看遗忘门图中的式子,括号里面的自然就是zf
了,前面说过f
函数就是Sigmoid函数就是图中的σ
;然后是输入门,前面说,f(zi)
就是it
,看输入门图中右侧的第一个式子,括号里面的自然就是zi
了,下面的式子就是g(z)
,那对应起来g
函数就是tanh了,z
就是括号里面的内容。
然后是输出门:
前面讲,输出门接受一个信号zo
,经过处理得到f(zo)
;计算出的c'
,经过h
函数处理,得到h(c')
,然后乘起来得到a
,a = h(c')f(zo)
(如果忘了可以往回翻一下逻辑结构图)。这对应关系就很明显了,zo
是图中第一个式子括号里面的那一大堆,ot
就是f(zo)
,计算出的c'
就是图中的Ct
,这个前面说过了,然后h
函数还是tanh函数,然后乘起来得到的那个a
就是ht
。我觉得我讲的真是不能再清楚了:)
LSTM可以通过控制门的开闭天然避免梯度消失。因为前面提到过,梯度消失的原因在于连乘式的产生,计算每层的梯度都需要用到下一层的梯度,需要一直乘到输出层,而对于LSTM来说,输入和记忆是相加的,也就是在逻辑结构那说的:
这有个什么好处呢,就是只要遗忘门不关闭(即f(zf)
不等于0),前面的输出c
的影响就永远不会消失。
以上,这样这篇《浅谈深度学习基础》也就结束了,下一篇可能会是《浅谈自然语言处理基础》,因为我本身就是Chatbot方向的产品经理,对NLP也很感兴趣。当然也可能不是:>