[ DLPytorch ] 循环神经网络进阶&拟合问题&梯度消失与爆炸

Posted recoverableti

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[ DLPytorch ] 循环神经网络进阶&拟合问题&梯度消失与爆炸相关的知识,希望对你有一定的参考价值。

循环神经网络进阶

BPTT

反向传播过程中,训练模型通常需要模型参数的梯度。
技术图片
[ frac{partial L}{partial oldsymbol{W}_{qh}} = sum_{t=1}^T ext{prod}left(frac{partial L}{partial oldsymbol{o}_t}, frac{partial oldsymbol{o}_t}{partial oldsymbol{W}_{qh}} ight) = sum_{t=1}^T frac{partial L}{partial oldsymbol{o}_t} oldsymbol{h}_t^ op. ]
[ egin{aligned} frac{partial L}{partial oldsymbol{W}_{hx}} &= sum_{t=1}^T ext{prod}left(frac{partial L}{partial oldsymbol{h}_t}, frac{partial oldsymbol{h}_t}{partial oldsymbol{W}_{hx}} ight) = sum_{t=1}^T frac{partial L}{partial oldsymbol{h}_t} oldsymbol{x}_t^ op,frac{partial L}{partial oldsymbol{W}_{hh}} &= sum_{t=1}^T ext{prod}left(frac{partial L}{partial oldsymbol{h}_t}, frac{partial oldsymbol{h}_t}{partial oldsymbol{W}_{hh}} ight) = sum_{t=1}^T frac{partial L}{partial oldsymbol{h}_t} oldsymbol{h}_{t-1}^ op. end{aligned} ]

其次,注意到隐藏状态之间也存在依赖关系。也正是这种依赖关系,在训练时需要对状态进行特殊处理。
[ frac{partial L}{partial oldsymbol{h}_t} = ext{prod} (frac{partial L}{partial oldsymbol{h}_{t+1}}, frac{partial oldsymbol{h}_{t+1}}{partial oldsymbol{h}_t}) + ext{prod} (frac{partial L}{partial oldsymbol{o}_t}, frac{partial oldsymbol{o}_t}{partial oldsymbol{h}_t} ) = oldsymbol{W}_{hh}^ op frac{partial L}{partial oldsymbol{h}_{t+1}} + oldsymbol{W}_{qh}^ op frac{partial L}{partial oldsymbol{o}_t} ]
当时间步数 (T) 较大或者时间步 (t) 较小时,目标函数有关隐藏状态的梯度较容易出现衰减和爆炸。

GRU

  • 重置门有助于捕捉时间序列里短期的依赖关系;
  • 更新门有助于捕捉时间序列里长期的依赖关系。
    门控循环单元会计算候选隐藏状态来辅助稍后的隐藏状态计算,将当前时间步重置门的输出与上一时间步隐藏状态做按元素乘法(符号为(odot))。如果重置门中元素值接近0,那么意味着重置对应隐藏状态元素为0,即丢弃上一时间步的隐藏状态。如果元素值接近1,那么表示保留上一时间步的隐藏状态。然后,将按元素乘法的结果与当前时间步的输入连结,再通过含激活函数tanh的全连接层计算出候选隐藏状态。
    技术图片
    更新门可以控制隐藏状态应该如何被包含当前时间步信息的候选隐藏状态所更新,时间步(t)的隐藏状态(oldsymbol{H}_t in mathbb{R}^{n imes h})的计算使用当前时间步的更新门(oldsymbol{Z}_t)来对上一时间步的隐藏状态(oldsymbol{H}_{t-1})和当前时间步的候选隐藏状态( ilde{oldsymbol{H}}_t)做组合。
    技术图片

LSTM

设置了遗忘门、输入门和输出门。当前时间步记忆细胞(oldsymbol{C}_t in mathbb{R}^{n imes h})的计算组合了上一时间步记忆细胞和当前时间步候选记忆细胞的信息,并通过遗忘门和输入门来控制信息的流动。候选记忆细胞由上一状态与本次输入分别线性计算再组合。
遗忘门控制上一时间步的记忆细胞(oldsymbol{C}_{t-1})中的信息是否传递到当前时间步,而输入门则控制当前时间步的输入(oldsymbol{X}_t)通过候选记忆细胞( ilde{oldsymbol{C}}_t)如何流入当前时间步的记忆细胞。
通过输出门来控制从记忆细胞到隐藏状态(oldsymbol{H}_t)
技术图片

以上是关于[ DLPytorch ] 循环神经网络进阶&拟合问题&梯度消失与爆炸的主要内容,如果未能解决你的问题,请参考以下文章

动手学pytorch-循环神经网络进阶

循环神经网络-LSTM进阶

深度学习(08)_RNN-LSTM循环神经网络-03-Tensorflow进阶实现

Android进阶——AMS详解

Android进阶——WMS与AMS浅析

嵌入式工程师进阶,基于AM64x开发板的IPC多核开发案例分享