训练深层次网络中的问题和一些解决办法

探讨深层神经网络训练中面临的梯度消失/爆炸问题及解决方案,包括非饱和激活函数(如ReLU和LeakyReLU)、批量标准化(BatchNormalization)等技术的应用,以及它们如何提升训练效率和模型性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

训练深层次的网络

当需要解决非常复杂的问题时,有可能需要训练数数十层或更多的神经网路,每层也许包含数百个神经元,通过数十万个连接。这时训练就面临着如下的问题:

  • 梯度消失或者梯度爆炸,并且低层难以训练
  • 训练缓慢
  • 具有数百万参数的模型将会有严重的过拟合训练集的风险
    因此,我们将讨论这些问题,并提出解决技巧。

梯度消失/爆炸问题—参考

反向传播算法的工作原理是从输出层到输入层,传播误差的梯度。当算法计算了网络中的每个参数的损失函数的梯度,就会在这些梯度下降步骤中来更新每个参数。

但是,随着网络的层次加深或者激活函数的选择不当,就会出现梯度消失/爆炸问题。

非饱和激活函数(ReLU函数 or leaky ReLU)

  • ReLu 死区
当小于0的这部分值,梯度会迅速降为0而不在影响网络训练。 这会造成部分神经元从来不被激活,也称作“死区”

因此引入了,Leaky ReLU.
  • Leaky ReLU

将小于0部分的梯度提高到

\alpha 

一般取较小的正数,如0.01 或 0.001

ELU 激活函数的主要缺点是计算速度慢于 ReLU 及其变体(由于使用指数函数),但是在训
练过程中,这是通过更快的收敛速度来补偿的。 然而,在测试时间,ELU 网络将比 ReLU 网
络慢。

  • 如何选择激活函数

一般 ELU > leaky ReLU(及其变体) > ReLU > tanh > sigmoid。

如果您关心运行时性能,那么
您可能喜欢 leaky ReLU超过ELU。

如果你不想调整另一个超参数,你可以使用前面提到的默
认的 α 值(leaky ReLU 为 0.01,ELU 为 1)。

如果您有充足的时间和计算能力,您可以使
用交叉验证来评估其他激活函数,特别是如果您的神经网络过拟合,则为RReLU;

如果您拥有庞大的训练数据集,则为 PReLU

批量标准化(Batch Normalization,BN)

  • 对输入层进行中心(Zero-Centering) 和 标准化

    中心化:使数据均值为0,标准差为1;

    标准化:是数据输出映射为[0,1]

  • 中间层的输入(激活函数前)使用两个新参数对结果进行尺度变换和偏移
    一个用于尺度变换
    一个用于偏移

  • Batch Normalization algorithm

\mu _B = \frac{1}{m_B} \sum_{i=1}^{m_B} x^i ;

{\sigma}_B^2 = \frac{1}{m_B} \sum_{i=1}^{m_B}(x^i - \mu _B)^2 ;

\hat{x}_i = \frac{x^i - \mu_B}{\sqrt[2]{\sigma_B^2} + \epsilon}

z^i = \gamma \hat{x}^i + \beta

\mu_B

是整个小批量B的经验均值

{\sigma}_B

是经验性的标准差,也是来评估整个小批量的

m_B

是小批量中的实例数量

\hat{x}_i

是以中心化和标准化的输入

\gamma

是层的缩放参数

\beta

是层的移动参数(偏移量)

\epsilon

通常选择一个很小的数字,避免被0整除(10^ -3),该项被称为平滑项(Laplace Smoothing)

z^i

是BN操作的输出,是输入缩放和移位后的状态

作者证明,这项技术大大改善了他们试验的所有深度神经网络。梯度消失问题大大减少了,
他们可以使用饱和激活函数,如 tanh 甚至 sigmoid 激活函数。网络对权重初始化也不那么敏
感。他们能够使用更大的学习率,显著加快了学习过程。具体地,他们指出,“应用于最先进
的图像分类模型,批标准化用少了 14 倍的训练步骤实现了相同的精度,以显著的优势击败了
原始模型。批量标
准化也像一个正则化项一样,减少了对其他正则化技术的需求(如
dropout).

然而,批量标准化的确会增加模型的复杂性(尽管它不需要对输入数据进行标准化,因为第
一个隐藏层会负责这一点,只要它是批量标准化的)。 此外,还存在运行时间的损失:由
于每层所需的额外计算,神经网络的预测速度较慢。 所以,如果你需要预测闪电般快速,你
可以尝试普通ELU + He初始化执行之前如何执行批量标准化。

Tensorflow 的实现

import tensorflow as tf

tf.layers.batch_normalization()

卷积神经网络(Convolutional Neural Networks,CNN)的性能影响因素主要包括以下几个方面: 1. 网络结构:网络结构是最基本的影响因素,包括卷积层、池化层、全连接层、激活函数等,不同的网络结构对性能影响很大。 2. 参数初始化:参数初始化对模型的训练性能影响很大,常见的参数初始化方法有随机初始化、Xavier初始化、He初始化等。 3. 激活函数:激活函数对模型的表达能力收敛速度都有影响,常见的激活函数有ReLU、sigmoid、tanh等。 4. 正则化方法:为了避免过拟合,常见的正则化方法有L1正则化、L2正则化、dropout等。 5. 优化算法:优化算法对模型的收敛速度性能都有影响,常见的优化算法有SGD、Adam、Adagrad等。 常见的卷积神经网络的改进方法包括: 1. 残差连接(Residual Connection):通过引入残差连接,可以解决深度网络训练时出现的梯度消失梯度爆炸问题,提高了模型的性能。 2. 批归一化(Batch Normalization):通过对每一层的输入进行归一化,可以加速模型的训练过程,降低过拟合风险。 3. 卷积核形状优化:通过优化卷积核的形状,可以提高模型的性能。 4. 学习率调整:通过动态调整学习率,可以避免模型陷入局部最优解。 5. 数据增强:通过对训练数据进行旋转、翻转、缩放等变换,可以扩充数据集,提高模型的泛化能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值