为什么很难训练深度神经网络?

简介: 自1994年开始,大家都认为深度神经网络难以训练的原因是由于梯度消失,然而本文作者通过深度线性网络的例子证明网络性能变差的原因并不是梯度消失,而是由于权重矩阵的退化导致模型的有效自由度减少,从而使得深度神经网络难以训练。

在这篇文章中,我将解释在深度神经网络训练中一个常见的误解。似乎大家都认为,训练深度神经网络很难的原因主要是因为梯度消失(或爆炸)的问题。“梯度消失”是指通过隐藏层从后向前看,梯度会变的越来越小。这也意味着,前面层的学习会显著慢于后面层的学习,所以学习会卡住,除非梯度变大。这个想法至少可以追溯到Bengio等人(1994年),如今这仍然被用于解释为什么很难训练深度神经网络。
我们首先考虑一个简单的情景:训练一个深度线性网络学习一个线性映射。从计算的角度来看,深度线性网络并不令人感兴趣,但是Saxe等人 (2013)认为,在线性网络学习仍然可以提供有关非线性网络学习的信息。因此,我们从这个简单的场景开始。下图是30层网络的学习曲线和初始梯度范数。
1
这些结果在图中标记为“Fold 0”。这里的梯度是关于层激活值的,网络权重通过 进行初始化。训练损失开始时迅速下降,但不会消失(或爆炸),随后达到一个稳定的次优值。随着训练的进展,他们变得越来越小,但是这是可以预料的,而且从某种意义上说,这里的梯度“太小”并不清楚:
2
为了说明收敛到局部最优解的现象和梯度范数的大小本身没有任何关系,现在我将介绍一个会增加梯度范数的方法,但会恶化性能。如下图(蓝色):
3
那么,我做了什么?我只是简单地改变了初始化。原始网络中的每个初始权重矩阵是一个64X64的矩阵(使用标准 初始化进行初始化)。在以蓝色显示的网络中,我将每个初始权重矩阵的前半部分复制到后半部分(初始权重矩阵被“Fold”一次,所以我将它们表示为“Fold 1”网络)。这降低了初始权重矩阵的秩,并使其更加退化。请注意,这种运算仅应用于初始权重矩阵,并没有加上其它对学习过程的约束,训练过程将保持不变。以下是梯度范数经过训练之后的效果:
4
这个方法总体上增大了梯度范数,但是性能明显变差了。接下来我将介绍另一种缩小梯度范数,但会大大提高性能的方法。这里是(绿色):
5
这种新的方法将权重矩阵初始化为正交。正交矩阵是固定(Frobenius)范数的矩阵中退化程度最低的,其中退化度可以用不同的方式来衡量,例如奇异值小于给定常数的比例。以下是梯度范数经过训练之后的效果:
6
如果梯度范数的大小不是训练困难的原因,那原因是什么呢?答案是模型的退化总体上决定了训练性能。为什么退化会损害训练性能?因为参数空间中学习的退化速度大大减慢,导致减少了模型的有效维数,就像上面的例子一样。所以,上面的“Fold 0”网络和“Fold 1”网络虽然梯度范数值很好,但网络的可用自由度对这些梯度范数的贡献极其不均衡:绝大多数(退化的)自由度根本没有任何贡献。正如 Saxe 等人的论文表明,随着相乘矩阵的数量(即网络深度)的增加,这种矩阵的乘积变得越来越退化。这里分别是1层,10层和100层网络的一个例子:
7
随着深度的增加,积矩阵的奇异值变得越来越集中0。这个结果不仅与线性网络有关,类似的事情也发生在非线性网络中:随着深度的增加,给定层中隐藏单元的维度变得越来越低维化,即越来越退化。事实上,在有硬饱和边界的非线性网络中(例如 ReLU 网络),随着深度增加,退化过程会变得越来越快。Duvenaud 等人 2014 年的论文里展示了关于该退化过程的可视化:
8
随着深度的增加,输入空间(左上角所示)会在输入空间中的每个点处被扭曲成越来越细的单丝,只有一个与细丝正交的方向影响网络的响应。沿着这个方向,网络实际上对变化变得非常敏感。
最后,在这一点上,我忍不住要提起我的论文。在本文中,通过一系列的实验,我认为退化问题严重地影响了非线性网络的训练,采用跳过连接(ResNet 中采用的重要方法)的方式训练深度网络可以打破这种退化。我怀疑像Batch Normalization或 layer normalization等方法除了其他潜在的独立机制外(如减少最初提出的内部变量转换),在一定程度上是通过类似的打破退化机制训练深层网络的。众所周知,分裂归一化是一种有效处理隐藏单元响应的方法,而这也可以被看作是一种打破退化的机制。

