[笔记]RNN和LSTM

RNN与LSTM详解

RNN

  1. RNN
    • 模型:

    \[h_t = f(W_xx_t+W_hh_{t-1}) \]

    \[\hat y_t = \sigma(W_oh_t) \]

    • 损失函数:

    \[L_t = g(\hat y_t) \]

    \[L = \Sigma_{t=1}^TL_t \]

  2. BPTT随时间反向传播[梯度爆炸和梯度消失]

    \[\frac{\partial L}{\partial W_o} = \Sigma_{t=1}^T\frac{\partial L_t}{\partial \hat y_t}\frac{\partial \hat y_t}{\partial W_o} \]

    \[\frac{\partial L}{\partial W_h}= \Sigma_{t=1}^T\frac{\partial L_t}{\partial \hat y_t} \frac{\partial \hat y_t}{\partial h_t} \frac{\partial h_t}{\partial W_h} \]

    由于\(h_t\)涉及\(h_{t-1}\),而\(h_{t-1}\)涉及到\(W_h\),所以随时间步回溯逐项求导,得

    \[\frac{\partial h_t}{\partial W_h}=\Sigma_{i=1}^{t}\frac{\partial h_t}{\partial h_i}\frac{\partial h_i}{\partial W_h} \]

    \[\frac{\partial h_t}{\partial h_i} = \Pi_{j=i}^{t-1} \frac{\partial h_{j+1}}{\partial h_j} \]

    所以,

    \[\frac{\partial L}{\partial W_h} = \Sigma_{t=1}^T \frac{\partial L_t}{\partial \hat y_t}\frac{\partial \hat y_t}{\partial h_t}\Sigma_{i=1}^t(\Pi_{j=i+1}^{t} \frac{\partial h_{j}}{\partial h_{j-1}})\frac{\partial h_i}{\partial W_h} \]

    考虑到\(\frac{\partial h_t}{\partial h_{t-1}} = f'*W_h\),当f为tanh函数时,其梯度范围为[0,1],所以当\(j\)\(t\)的相差过大(相距太远),如果\(W_h>1\),则会产生梯度爆炸的问题;如果\(W_h<1\),则会产生梯度消失的情况。(特别注意:从公式我们可以发现,总损失对于参数的梯度值是存在的,但梯度值被近距离时间步所主导,无法学习得到长期依赖信息。所以,RNN中的梯度消失实际上指的就是无法学习得到长期依赖信息

LSTM

  1. 模型

    \[输入门: i_t = \sigma(W_ix_t+U_ih_{t-1}+b_i) \]

    \[遗忘门:f_t = \sigma(W_fx_t+U_fh_{t-1}+b_f) \]

    \[\hat c_t = tanh(W_cx_t+U_ch_{t-1}+b_c) \]

    \[状态:c_t = i_t \cdot \hat c_t + f_t \cdot c_{t-1} \]

    \[输出门:o_t = \sigma(W_ox_t+U_oh_{t-1}+b_o) \]

    \[输出:h_t = o_t \cdot tanh(c_t) \]

  2. 激活函数
    门控的激活函数:使用Sigmoid函数,输出在0~1之间,符合门控的物理定义;另外当输入较大或者较小的情况,其输出会非常接近0或者1,保证该门开或者关。
    候选记忆的激活函数:使用tanh激活函数,为0均值,与大多数场景下的特征分布吻合。(特别注意的是,LSTM中候选记忆的激活函数原使用Sigmoid函数的变种【变种到0均值】,且没有遗忘门【即遗忘门数值直接为1,即记忆全部保留】,最后大量研究和实验证明,使用遗忘门和tanh激活函数性能提升很大)
  3. LSTM如何解决学习长期依赖信息
    LSTM中的状态之间的梯度为\(\frac{\partial c_t}{\partial c_{t-1}}=f_t\),就是遗忘门的数值。一般来说,遗忘门的数值不是0就是1,0表示以前的依赖信息不再重要;1表示以前的依赖信息依然重要。(原始LSTM不使用遗忘门,则表示保留所有的长期依赖信息,在后续研究和实验过程发现,加上遗忘门,主动丢弃不必要的长期依赖可以提高LSTM的性能。)

猜你喜欢

转载自www.cnblogs.com/mrdragonma/p/12675175.html