避免深度神经网络中的梯度消失

问题描述 投票:0回答:3

我正在研究 Keras,尝试深入研究深度学习。

据我所知,由于梯度消失问题,仅堆叠几个密集层就可以有效地阻止反向传播的工作。

我发现有一个预先训练的 VGG-16 神经网络,您可以下载并在其上构建。

这个网络有 16 层,所以我猜,这就是你遇到梯度消失问题的领域。

假设我想在 Keras 中自己训练网络。我该怎么做呢?我是否应该将这些层划分为集群并作为自动编码器独立训练它们,然后在其之上堆叠一个分类器并训练它? Keras 中有内置机制吗?

keras keras-layer
3个回答
4
投票

不,梯度消失问题并不像以前那么普遍,因为几乎所有网络(循环网络除外)都使用 ReLU 激活,而出现此问题的可能性要小得多。

您应该从头开始训练网络并看看它是如何工作的。不要尝试解决您还没有遇到的问题。


0
投票

阅读有关跳过连接的内容。尽管是激活函数负责此操作,但跳过连接也会产生输入。

残差块中引入的跳过连接允许梯度回流并到达初始层。

我们不使用 Sigmoid 和 Tanh 作为激活函数,这会导致梯度消失问题。如今,我们大多使用基于 RELU 的激活函数来训练深度神经网络模型,以避免此类复杂情况并提高准确性。


0
投票

梯度消失问题:

  • 可以使用以下方法缓解:
    • 批量归一化层。
    • Leaky ReLU 激活函数。 *您也可以使用 ReLU 激活函数,但有时会导致 Dying ReLU Problem
    • PReLU 激活函数。
    • ELU激活函数。
    • 渐变裁剪。 *渐变裁剪是将渐变保持在指定范围内的方法。
  • 发生在:
    • CNN(卷积神经网络)。
    • RNN(循环神经网络)。
  • 不容易出现在:
    • LSTM(长短期记忆)。
    • GRU(门控循环单元)。
    • Resnet(残差神经网络)。
    • 变压器。
    • 等等
© www.soinside.com 2019 - 2024. All rights reserved.