以上为译文。
**
文章原标题《Why is it hard to train deep neural networks? Degeneracy, not vanishing gradients, is the key》,译者:黄小凡,审校:袁虎。

文章为简译,更为详细的内容,请查看原文**

相关文章
|
机器学习/深度学习 PyTorch 算法框架/工具
目标检测实战(一):CIFAR10结合神经网络加载、训练、测试完整步骤
这篇文章介绍了如何使用PyTorch框架,结合CIFAR-10数据集,通过定义神经网络、损失函数和优化器,进行模型的训练和测试。
579 2
目标检测实战(一):CIFAR10结合神经网络加载、训练、测试完整步骤
|
4月前
|
机器学习/深度学习 人工智能 算法
AI 基础知识从 0.6 到 0.7—— 彻底拆解深度神经网络训练的五大核心步骤
本文以一个经典的PyTorch手写数字识别代码示例为引子,深入剖析了简洁代码背后隐藏的深度神经网络(DNN)训练全过程。
890 56
|
2月前
|
机器学习/深度学习 数据可视化 网络架构
PINN训练新思路:把初始条件和边界约束嵌入网络架构,解决多目标优化难题
PINNs训练难因多目标优化易失衡。通过设计硬约束网络架构,将初始与边界条件内嵌于模型输出,可自动满足约束,仅需优化方程残差,简化训练过程,提升稳定性与精度,适用于气候、生物医学等高要求仿真场景。
336 4
PINN训练新思路:把初始条件和边界约束嵌入网络架构,解决多目标优化难题
|
8月前
|
机器学习/深度学习 存储 算法
NoProp:无需反向传播,基于去噪原理的非全局梯度传播神经网络训练,可大幅降低内存消耗
反向传播算法虽是深度学习基石,但面临内存消耗大和并行扩展受限的问题。近期,牛津大学等机构提出NoProp方法,通过扩散模型概念,将训练重塑为分层去噪任务,无需全局前向或反向传播。NoProp包含三种变体(DT、CT、FM),具备低内存占用与高效训练优势,在CIFAR-10等数据集上达到与传统方法相当的性能。其层间解耦特性支持分布式并行训练,为无梯度深度学习提供了新方向。
335 1
NoProp:无需反向传播,基于去噪原理的非全局梯度传播神经网络训练,可大幅降低内存消耗
|
机器学习/深度学习 数据可视化 计算机视觉
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
这篇文章详细介绍了如何通过可视化深度学习中每层特征层来理解网络的内部运作,并使用ResNet系列网络作为例子,展示了如何在训练过程中加入代码来绘制和保存特征图。
390 1
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
|
10月前
|
机器学习/深度学习 文件存储 异构计算
YOLOv11改进策略【模型轻量化】| 替换骨干网络为EfficientNet v2,加速训练,快速收敛
YOLOv11改进策略【模型轻量化】| 替换骨干网络为EfficientNet v2,加速训练,快速收敛
1109 18
YOLOv11改进策略【模型轻量化】| 替换骨干网络为EfficientNet v2,加速训练,快速收敛
|
10月前
|
机器学习/深度学习 数据可视化 API
DeepSeek生成对抗网络(GAN)的训练与应用
生成对抗网络(GANs)是深度学习的重要技术,能生成逼真的图像、音频和文本数据。通过生成器和判别器的对抗训练,GANs实现高质量数据生成。DeepSeek提供强大工具和API,简化GAN的训练与应用。本文介绍如何使用DeepSeek构建、训练GAN,并通过代码示例帮助掌握相关技巧,涵盖模型定义、训练过程及图像生成等环节。
|
10月前
|
机器学习/深度学习 文件存储 异构计算
RT-DETR改进策略【模型轻量化】| 替换骨干网络为EfficientNet v2,加速训练,快速收敛
RT-DETR改进策略【模型轻量化】| 替换骨干网络为EfficientNet v2,加速训练,快速收敛
259 1
|
12月前
|
人工智能 搜索推荐 决策智能
不靠更复杂的策略,仅凭和大模型训练对齐,零样本零经验单LLM调用,成为网络任务智能体新SOTA
近期研究通过调整网络智能体的观察和动作空间,使其与大型语言模型(LLM)的能力对齐,显著提升了基于LLM的网络智能体性能。AgentOccam智能体在WebArena基准上超越了先前方法,成功率提升26.6个点(+161%)。该研究强调了与LLM训练目标一致的重要性,为网络任务自动化提供了新思路,但也指出其性能受限于LLM能力及任务复杂度。论文链接:https://arxiv.org/abs/2410.13825。
227 12
|
机器学习/深度学习 自然语言处理 语音技术
Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧
本文介绍了Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧,并通过TensorFlow和PyTorch等库展示了实现神经网络的具体示例,涵盖图像识别、语音识别等多个应用场景。
437 8

热门文章

最新文章