深度学习笔记之循环神经网络——循环神经网络思想
引言
上一节介绍了基于统计算法的语言模型。本节将介绍基于神经网络的序列模型——循环神经网络。
回顾:潜变量自回归模型
关于潜变量自回归模型,它的概率图结构表示如下:
这里仅观察 t t t时刻到 t + 1 t+1 t+1时刻随机变量的变化情况。它的变化过程可划分为两个部分:
- x t − 1 , h t − 1 ⇒ h t x_{t-1},h_{t-1} \Rightarrow h_{t} xt−1,ht−1⇒ht过程。其概率图结构表示为:
对应的因子分解可表示为: P ( h t ∣ h t − 1 , x t − 1 ) \mathcal P(h_t \mid h_{t-1},x_{t-1}) P(ht∣ht−1,xt−1)。如果使用自回归模型去描述 h t h_t ht的后验概率,它可以表示为:
就是以
h t − 1 , x t − 1 h_{t-1},x_{t-1} ht−1,xt−1作为模型输入,其输出结果对
h t h_t ht的分布进行描述。
λ \lambda λ为模型参数。
P ( h t ∣ h t − 1 , x t − 1 ) = P [ h t ∣ f ( h t − 1 , x t − 1 ; λ ) ] \mathcal P(h_t \mid h_{t-1},x_{t-1}) = \mathcal P [h_t \mid f(h_{t-1},x_{t-1};\lambda)] P(ht∣ht−1,xt−1)=P[ht∣f(ht−1,xt−1;λ)] - x t − 1 , h t ⇒ x t x_{t-1},h_{t} \Rightarrow x_{t} xt−1,ht⇒xt过程。同理,其概率图结构表示为:
同理,它的因子分解表示为: P ( x t ∣ h t , x t − 1 ) \mathcal P(x_t \mid h_{t},x_{t-1}) P(xt∣ht,xt−1),对该条件概率进行建模,对应后验概率可表示为:
P ( x t ∣ h t , x t − 1 ) = P [ x t ∣ f ( h t , x t − 1 ; η ) ] \mathcal P(x_t \mid h_t,x_{t-1}) = \mathcal P[x_t \mid f(h_t,x_{t-1};\eta)] P(xt∣ht,xt−1)=P[xt∣f(ht,xt−1;η)]
最终通过对上述两步骤的交替执行,从而完成对序列信息的表示。也就是说,在遍历到最后一个随机变量 x T x_{\mathcal T} xT,得到相应的特征结果:
P ( h T + 1 ∣ h T , x T ) = P [ h T + 1 ∣ f ( h T , x T ; θ ) ] \mathcal P(h_{\mathcal T + 1} \mid h_{\mathcal T},x_{\mathcal T}) = \mathcal P[h_{\mathcal T + 1} \mid f(h_{\mathcal T},x_{\mathcal T};\theta)] P(hT+1∣hT,xT)=P[hT+1∣f(hT,xT;θ)]
循环神经网络思想
观察上述步骤,无论是 P ( h t ∣ h t − 1 , x t − 1 ) \mathcal P(h_t \mid h_{t-1},x_{t-1}) P(ht∣ht−1,xt−1)还是 P ( x t ∣ h t , x t − 1 ) \mathcal P(x_t \mid h_t,x_{t-1}) P(xt∣ht,xt−1),它们都属于推断过程。而循环神经网络 ( Recurrent Neural Network ) (\text{Recurrent Neural Network}) (Recurrent Neural Network),就是将上述推断过程通过神经网络的方式描述出来。
循环神经网络隐藏层的计算图展开结构表示如下:
该隐藏层结构的前馈计算过程表示为如下形式:
以
t t t时刻到
t + 1 t+1 t+1时刻的计算过程为例,并且仅包含
1 1 1个隐藏层。
{ h t + 1 = σ ( W h t ⇒ h t + 1 ⋅ h t + W x t ⇒ h t + 1 ⋅ x t + b h t + 1 ) O t + 1 = ϕ ( W h t + 1 ⇒ O t + 1 ⋅ h t + 1 + b O t + 1 ) \begin{cases} h_{t+1} = \sigma(\mathcal W_{h_t \Rightarrow h_{t+1}} \cdot h_{t} + \mathcal W_{x_t \Rightarrow h_{t+1}} \cdot x_t + b_{h_{t+1}}) \\ \mathcal O_{t+1} = \phi(\mathcal W_{h_{t+1} \Rightarrow \mathcal O_{t+1}} \cdot h_{t+1} + b_{\mathcal O_{t+1}}) \\ \end{cases} {
ht+1=σ(Wht⇒ht+1⋅ht+Wxt⇒ht+1⋅xt