RNN基本结构--机器学习研究

文章目录

    • 简述
      • 输入是序列,输出也是序列
      • 输入是序列,输出是值
      • 输入是值,输出是序列
      • RNN 改进版 LSTM

简述

输入是序列,输出也是序列

且序列等长, 这就是经典的RNN模型

  • 对于序列数据,RNN提出了一个隐藏数据H。H为提取出来的特征向量。
  • 对于每个序列节点x,都有一个对应的隐藏数据H。
  • 每个H都是有X和前一个节点的H生成的。

h i = f ( U x i + W h i − 1 + b ) h_i = f(Ux_i+Wh_{i-1}+b) hi=f(Uxi+Whi1+b)

  • U, W, b 为共享的参数
  • f 为激活函数,一般为tanh

目前还没有输出,输出是直接通过H来计算出来的。

y i = S o f t m a x ( V h i + c ) y_i = Softmax(Vh_{i}+c) yi=Softmax(Vhi+c)

输入是序列,输出是值

h i = f ( U x i + W h i − 1 + b ) h_i = f(Ux_i+Wh_{i-1}+b) hi=f(Uxi+Whi1+b)

  • U, W, b 为共享的参数
  • f 为激活函数,一般为tanh

Y = S o f t m a x ( V h n + c ) Y = Softmax(Vh_{n}+c) Y=Softmax(Vhn+c)

  • n表示最后一个节点

输入是值,输出是序列

  • 为了公式好表达,这里给所有的节点都输入相同的X

h i = f ( U X + W h i − 1 + b ) h_i = f(UX+Wh_{i-1}+b) hi=f(UX+Whi1+b)

  • U, W, b 为共享的参数
  • f 为激活函数,一般为tanh

目前还没有输出,输出是直接通过H来计算出来的。

y i = S o f t m a x ( V h i + c ) y_i = Softmax(Vh_{i}+c) yi=Softmax(Vhi+c)

RNN 改进版 LSTM

LSTM(long short term memory, 长短期记忆网络)

  • 经典的RNN 反向传播求梯度时,会将所有的梯度连乘起来,引起梯度爆炸或者是梯度消失。
  • LSTM会在中间使用某些部分提出使用加法,而不是直接用乘法,这样就可以在一定程度上避免这个问题了。

除了经典RNN中的隐藏状态H之外,LSTM还提出了新的隐藏状态C。

每次输入的有两个隐藏状态,同时也有两个隐藏状态输出

  • 遗忘门

f t = σ ( W f ⋅ [ h t − 1 , x t ] + b f ) f_t = \sigma(W_f·[h_{t-1}, x_t] + b_f) ft=σ(Wf[ht1,xt]+bf)

  • 记忆门

i t = σ ( W i ⋅ [ h t − 1 , x t ] + b i ) i_t = \sigma(W_i·[h_{t-1}, x_t] + b_i) it=σ(Wi[ht1,xt]+bi)

C ~ t = t a n h ( W C ⋅ [ h t − 1 , x t ] + b C ) \widetilde C_t = tanh(W_C·[h_{t-1}, x_t] + b_C) C t=tanh(WC[ht1,xt]+bC)

  • 用于远程传播的C的更新

C t = f t ∗ C t − 1 + C ~ t ∗ i t C_t =f_t * C_{t-1} + \widetilde C_t * i_t Ct=ftCt1+C tit

  • 输出门(用于输出H,而H控制输出)

o t = σ ( W o ⋅ [ h t − 1 , x t ] + b o ) o_t = \sigma(W_o·[h_{t-1}, x_t] + b_o) ot=σ(Wo[ht1,xt]+bo)

h t = o t ∗ t a n h ( C t ) h_t = o_t * tanh(C_t) ht=ottanh(Ct)

你可能感兴趣的:(机器学习+深度学习+强化学习,机器学习+深度学习+强化学习)