| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> NFNet:NF-ResNet的延伸,不用BN的4096超大batch size训练 | 21年论文 -> 正文阅读 |
|
[人工智能]NFNet:NF-ResNet的延伸,不用BN的4096超大batch size训练 | 21年论文 |
论文: High-Performance Large-Scale Image Recognition Without Normalization
Introduction? 目前,计算机视觉的大部分模型都得益于深度残差网络和batch normalization,这两大创新能够帮助训练更深的网络,在训练集和测试集上达到很高的准确率。特别是batch normalization,不仅能够平滑损失曲线,使用更大的学习率和batch size进行训练,还有正则化的作用。然而,batch normalization并不是完美,batch normalization在实践中有三个缺点:
? 其中,第三个问题最为严重,这会引发一系列的负面问题。首先,batch normalization使得模型难以在不同的设备上复现精度,而且分布式训练经常出问题。其次,batch normalization不能用于要求每轮训练样本独立的任务中,如GAN和NLP任务。最后,batch normalization对batch size十分敏感,在batch size较低时表现较差,限制了有限设备上的模型大小。
Understanding Batch Normalization? 论文探讨了batch normalization的几个优点,这里简单说一下:
Towards Removing Batch Normalization? 这篇论文的研究基于作者之前的Normalizer-Free ResNets(NF-ResNets)进行拓展,NF-ResNets在去掉normalization层后依然可以有相当不错的训练和测试准确率。NF-ResNets的核心是采用
h
i
+
1
=
h
i
+
α
f
i
(
h
i
/
β
i
)
h_{i+1}=h_i+\alpha f_i(h_i/\beta_i)
hi+1?=hi?+αfi?(hi?/βi?)形式的residual block,
h
i
h_i
hi?为第
i
i
i个残差块的输入,
f
i
f_i
fi?为第
i
i
i个residual block的残差分支。
f
i
f_i
fi?要进行特殊初始化,使其有保持方差不变的功能,即
V
a
r
(
f
i
(
z
)
)
=
V
a
r
(
z
)
Var(f_i(z))=Var(z)
Var(fi?(z))=Var(z)。
α
=
0.2
\alpha=0.2
α=0.2用于控制方差变化幅度,
β
i
=
V
a
r
(
h
i
)
\beta_i=\sqrt{Var(h_i)}
βi?=Var(hi?)?为
h
i
h_i
hi?的标准差。经过NF-ResNet的residual block处理后,输出的方差变为
V
a
r
(
h
i
+
1
)
=
V
a
r
(
h
i
)
+
α
2
Var(h_{i+1})=Var(h_i)+\alpha^2
Var(hi+1?)=Var(hi?)+α2。 ? 其中,
μ
i
=
(
1
/
B
)
∑
j
W
i
j
\mu_i=(1/B)\sum_jW_{ij}
μi?=(1/B)∑j?Wij?和
σ
i
2
=
(
1
/
N
)
∑
j
(
W
i
j
?
μ
i
)
2
\sigma^2_i=(1/N)\sum_j(W_{ij}-\mu_i)^2
σi2?=(1/N)∑j?(Wij??μi?)2为对应卷积核的某行(fan-in)的均值和方差。另外,非线性激活函数的输出需要乘以一个特定的标量
γ
\gamma
γ,两者配合确保方差不变。 Adaptive Gradient Clipping for Efficient Large-Batch Training? 梯度裁剪能够帮助训练使用更大的学习率,还能够加速收敛,特别是在损失曲线不理想或使用大batch size训练的场景下。因此,论文认为梯度裁剪能帮助NF-ResNet适应大batch size训练场景。对于梯度向量 G = ? L / ? θ G=\partial L/\partial\theta G=?L/?θ,标准的梯度裁剪为: ? 裁剪阈值
λ
\lambda
λ是需要调试的超参数。根据经验,虽然梯度裁剪可以帮助训练使用更大的batch size,但模型的效果对阈值
λ
\lambda
λ的设定十分敏感,需要根据不同的模型深度、batch size和学习率进行细致的调试。于是,论文提出了更方便的Adaptive Gradient Clipping(AGC)。 ? 裁剪阈值
λ
\lambda
λ为超参数,设定
∥
W
i
∥
F
?
=
m
a
x
(
∥
W
i
∥
F
,
?
=
1
0
?
3
)
\|W_i\|^{*}_F=max(\|W_i\|_F, \epsilon=10^{-3})
∥Wi?∥F??=max(∥Wi?∥F?,?=10?3),避免零初始化时,参数总是将梯度裁为零。借助AGC算法,NF-ResNets可以使用更大的batch size(4096)进行训练,也可以使用更复杂的数据增强。最优的
λ
\lambda
λ需考虑优化器、学习率和batch size,通过实践发现,越大的batch size应该使用越小的
λ
\lambda
λ,比如batch size=4096使用
λ
=
0.01
\lambda=0.01
λ=0.01。 Normalizer-Free Architectures with Improved Accuracy and Training Speed? 论文以带GELU激活的SE-ResNeXt-D模型作为Normalizer-Free网络的基础,除训练加入ACG外,主要进行了以下改进:
? 根据上述的修改,得出的NFNet系列的各参数如表1所示。这里网络的最后有全局池化层,所以训练和测试的分辨率可以不一样。 Experiment? 对比AGC在不同batch size下的效果,以及 λ \lambda λ与batch size的关系。 ? 在ImageNet对比不同大小的网络的性能。 ? 基于ImageNet的10 epoch预训练权重,进行NF-ResNet改造并Fine-tuning,性能如表4所示。 Conclusion? 论文认为Batch Normalization并不是网络的必要构造,反而会带来不少问题,于是开始研究Normalizer-Free网络,希望既有相当的性能也能支持大规模训练。论文提出ACG梯度裁剪方法来辅助训练,能有效防止梯度爆炸,另外还基于NF-ResNet的思想将SE-ResNet改造成NFNet系列,可以使用4096的超大batch size进行训练,性能超越了Efficient系列。 ? ?
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/26 2:55:11- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |