整理并翻译自吴恩达深度学习系列视频:序列模型第一周。
Prerequisite:Gated Recurrent Unit(GRU)
GRU 和 LST的对比。
LTSM计算公式如下:
C~<t>=tanh(WcC<t−1>,x<t>+bc)\tilde{C}^{<t>}=tanh(W_cC^{<t-1>}, x^{<t>}+b_c)C~<t>=tanh(WcC<t−1>,x<t>+bc)
Γu=σ(WuC<t−1>,x<t>+bu)\Gamma_u=\sigma(W_uC^{<t-1>}, x^{<t>}+b_u)Γu=σ(WuC<t−1>,x<t>+bu)
Γf=σ(WfC<t−1>,x<t>+bf)\Gamma_f=\sigma(W_fC^{<t-1>}, x^{<t>}+b_f)Γf=σ(WfC<t−1>,x<t>+bf)
Γo=σ(W0C<t−1>,x<t>+bo)\Gamma_o=\sigma(W_0C^{<t-1>}, x^{<t>}+b_o)Γo=σ(W0C<t−1>,x<t>+bo)
C<t>=ΓuC~<t>+(1−Γu)C<t−1>C{<t>}=\Gamma_u\tilde{C}^{<t>}+(1-\Gamma_u)C^{<t-1>}C<t>=ΓuC~<t>+(1−Γu)C<t−1>
a<t>=Γo∗C<t>a{<t>}=\Gamma_o*C^{<t>}a<t>=Γo∗C<t>
LSTM有三个门控值,使用Γf\Gamma_fΓf替换GRU里的1−Γu1-\Gamma_u1−Γu,并且增加一个新的Γo\Gamma_oΓo来控制输出的值。
LSTM的图示结构如下图所示:
如图红色直线所示,只要三个门控值Γu\Gamma_uΓu、Γf\Gamma_fΓf、Γo\Gamma_oΓo设置得当,我们需要的信息可以一直向后传递。
这种结构的常见变种是peephole connection,即计算门控值时,也使用了前一层的C<t−1>C^{<t-1>}C<t−1>,如图中绿色圈起来的部分。
GRU其实是LSTM的一种简化版本,事实上LTSM先于GRU被发明出来。
GRU只有2个门控值,简单,计算快,可以扩展到更大的模型上;LSTM有三个门控值,更强大,更灵活。历史上,LTSM经常被当做首位的默认选择,但最近几年GRU获得了很多团队的支持,因为它很简单,也能做出很好地效果,更容易扩展到更大的问题。