太阳城申博:在 Keras 深度练习库中

ps教程 急速飞驰 浏览

小编:梯度爆炸指神经网络训练过程中大的误差梯度不断累积, 太阳城申博: 导致模型权重出现重大更新。会造成模型不稳定,无法利用训练数据学习。本文将介绍深度神经网络中的梯度爆

  梯度爆炸指神经网络训练过程中大的误差梯度不断累积,太阳城申博:导致模型权重出现重大更新。会造成模型不稳定,无法利用训练数据学习。本文将介绍深度神经网络中的梯度爆炸问题。

  误差梯度是神经网络训练过程中计算的方向和数量,用于以正确的方向和合适的量更新网络权重。

  在深层网络或循环神经网络中,误差梯度可在更新中累积,变成非常大的梯度,然后导致网络权重的大幅更新,并因此使网络变得不稳定。在极端情况下,权重的值变得非常大,以至于溢出,导致 NaN 值。

  网络层之间的梯度(值大于 1.0)重复相乘导致的指数级增长会产生梯度爆炸。

  在深度多层感知机网络中,梯度爆炸会引起网络不稳定,最好的结果是无法从训练数据中学习,而最坏的结果是出现无法再更新的 NaN 权重值。

  在循环神经网络中,梯度爆炸会导致网络不稳定,无法利用训练数据学习,最好的结果是网络无法学习长的输入序列数据。

  在循环神经网络中,训练过程中在更少的先前时间步上进行更新(沿时间的截断反向传播,truncated Backpropagation through time)可以缓解梯度爆炸问题。

  在深度多层感知机神经网络中,梯度爆炸的发生可能是因为激活函数,如之前很流行的 Sigmoid 和 Tanh 函数。

  使用 ReLU 激活函数可以减少梯度爆炸。采用 ReLU 激活函数是最适合隐藏层的新实践。

  在循环神经网络中,梯度爆炸的发生可能是因为某种网络的训练本身就存在不稳定性,如随时间的反向传播本质上将循环网络转换成深度多层感知机神经网络。

  使用长短期记忆(LSTM)单元和相关的门类型神经元结构可以减少梯度爆炸问题。

  在非常深且批尺寸较大的多层感知机网络和输入序列较长的 LSTM 中,仍然有可能出现梯度爆炸。如果梯度爆炸仍然出现,你可以在训练过程中检查和限制梯度的大小。这就是梯度截断。

  具体来说,检查误差梯度的值是否超过阈值,如果超过,则截断梯度,将梯度设置为阈值。

  梯度截断可以一定程度上缓解梯度爆炸问题(梯度截断,即在执行梯度下降步骤之前将梯度设置为阈值)。

  在 Keras 深度学习库中,你可以在训练之前设置优化器上的 clipnorm 或 clipvalue 参数,来使用梯度截断。

  如果梯度爆炸仍然存在,可以尝试另一种方法,即检查网络权重的大小,并惩罚产生较大权重值的损失函数。该过程被称为权重正则化,太阳城娱乐城通常使用的是 L1 惩罚项(权重绝对值)或 L2 惩罚项(权重平方)。

  在 Keras 深度学习库中,你可以通过在层上设置 kernel_regularizer 参数和使用 L1 或 L2 正则化项进行权重正则化。

当前网址:http://www.builder.org.cn/tutorials/ps/2019/0203/2373.html

 
你可能喜欢的: