Skip to content

Optimization Topic 2: Initialization and Learning Rate

Initialization Strategies

初始化策略决定了你需要初始化的随机数的范围标准差。如果用一个装随机数的盒子来类比的话,初始化策略决定了盒子的大小和边界。

Xavier Initialization

Xavier Initialization的核心思想是保持网络中输入和输出信号的方差相同,以确保信号在整个网络中不会发散或衰减。

最初主要用于Sigmoid或Tanh这种激活函数,因为它们在大值和小值区域接近线性,且输出均值接近于零。

计算公式(以均匀分布为例):

权重 \(W\) 从一个均匀分布 \(U(-a, a)\) 中采样,其中:

\[ a = \sqrt{\frac{6}{n_{in} + n_{out}}} \]
  • \(n_{in}\):当前层的输入神经元数量(扇入数,fan-in)。
  • \(n_{out}\):当前层的输出神经元数量(扇出数,fan-out)。

Kaiming Initialization

由Kaiming He等人提出,专门为 ReLU(Rectified Linear Unit) 激活函数设计。由于 ReLU 在负半轴的输出为零(即“杀死”了一半的神经元),它会导致信号的方差在每层传播后减半。Kaiming 初始化通过乘以 \(\sqrt{2}\) 来补偿 ReLU 带来的这种损失。

适用场景主要是ReLU及其变体(如Leaky ReLU)。

计算公式(以均匀分布为例):

权重 \(W\) 从一个均匀分布 \(U(-a, a)\) 中采样,其中:

\[ a = \sqrt{\frac{6}{n_{in}}} \]
  • 注意: 公式中只使用了输入神经元数量 \(n_{in}\)

Initialization Distributions

初始化权重策略决定了初始化随机数产生的形状。如果用装随机数的盒子来类比的话,分布决定了装入盒子的随机数的形状。

Uniform Distribution

均匀分布,权重值 \(W\) 在一个特定的区间 \([-\mathbf{A}, +\mathbf{A}]\)等概率地随机选取。权重值均匀地分布在设定的范围内。Xavier 和 Kaiming 的公式会计算出这个区间半宽 \(A\) 的值。

Normal Distribution

正态分布,权重值 \(W\) 从一个均值为 \(\mu\)、标准差为 \(\sigma\)* 的高斯(正态)分布中随机选取。靠近均值 (*\(\mu=0\)) 的权重值被选中的概率最高,离均值越远,被选中的概率越低。

在初始化时,均值通常设为 \(\mu=0\)。Xavier 和 Kaiming 的公式会用于计算标准差 \(\sigma\) 的值(例如 $ \sigma^2 = \frac{2}{n_{in} + n_{out}}$ 或 $ \sigma^2 = \frac{2}{n_{in}}$)。

学习率调度器

在DNN训练中的另一大挑战就是设置合适的learning rate schedule。不合适的设置会导致:

  • 训练的不稳定
  • 过慢的convergence
  • convergence to suboptimal solutions

学习率调度器(Learning Rate Schedulers)在深度学习训练中非常重要,它通过动态调整学习率 ,帮助模型在训练初期快速学习,在后期稳定细致地优化,从而提高收敛速度最终模型性能

具体来说,学习率(Learning Rate) 是优化器(如SGD、Adam)更新模型参数时所迈出的步长。步子太大,可能会跳过最优解;步子太小,则收敛太慢。调度器(Schedulers)就是用来自动管理和调整这个步长的机制。它不是使用一个固定的学习率,而是根据预设的规则(如周期数、损失值变化)来改变它。

其具体作用如下:

  • 训练初期(Fast Progress Early On): 刚开始训练时,模型参数离最佳值很远,可以使用 较大的学习率 。这使得模型可以快速穿过平坦的损失区域,迅速找到损失函数的“大致方向”,从而实现 快速收敛
  • 训练后期(Stable Fine-Tuning Later): 随着训练的进行,模型参数越来越接近损失函数的最低点。这时如果继续使用大步长,模型就会在最优解附近来回 震荡 ,无法稳定收敛。因此,调度器会 降低学习率 ,让模型“迈小步”,进行 稳定、细致的优化(fine-tuning) ,确保能找到更精确的最低点。

最终,通过早期的大步长,模型能更快地达到一个可接受的性能水平;通过后期的微小步长,模型能更精确地定位到损失函数的全局(或局部)最小值,从而获得 更高的准确率和更低的损失

学习率调度器就像是 汽车的油门和刹车 。刚上路时(训练初期)加大油门(高学习率)迅速提速;快到目的地时(训练后期)轻踩刹车(低学习率)缓慢而精确地停到位。这种动态控制是深度学习中提高效率和精度的一个 关键技巧

Project:Weight Initialization and Learning Rate Schedulers in DNN

数据集和DNN

ImageNet-50 (Customized)

ImageNet是一个用于图像分类任务的、相对较小的ImageNet数据集子集。ImageNet原始版本包含超过1400万张图像,覆盖了大约22000个类别,是推动深度学习在CV领域发展的关键数据集。

本Project筛选了来自于ImageNet的50个目标类别(来自ILSVRC-2012)。在preprocessing步骤,每个image都被转换为RGB格式,并resize到224 x 224的大小,来保证输入数据的一致性。每个类别大约有1300张照片,包含丰富的动物、植物和其他日常生活中耳熟能详的东西。

VGG-19

VGG-19是VGG(Visual Geometry Group)系列的卷积神经网络架构,以小尺寸的卷积核(3x3)和深层结构而闻名。

本Project部署了一个改进版本的VGG-19(由He et al改进的),与原版VGG-19相比,该改进版本在早期阶段采用了更大的convolutional layer,并增加了model的深度,来提升在ImageNet训练集上的efficiency和performance。

