| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> AccurateLarge Minibatch SGD:Training ImageNet in 1Hour -> 正文阅读 |
|
[人工智能]AccurateLarge Minibatch SGD:Training ImageNet in 1Hour |
一、摘要想要缩短训练时间,分布式同步SGD(Distributed synchronous SGD )通过将SGD minibatches划分到一个并行的解析器池,为这个问题提供了一个潜在的解决方案。然而,为了使该方案高效,每个解析器的工作负载必须很大,这意味着SGD minibatch大小的显著增长。在本文中,我们的经验表明,在ImageNet数据集上,大的minibatches会导致优化的缺陷,但当解决这些问题时,经过训练的网络表现出很好的繁华。具体来说,当使用高达8192张图像的minibatch训练时,我们没有显示出精度的损失。为了实现这一结果,我们采用了一个无超参数线性缩放规则(linear scaling rule),来调整学习速率作为minibatch 大小的函数(for adjusting learning rates as a function of minibatch size ),并开发了一种新的热身方案,克服了训练早期的优化挑战。 二、介绍更大的数据集和神经网络模型在所有任务中获得持续提高的准确性,这得益于预训练。但随着模型和数据规模的增长,训练时间也在增加。大规模深度学习的潜力和局限性,产生了开发新的技术来保持训练时间可控性的需求。本报告的目的是演示具有分布式同步随机梯度下降(distributed synchronous SGD)的大规模训练的可行性。 对于所有的minibatch sizes我们将学习率设置为minibatch size的线性函数,并在训练的前几个阶段应用一个简单的热身阶段。所有其他的超参数保持不变。使用这种简单的方法,我们模型的准确性对于minibatch size是不变的。我们的技术使训练时间线性减少,效率为90%,使我们能够在256个GPU上1小时内训练一个精确的8k minibatch ResNet-50 模型 为了解决这个异常大的minibatch,我们使用了一个简单的和无超参数的线性尺度规则来调整学习率。为了成功地应用这一规则,我们提出了一种新的热身策略,即在训练开始时使用较低的学习率的策略,以克服早期优化的困难。重要的是,我们的方法不仅与基线验证误差(the baseline validation error)相匹配,而且还能产生与小型minibatch基线密切匹配的训练误差曲线(closely match the small minibatch baseline)。与最近一些研究不同的是,我们的综合实验表明,优化困哪是大型minibatch的主要困难,而不是泛化性差。此外,我们还证明了线性缩放规则(linear scaling rule)和热身可以推广到更复杂的任务,包括目标检测和实例分割,我们最近开发的Mask R-CNN证明了这一点。我们注意到,在以前的工作中还没有提出一个解决广泛的大型minibatch的强大和成功的指导方针。 虽然我们提供的策略很简单,但它成功的应用乣在深度学习库中实现正确的,通常不被充分理解的实现细节。SGD实现中的细微差别可能会导致难以发现的错误。为了提供更有帮助的指导,我们描述了常见的陷阱和可以出发这些陷阱的相关实现细节。 我们的策略适用于所有框架,但实现有效的线性缩放需要强大的通信算法。我们使用开源的Caffe2深度学习框架和Big Basin GPU服务器,它使用标准的以太网网络(而不是专门的网络接口)来有效的操作。 本报告中描述的实际进展在一系列领域中都很有帮助。在工业领域,我们的系统释放了从互联网规模的数据中训练视觉模型的潜力,使每天使用数十亿张图像的训练成为可能。同样重要的是,在一个研究领域,我们发现它可以简化从单GPU到多GPU实现的迁移算法,而不需要超参数搜索,在我们的实验中将Faster R-CNN和ResNets从1个迁移到8个gpu。 2、Large Minibatch SGD我们通过最小化以下形式的损失L,来研究监督学习: ?这里w是一个网络的权值,X是一个标记的训练集,l(x,w)是从样本x及其标签y计算出的损失。通常,l是一个分类损失(比如交叉熵)和一个正则化损失的总和。Minibatch SGD会执行以下更新: 这里B是从X总采样的minibatch,n=|B|是minibatch的大小,η是学习率,t是迭代索引。注意,在实践中我们使用动量SGD(momentum SGD);我们回到之前关于动量的讨论。 2.1、Minibatch的学习率我们的目标是只用大型minibatch代替小型Minibatch,同时保持训练和泛化的准确性。这在分布式学习中特别有趣,因为它可以允许我们使用简单的数据结构并行性扩展到多个解析器,而不减少每个解析器的工作负载,也不牺牲模型的准确性。正如我们将在全面的实验中所展示的,我们发现一下的学习率尺度规则对于广泛的minibatch size是惊人般有效的: Linear Scaling Rule:当minibatch size增大k倍时,学习率也增大k倍。 其他所有的超参数(权重衰减等)都是保持不变的。线性尺度规则不仅可以帮助我们匹配使用small minibatch 和 big minibatch之间的 准确性,而且同样重要的是,在很大程度上匹配它们的训练曲线,这让我们能在收敛之前快速调试和比较实验。 解释:我们对线性尺度规则以及为什么它能有效进行了非正式的讨论。
Consider a network at iteration t
with weights
w
t
, and a sequence of k
minibatches
B
j
for
0
≤
j < k
each of size
n
. We compare the effect of executing k
SGD iterations with
small
minibatches
B
j
and learning rate
η
versus a single iteration with a large minibatch
∪
j
B
j
of size
kn
and learning rate
η
?
.
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 8:39:12- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |