# 什么是有序列特性的数据

  • 人类的自然语言,是符合某个逻辑或规则的字词拼凑排列起来的,这就是符合序列特性
  • 语音,我们发出的声音,每一帧每一帧的衔接起来,才凑成了我们听到的话,这就是符合序列特性
  • 股票,随着时间的推移,会产生具有顺序的一系列数字,这就是符合序列特性

符合时间顺序,逻辑顺序,或者其他顺序就叫序列特性

# RNN

RecurrentNeuralNetwork(RNN)Recurrent~Neural~Network~(RNN) 循环神经网络,是一种用于处理序列数据的神经网络。核心特点是 具有记忆能力,能够在处理当前的输入时,结合之前的输出进行计算

例如,在预测中, 兰欣怡 吃 苹果兰欣怡 是 苹果 的老板 ,如果我们要给 苹果 打上标签,在 全连接神经网络 中,是以正确的概率最大为目标来训练模型,这将导致,语料中,两种苹果谁的数量多,预测的结果就是什么。显然,没有结合上下文的预测是很容易出错的,我们应该结合上下文训练模型,这就是全连接神经网络做不到的事情,因此引入了 循环神经网络

# RNN 数学原理

RNNRNN 的隐藏层不仅接受当前输入,还接受上一时刻的隐藏状态,由此形成” 循环结构 “

ht=f(Wxhxt+Whhht1+bh)h_t = f(W_{xh}·x_t + W_{hh}·h_{t-1}+b_h)

  • hth_ttt 时刻的隐藏状态
  • xtx_t:当前输入
  • Wxh,Whh,bhW_{xh},W_{hh},b_h:可学习的参数(注意,此参数为 共享参数

# LSTM

# 为什么要有 LSTM

基础的 RNNRNN,每一时刻的隐藏状态不仅由该时刻的输入决定,还取决于上一时刻的隐藏层的值。如果一个句子很长的话,到句子末尾时,RNNRNN 将记不住句子开头的详细内容。LSTMLSTM 利用 门控装置 有效地缓解了这个问题

# LSTM 是什么

LongShortTermMemory(LSTM)Long~Short~Term~Memory~(LSTM),长短期记忆网络相较普通 RNNRNN,多了三个

# LSTM 的数学原理

LSTMLSTM 的关键在于引入了 细胞状态门控机制

  • 遗忘门:决定哪些历史信息需要 “忘记”
    • ft=σ(Wf[ht1,xt]+bf)f_t = \sigma (W_f · [h_{t-1}, x_t] + b_f)
  • 输入门:决定哪些新的信息需要存储进细胞状态
    • it=σ(Wi[ht1,xt]+bi)i_t = \sigma (W_i · [h_{t-1}, x_t] + b_i)
    • C~t=tanh(Wc[ht1,xT]+bC)\tilde{C}_t = tanh(W_c·[h_{t-1}, x_T] + b_C)
  • 输出门:决定当时当刻的输出和隐藏状态
    • ot=σ(Wo[ht1,xt]+bo)o_t = \sigma (W_o · [h_{t-1}, x_t] + b_o)
  • 状态更新
    • 细胞状态更新:Ct=ftCt1+itC~tC_t = f_t·C_{t-1} + i_t · \tilde{C}_t
      • 前一状态的 Ct1C_{t-1} 被选择遗忘 ftf_t
      • 新候选记忆 C~t\tilde{C}_t 被选择写入 iti_t
    • 隐藏状态更新:ht=ottanh(Ct)h_t = o_t · tanh(C_t)
      • 输出门 oto_t 决定当前细胞状态中哪部分流向隐藏层

# GRU

GateRecurrentUnit(GRU)Gate~Recurrent~Unit~(GRU),门控循环单元与普通 RNNRNN 的根本区别在于其支持 更新门重置门,能很好地捕捉长距离的依赖关系,相比 LSTMLSTM 结构更简单,参数更少,可以理解成 LSTMLSTM 的简化版

  • 没有显式的细胞状态 CtC_t,而是直接用隐藏状态 hth_t 传递信息
  • LSTMLSTM遗忘门输出门合并成更新门
  • 另外保留一个重置门,用来决定历史信息在生成候选状态时的影响程度

# GRU 的数学原理

  • 更新门:控制新旧信息的平衡
    • Zt=σ(Wz[ht1,xt]+bz)Z_t = \sigma(W_z · [h_{t-1}, x_t] + b_z)
  • 重置门:控制候选状态计算时,对旧信息的依赖程度
    • rt=σ(Wr[ht1,xt]+br)r_t = \sigma (W_r · [h_{t-1}, x_t] + b_r)
  • 候选隐藏状态:利用重置门决定保留多少过去的信息
    • h~t=tanh(Whxt+Uh(rtht1)+bh)\tilde{h}_t = tanh(W_h · x_t + U_h·(r_t \odot h_{t-1})+b_h)
  • 隐藏状态更新:利用更新门在旧状态和候选状态之间插值
    • ht=(1zt)ht1+zth~th_t = (1 - z_t) \odot h_{t-1} + z_t \odot \tilde{h}_t