CNN 如何避免梯度消失问题

机器算法验证 机器学习 优化 深度学习 梯度下降
2022-01-23 07:38:50

我一直在阅读很多关于卷积神经网络的内容,并且想知道它们如何避免梯度消失问题。我知道深度信念网络堆叠单级自动编码器或其他预训练的浅层网络,因此可以避免这个问题,但我不知道如何在 CNN 中避免它。

根据维基百科

“尽管存在上述“梯度消失问题”,GPU 的卓越处理能力使得简单的反向传播对于具有多层的深度前馈神经网络变得可行。”

我不明白为什么 GPU 处理会解决这个问题?

1个回答

梯度消失问题要求我们使用梯度下降的小学习率,然后需要许多小步骤来收敛。如果您的计算机速度较慢,每一步都需要很长时间,这将是一个问题。如果你有一个快速的 GPU 可以在一天内执行更多的步骤,那么这不是问题。

有几种方法可以解决梯度消失问题。我猜想 CNN 的最大影响来自于从 sigmoid 非线性单元切换到整流线性单元。如果您考虑一个简单的神经网络,其误差仅通过取决于权重,其中Ewijyj

yj=f(iwijxi),

它的梯度是

wijE=Eyjyjwij=Eyjf(iwijxi)xi.

如果是逻辑 sigmoid 函数,对于大输入和小输入,将接近于零。如果是一个整流线性单元,fff

f(u)=max(0,u),
导数仅对于负输入为零,对于正输入为 1。另一个重要的贡献来自正确初始化权重。这篇论文看起来像是更详细地理解挑战的好资料(虽然我还没有读过):

http://jmlr.org/proceedings/papers/v9/glorot10a/glorot10a.pdf