其中 η 为学习率。该方法被称作随机梯度下降(SGD)。通常,我们并不会只使用一个样本计算损失和梯度,我们每次迭代会使用一个批量的样本更新权重。现在,我们令第 t 次迭代的批量大小为 B_t,且 B_t 的大小为 b。然后我们就可以基于以下方程(3)更新权重: 这种方法叫作小批量随机梯度下降(Mini-Batch SGD)。为了简化表达方式,我们可以说方程(4)中的更新规则代表我们使用权重的梯度∇w_t 更新权重 w_t 为 w_t+1。 2.2 大批量训练的困难 2.3 学习率(LR) 2.4 顶尖的大批量训练 3 ImageNet-1k 训练 3.1 重现和延伸 Facebook 的研究结果 与 facebook 的论文类似,我们使用预热策略(warm-up policy)和线性缩放策略来获取学习率。但是我们和 Facebook 有两点不同:(1)我们将学习率提升得更高,Batch-256 使用的基本学习率是 0.2,而 Batch-8192 使用的基本学习率是 6.4。(2)我们使用多个规则(poly rule)而不是多步规则(multistep rule)来更新学习率。 Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour(Facebook论文):https://arxiv.org/abs/1706.02677 图 1:从这张图片中,我们可以清楚地看到我们使用 8k 批量大小的准确度和 256 批量大小的准确度在 90 个 epoch 中达到同等水平。该实验在一个 NVIDIA DGX-1 工作站上完成。 表 1:ResNet-50 模型在 ImageNet 数据集上使用多个学习率规则的情况。 3.2 使用 AlexNet 训练 ImageNet 3.2.1 学习率的线性缩放和预热策略 我们使用批量为 512 的 BVLC-AlexNet 作为我们的基线,其在 100 个 epoch 中实现了 0.58 的准确度。在该实验中,我们使用多个学习率规则。基本的学习率是 0.01,而多个规则的学习率为 2。我们的目标是使用 Batch-4096 和 Batch-8192 在 100 个 epoch 实现 0.58 的准确度。 表 2:AlexNet 模型使用多个学习率策略在 ImageNet 数据集中的训练情况。我们使用学习率的线性缩放和预热策略,这些是 Facebook 论文(7)中使用的主要技术。 3.2.2 用于大批量训练的批归一化(BN) 为在 AlexNet 上实现大批量训练,我们尝试了许多不同技术(如,数据清洗、数据缩放(data scaling)、多步 LR、最小 LR 调参)。我们观察到只有批归一化(BN)能够提升准确度。 3.2.3 用于大批量训练的层级对应的适应率缩放(LARS) 为了提高大批量 AlexNet 的准确度,我们设计了一个更新学习率的新规则。如前文所述,我们使用 w = w − η∇w 来更新权重。每一层都有自己的权重 w 和梯度 ∇w。标准 SGD 算法在所有层上使用相同的 LR(η)。但是,从实验中我们观察到不同的层可能需要不同的学习率。 atv,大批量训练扩展到了3万" src="http://www.wzatv.cc/atv/uploads/allimg/170821/0019195605_0.png" /> 表 3:AlexNet-BN 使用多个 LR 策略在 ImageNet 数据集上的训练情况。 图 2:从上图中,我们清楚地观察到在添加批归一化后,泛化性能变得更好。 表 5:AlexNet_BN 使用 LARS 学习率和多个规则在 ImageNet 数据集上的训练情况。 表 6:AlexNet 模型在 ImageNet 数据集中的训练情况 图 3:所有例子只运行 100 个 epoch。我们能明显观察到 LARS 学习率的影响。 4 实验结果 4.1 系统和库 4.2 实现细节 4.3 训练 ResNet 50 的顶级结果 通过使用 LARS,我们能把 ResNet50 模型的 batch 大小扩展到 32K。我们使用 Batch-256 作为基线。在最高准确度上,8K 的 Batch 损失了 0.3% 的准确度,32K 的 Batch 损失了 0.7% 的准确度。我们相信这些准确度损失能够通过超参数调整弥补。我们的基线要比顶级的结果(7)(17)略低,因为我们并未使用数据增强。 图 4:通过使用 LARS,我们能把 ResNet-50 的批量大小扩展到 32K 表 7:ResNet-50 模型在 ImageNet 数据集上的训练情况 表 8:AlexNet-BN 的速度与时间 4.4 使用大批量的收益 (责任编辑:本港台直播) |