循环神经网络

循环神经网络(RNNs):具有隐状态、不同层参数共享的神经网络

常见的三种基础 RNNs :RNN、GRU、LSTM

RNN

隐变量模型:使用隐状态 ht1 存储前 t1 步的序列信息 P(xt|xt1,...,x1)P(xt|ht1) ht=f(xt,ht1) 循环神经网络(recurrent neural networks,RNNs) 是具有隐状态的神经网络

假设时刻 t 的输入为 XtRn×d,对应的权重参数为 Wxh,前 t1 时刻积累的隐状态为 Ht1Rn×h,对应的权重参数为 Whh,偏置为 b。则此 RNN 隐藏层计算可表示如下: Ht=ϕ(XtWxh+Ht1Whh+bh) 输出层计算可表示如下: Ot=HtWhq+bq 其中 ϕ 表示激活函数,模型的可训练参数包括 Wb,参数下标表示参数对应的维度

GRU

GRU 在 RNN 的基础上增加了针对隐状态的门控:

  • 更新门(update gate)用于确定隐状态是否需要更新,有助于捕捉序列中的长期依赖
  • 重置门(reset gate)用于确定隐状态是否需要重置,有助于捕捉序列中的短期依赖

假设时刻 t 时的批次输入为 XtRn×d,上一时刻的最终隐状态为 Ht1Rn×h。则重置门 RtRn×d 和更新门 ZtRn×d 的计算方式如下: {Rt=σ(XtWxr+Ht1Whr+br) Zt=σ(XtWxz+Ht1Whz+bz) 其中 Wxr,WxzRd×h 和 Whr,WhzRh×h 是权重参数,br,bzR1×h 是偏置项

时刻 t 时的候选隐状态(candidate hidden state) $\widetilde{H}t\in \mathbb{R}^{n\times h}$\widetilde{H}_t=tanh(X_tW\{xh}+(R_t\odot H_{t-1})W_{hh}+b_h)$$ 其中 WxhRd×h 和 WhhRh×h 是权重参数,bhR1×h 是偏置项, 是哈达玛积 (Hadamard product,即同阶矩阵间对应元素相乘)

时刻 t 时的最终隐状态 HtRn×h 计算如下: Ht=ZtHt1+(1Zt)H~t

Zt 接近 1 时,模型倾向于保留旧状态;当 Zt 接近 0 时,模型倾向于保留当前状态

LSTM

长短期记忆网络引入了记忆元(memory cell,其实可以看作为隐状态的一种特殊类型),简称单元(cell),通过三种门控制记忆元的输入、输出和遗忘:

  • 输出门(output gate):控制记忆元存储数据的输出
  • 输入门(input gate):决定何时将数据存入记忆元
  • 遗忘门(forget gate):管理记忆元存储内容的重置

具体计算过程和 GRU 非常相似,只不过细节上略有调整,比如 H~t,Ht 转为 C~t,Ct

因此,就暂时略过了(敲公式快敲麻了)

往年同期文章