LSTM

idea

原始的RNN隐藏层只有一种状态,对于短期短期输入非常敏感。为了使RNN解决长距离依赖问题,LSTM增加了一个状态c来保存长期状态,称为cell state
LSTM总结
LSTM总结

details

LSTM总结

关键问题 - 如何控制长期状态c?

  • 使用三个控制开关
    1. 遗忘门(forget gate):决定上一时刻的cell状态ct1c_{t-1}有多少保存到当前cell ctc_t
    2. 输入门(input gate):决定当前lSTM的输入xtx_t有多少保存到当前cell ctc_t
    3. 输出门(output gate):控制cell ctc_t有多少输出到LSTM的当前状态值hth_t
  • 用门(gate)实现这三个开关
    • 定义:使用全连接层充当门的作用,输入是一个响亮,输出是一个0到1的实数向量(使用sigmoid)。公式为:
      g(x)=σ(Wx+b)g(x) = \sigma(Wx+b)
    • 方法:用门的输出向量(即上述公式sigmoid的输出)乘以需要控制的状态c

LSTM的前向传播

1. 遗忘门

LSTM总结

  • 计算公式:ft=σ(Wf[ht1,xt]+bf)f_t = \sigma(W_f\cdot[h_{t-1}, x_t]+b_f)
  • 遗忘门的输入是当前输入xtx_t以及上一时刻的隐藏状态ht1h_{t-1},这两个输入经过一个全连接层通过sigmoid**,得到一个概率向量ftf_t(下边我称为遗忘概率向量)。当遗忘概率向量中的某个元素为0时就完全遗忘了上一时刻的cell状态ct1c_{t-1}中相应位置的元素。遗忘门输出一个遗忘概率向量ftf_t

2. 输入门

LSTM总结

  • 作用:决定让多少新的信息加入到cell状态中,首先使用输入门来产生一个概率向量,决定备选向量C~t\tilde{C}_t中的各个元素有多少能加入到当前状态
  • 公式CtC_t
    it=σ(Wi[ht1,xt+bi])i_t = \sigma(W_i\cdot[h_{t-1, x_t} + b_i])
    C~t=tanh(WC[ht1,xt+bC])\tilde{C}_t= tanh(W_C\cdot[h_{t-1, x_t} + b_C])
    Ct=ftCt1+itC~tC_t= f_t * C_{t-1} + i_t * \tilde{C}_t
  • 说明:W是一个权重矩阵,b是一个偏置向量,最终输出的CtC_t是一个向量,通过遗忘门的遗忘概率向量ftf_t来选择性地过滤掉一些不需要的信息以后,再通过输入门产生的概率向量iti_t来决定有多少信息新的信息需要加到当前cell状态CtC_t

3. 输出门

LSTM总结

  • 作用:决定输出什么值,首先运行一个sigmoid层来决定cell状态的哪些部分需要输出出去
  • 公式
    ot=σ(Wo[ht1,xt]+bo)o_t = \sigma(W_o\cdot[h_{t-1}, x_t]+b_o)
    ht=ottanh(Ct)h_t = o_t * tanh(C_t)
  • 做法:通过输出门产生的概率向量o_t,决定CtC_t中的各种信息需要怎么样地保留下来

相关文章:

  • 2021-06-16
  • 2021-05-08
  • 2021-04-14
  • 2021-07-09
  • 2021-08-29
  • 2021-08-31
猜你喜欢
  • 2021-10-20
  • 2021-11-09
  • 2021-05-05
  • 2021-11-25
  • 2022-01-19
  • 2021-08-13
相关资源
相似解决方案