全文概括
本文目的在于了解各种训练量化网络的方法的行为差异,成功或失败的原因。
本文证明了BC (用二进制权值进行 forward backward 更新权重由 full-precision )长期训练的行为具有非凸优化所需的重要退火特性,而经典的舍入算法缺乏这种特性。
本文证明了,对于非凸优化问题,SR(Stochastic Rounding)不会随着 lr 的衰减而稳定,即不会随着 lr 的衰减而变成低损失迭代 (SR优化方式的变化范围较大,即振荡幅度大)。SR 不同于传统随机方法的地方在于:它无法利用贪婪的局部搜索方法来寻找最优解。
ADAM 比调整良好的 SGD 要好用。
BC-ADAM 效果是在三种优化 (R-ADAM、SR-ADAM)算法中最好的
简介
更新权重有两种方式
- 全精度权重副本,进行权重更新
- 保留全精度权重副本,用 low-precision 权重直接进行权重更新。
三种训练量化网络的方式
1. Deterministic Rounding(R)
量化权重的方式:
Q
d
(
w
)
=
s
i
g
n
(
w
)
∗
Δ
∗
⌊
∣
x
∣
Δ
+
1
2
⌋
Q_d(w)=sign(w) * \Delta * \lfloor \frac {|x|} \Delta + \frac12 \rfloor
Qd(w)=sign(w)∗Δ∗⌊Δ∣x∣+21⌋
其中,
Δ
\Delta
Δ为 step-size ,
⌊
∗
⌋
\lfloor * \rfloor
⌊∗⌋为舍入到最接近的量化数
更新权重的方式:
w
b
t
+
1
=
Q
d
(
w
b
t
−
α
▽
∂
f
∂
w
b
)
w_b^{t+1}=Q_d(w_b^t-\alpha \triangledown \frac {\partial f} {\partial w_b})
wbt+1=Qd(wbt−α▽∂wb∂f)即 forward、backward、parameters update 都在量化数上进行的
2. Stochastic Rounding(SR)
量化权重的方式:
Q
s
(
w
)
=
{
⌊
w
Δ
⌋
+
1
i
f
p
≤
w
Δ
−
⌊
w
Δ
⌋
⌊
w
Δ
⌋
o
t
h
e
r
w
i
s
e
Q_s(w)=\begin{cases} \lfloor \frac w \Delta \rfloor + 1 & if\ \ p \leq \frac w \Delta - \lfloor \frac w \Delta \rfloor \\ \lfloor \frac w \Delta \rfloor & otherwise \end{cases}
Qs(w)={⌊Δw⌋+1⌊Δw⌋if p≤Δw−⌊Δw⌋otherwise
更新权重的方式:
w
b
t
+
1
=
Q
s
(
w
b
t
−
α
▽
∂
f
∂
w
b
)
w_b^{t+1}=Q_s(w_b^t-\alpha \triangledown \frac {\partial f} {\partial w_b})
wbt+1=Qs(wbt−α▽∂wb∂f)
3. BinaryConnect(BC)
更新权重的方式:
w
r
t
+
1
=
w
r
t
−
α
▽
∂
f
∂
Q
(
w
r
t
)
w_r^{t+1}=w_r^t-\alpha \triangledown \frac {\partial f} {\partial Q(w_r^t)}
wrt+1=wrt−α▽∂Q(wrt)∂f 即先对权重进行量化,再进行 forward、backward,计算的梯度用于在 full-precision 上进行权重更新。
实验结果
BC-ADAM 可达 ADAM 训练的模型的精度。
SR-ADAM 要优于 R-ADAM ,但仍与 BC-ADAM 存在一定的性能差距。
SR-ADAM 在更新参数时,会改变更多的权重(如果权重和原始权重的符号不同,视为改变),而 BC-ADAM 的改变不超过
20
%
20\%
20%, R-ADAM 更新权重时不改变 conv layer 的参数。
SR-ADAM 使用大的 batch_size 要好一些(SR-ADAM 1024 要优于 SR-ADAM 128);而 BC 和 传统的经典的 SGC 一样,使用较小的 batch_size 要好一些(BC-ADAM 128 要优于 BC-ADAM 1024)。