ResNet-34

ResNet-34是残差网络(Residual Network, ResNet)架构中的一个特定版本,34代表这个特定网络结构中可学习的权重层(含卷积层、全连接层)的总数。

残差学习引入了残差块(Residual Block) 的概念,有时候也被称为捷径连接(Skip Connection)。每个残差块包含两个3x3的卷积层,然后是batch normalization和ReLU激活。残差块允许信息跳过一些层直接传递,从而缓解了DNN中梯度消失和网络退化的问题,这使得网络可以构建得非常深而保持训练效果。

1761496622789

上图展示了三种DNN网络架构的对比:

左侧 中间 右侧
VGG-19 普通34层 ResNet-34
CNN CNN CNN
无残差 无残差 有残差

.

项目目标

分析研究weight initializatio methods和learning rate schedulers如何影响DNN model training。

Weight initialization决定了model的参数在训练开始前是如何设置的,其将影响model的:

  • 是否能收敛(converge)
  • 收敛速度(convergence speed)
  • 稳定性(stability)

Learning rate schedulers决定了梯度更新(gradient updates)的步长(step size),影响cost function如何适应training step和convergence performance。

Learning rate scheduler将严重影响:

  • training results:loss function
  • test results:test accuacy

Weight Initialization on VGG-19

在DNN训练中设置合适的初始值是一个巨大的挑战。不合适的初始值会导致梯度爆炸、梯度消失、收敛缓慢、degraded accuracy等问题。

本实验的目标是对比下列两种initialization strategies在VGG-19上的表现:

  • Xavier Initialization
  • Kaiming Initialization

以及下面两种distributions:

  • Uniform Distribution
  • Normal Distribution

在本次实验中,我们使用SGD optimizer来突出观测不同initialziation的表现。

因此实验应当由四组对照:

  • Xavier Initialization + Uniform Distribution
  • Xavier Initialization + Normal Distribution
  • Kaiming Initialization + Uniform Distribution
  • Kaiming Initialization + Normal Distribution

产出的结果包括:

  • Training loss vs. epochs
  • Training accuracy vs. epochs
  • Validation loss vs. epochs
  • Validation accuracy vs. epochs
  • Final test accuracy and test loss

LR Scheduling on ResNet-34

在DNN训练中的另一大挑战就是设置合适的learning rate schedule。不合适的设置会导致训练不稳定、收敛过慢、收敛到局部最优等。

在本次实验中,我们将使用ResNet model来探索不同学习率调度对训练的影响:

(1)Constant Learning Rate

恒定学习率,即学习率在整个训练过程中保持不变(不进行任何调度或调整)。这是最简单的基准方法。

(2)Exponential Learning Rate

Gradually reducing the LR from max to min according to some fixed schedule,即根据一些固定的调度表,逐步将学习率从最大值减小到最小值。

Exponential Learning Rate (指数学习率)是上述所描述的一种具体方法数,即让学习率按指数函数或几何级数衰减。

(3)Multistep Learning Rate

多步学习率也是固定调度表的一种,就是在预定的训练周期(epochs)点上,突然下降一个固定的因子(例如每隔 30 个周期降为原来的 0.1 倍)。

(4)Cyclic Learning Rate

Having multiple cycles of LR reduction from max to min,即具有从最大值到最小值多次循环衰减的学习率。

循环学习率是让学习率在一个预定的边界(最大值和最小值)之间周期性变化(通常呈三角形或正弦波)。

(5)Cosine Annealing Warm Restarts

带温暖重启的余弦退火也是上述从最大值到最小值多次循环衰减的学习率,其遵循余弦函数的形状衰减。当学习率达到最小值时,它会“温暖重启”并跳回最大值,然后再次开始余弦衰减。

在ResNet-34上,我们使用Adam优化器。初始化权重采用Kaiming Uniform Distribution(也是PyTorch默认的初始化方法)。


下面列出四种非常数的学习率调度器的具体参数设置要求:

Exponential (指数衰减):

  • 参数设置是 \(\text{Gamma} = 0.95\)
  • 作用机制是学习率在每个周期(或步数)结束后,都会乘以衰减因子 \(0.95\),实现学习率的平滑下降。

Multistep (多步衰减):

  • 参数设置是 \(\text{Milestones} = [40, 60, 80]\)\(\text{Gamma} = 0.1\)
  • 作用机制是学习率会在预先设定的第 \(40\)\(60\)\(80\) 个训练周期时骤降。
  • 在每个里程碑点,当前学习率将乘以 \(0.1\)

Cyclic (循环学习率):

  • 参数设置是 \(\text{base\_lr} = 5\text{e-}4\) (\(\text{最小学习率}\)),\(\text{max\_lr} = 5\text{e-}3\) (\(\text{最大学习率}\)),\(\text{step\_size\_up} = 2380\),以及 \(\text{mode} = \text{'triangular'}\)
  • 作用机制是学习率将在 \(0.0005\)\(0.005\) 之间周期性地循环变化。
  • 一个完整的上升或下降半周期需要 \(2380\) 步(迭代)。
  • 循环波形采用基础的 三角形模式

Cosine Annealing Warm Restarts (带温暖重启的余弦退火):

  • 参数设置是 \(\text{T\_0} = 10\)\(\text{T\_mult} = 3\)
  • 作用机制是学习率将遵循余弦函数进行衰减,并周期性地重启。
  • 初始周期长度 (\(\text{T\_0}\)) 为 \(10\) 个周期。
  • 周期乘法因子 (\(\text{T\_mult}\)) 为 \(3\)。每次学习率重启后,下一个衰减周期的时间长度将是上一次的 \(3\) 倍。