深度学习中的批量归一化与残差网络

2 下载量 30 浏览量 更新于2024-08-29 收藏 198KB PDF 举报
"批量归一化 && 残差网络" 批量归一化(BatchNormalization,BN)是深度学习中一种非常重要的技术,特别是在卷积神经网络(Convolutional Neural Networks, CNNs)中广泛使用。它由Ioffe和Szegedy在2015年提出,目的是加速网络的训练过程并提高模型的泛化能力。批量归一化的主要思想是对网络中的每一层的激活值进行规范化,使得每一层的输入保持在一个相对稳定的分布状态,从而减少内部协变量位移(Internal Covariate Shift)问题。 在浅层模型中,对输入进行标准化通常是通过对整个数据集的特征进行平均和方差计算来实现,使特征的均值为0,标准差为1。然而,在深度模型中,由于参数的不断更新,靠近输出层的激活值会经历剧烈的变化,导致训练过程不稳定。批量归一化针对这个问题,它不是对整个数据集进行规范化,而是对每个小批量(mini-batch)的数据进行处理。在每次前向传播时,计算小批量数据的均值和标准差,然后将这些统计信息用于调整神经网络的中间输出,使得不同层的激活值分布更加一致。 批量归一化通常被应用在全连接层和卷积层之后,但在激活函数之前。其工作流程如下: 1. 对于一个小批量数据,计算该批次内所有样本对应特征的均值(μB)和方差(σB2)。 2. 使用公式 x^=x−μBσB√γ+β\hat{x}=\frac{x-\mu_B}{\sqrt{\sigma_B^2}} \cdot \gamma + \betax^=σB2​√μB​−x​⋅γ+β,调整每个元素,其中γ\gamma和β\beta是可学习的标量参数,分别控制缩放和平移。 3. 将调整后的数据通过激活函数,如ReLU或Sigmoid,得到最终的输出。 残差网络(Residual Networks,ResNets)是由Kaiming He等人在2015年提出的,旨在解决深度网络中的梯度消失和爆炸问题。传统的深度网络中,信号需要通过多层传递,层数增加可能导致信息传递的衰减。残差块的设计允许网络直接跳过一些层,通过“短路”(skip connection)将原始输入信号直接加到输出上,形式化为:output = F(x) + x,其中F(x)是残差块的非线性变换,x是原始输入。 这种结构使得学习残差(即F(x))变得更加容易,而不是直接学习复杂的网络映射。残差网络的成功在于能够训练上百层甚至上千层的网络,显著提高了深度学习模型在图像识别等任务上的性能。此外,残差网络也为后来的网络设计提供了新的思路,如残差注意力网络、残差卷积块等。 总结来说,批量归一化和残差网络都是深度学习中解决深度网络训练难题的关键技术。批量归一化通过标准化中间层的输出,提升了网络的训练效率和稳定性;而残差网络则通过引入跳跃连接,使得深度网络可以有效地训练,避免了深度带来的问题,推动了深度学习的发展。在实际应用中,这两种技术常常结合使用,构建出高效且具有强大表示能力的深度学习模型。