1.RNN
RNN神经网络每一个状态的输出与上一个状态的输出有关, x t x_t xt和 h t − 1 h_{t-1} ht−1进行拼接作为神经网络的输入计算得到 t t t时刻的输出 h t h_t ht, h 1 = f ( h 0 , x 0 ) h_1=f(h_0, x_0) h1=f(h0,x0)。因此RNN模型无法进行GPU并行加速。
1.1 parameter sharing
神经网络的参数为 w h w_h wh,通过不断循环递归训练得到该参数。
1.2 Exploding and Vanishing
根据链式法则,在导数值很小的情况下,经过连乘,出现梯度消失的现象。由于RNN常采用sigmoid激活函数 σ ( w x + b ) \sigma(wx+b) σ(wx+b),在 w x + b wx+b wx+b很小或很大时,其导数会非常小,比如0.0001,在反向传播时出现梯度消失。
1)解决梯度爆炸的方法:截断
在梯度值达到阈值时,取阈值,直接截断。 i f ∣ ∣ g ∣ ∣ > t h r e s h o l d , g = t h r e s h o l d × g ∣ ∣ g ∣ ∣ if ||g||>threshold,g=\frac {threshold \times g}{||g||} if∣∣g∣∣>threshold,g=∣∣g