Banner R., Hubara I., Hoffer E. and Soudry D. Scalable methods for 8-bit training of neural networks. NeurIPS, 2018.
概
本文针对 Batch Norm 模块在低精度 (8-bit) 的情况下进行一个合适的改进.
Range Batch Normalization
-
对于一个 n×d 的输入 x=(x(1),x(2),…,x(d)), Batch Norm 模块 normalize 每个维度:
^xd=x(d)−μd√Var[x(d)],(1)
其中 μd 是 x(d) 上的平均, Var[x(d)]=1n∥x(d)−μd∥22.
-
容易发现, √Var[x(d)] 这一项涉及平方和, 在低精度的情况下很容易导致数值不稳定. 因此, 本文希望提出一个 Range BN 模块来实现低精度下的一个鲁棒模拟:
^xd=x(d)−μdC(n)⋅range(x(d)−μd),(2)
其中 range(x)=max(x)−min(x), C(n)=1/√2ln(n).
-
我们来解释为什么这么做:
- 首先, 如果 x 服从高斯分布, 我们有
0.23σ⋅√ln(n)≤E[max(x(d)−μd)]≤√2σ⋅√ln(n).
- 根据, 如果 x 关于 0 对称, 我们有 E[max(x)]=−E[min(x)], 我们有
0.23σ⋅√ln(n)≤−E[min(x(d)−μd)]≤√2σ⋅√ln(n).
- 上面二式相加可得:
0.325σ≤C(n)⋅range(x(d)−μd)≤2σ.
-
因此, (2) 可以作为 (1) 的有效的稳定的模拟.
代码
[official-code]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix