文章目录
文章链接
Ternary weight networks
主要提出了一个Ternary weight networks(TWNs),它将网络的权值限制为 { − 1 , 0 , 1 } \{-1, 0, 1\} {−1,0,1}。并且把它的性能和binary precision weight networks(BPWNs)和full precision weight networks(FPWNs)做了比较。
Expressive ability:能够表达的滤波器更多,例如对于一个 3 × 3 3\times3 3×3的滤波器,可以有 3 3 ∗ 3 = 19683 3^{3*3}=19683 33∗3=19683种模板,而BPWNs只有 2 3 ∗ 3 = 512 2^{3*3}=512 23∗3=512种模板
Model compression:比BPWNs大一倍
Computation requirement:就计算量而言,由于0是不需要任何的乘法计算的,所以计算量和BPWNs相同。
Problem formulation
目标:最小化原始的权重W和乘以一个非负的尺度因子
α
\alpha
α的三值化之后的权重
W
t
W^t
Wt之间的欧拉距离(Euclidian distance),即:
Cannot read property 'type' of undefined
这里n是滤波器的大小。TWNs在前向时的传播如下所示;
Cannot read property 'type' of undefined
其中,
X
X
X是一个block的输入,
∗
*
∗表示卷积运算或者inner product,
g
g
g是非线性激活函数,
⊕
\oplus
⊕表示inner product或者是不做乘法的卷积运算。
X
n
e
x
t
X^{next}
Xnext表示这个block的输出,或者下一个block的输入。
Approximated solution with threshold-based ternary function
W i t = f t ( W i ∣ Δ ) = { + 1 , i f W i > Δ 0 , i f ∣ W i ∣ ⩽ Δ − 1 , i f W i < − Δ (3) W_i^t=f_t(W_i |\Delta)= \begin{cases} +1,&\ \ if &W_i\ \ &>&\Delta \\ 0,&\ \ if &\begin{vmatrix} W_i \end{vmatrix}&\leqslant &\Delta\\ -1,&\ \ if &W_i\ \ &<-&\Delta \end{cases} \tag{3} Wit=ft(Wi∣Δ)=⎩⎪⎨⎪⎧+1,0,−1, if if ifWi ∣∣Wi∣∣Wi >⩽<−ΔΔΔ(3)
式中,
Δ
\Delta
Δ是一个正的阈值,将
(
3
)
(3)
(3)代入
(
2
)
(2)
(2)中,可得
α
∗
,
Δ
∗
=
a
r
g
m
i
n
α
≥
0
,
Δ
≥
0
(
∣
I
Δ
∣
α
2
−
2
(
∑
i
∈
I
Δ
∣
W
i
∣
)
α
+
c
Δ
)
(4)
\alpha^*,\Delta^*=\mathop {argmin}_{\alpha \geq 0, \Delta \geq 0}(\begin{vmatrix} I_{\Delta} \end{vmatrix}\alpha^2-2(\sum_{i \in I_{\Delta}}\begin{vmatrix} W_i \end{vmatrix})\alpha+c_\Delta) \tag{4}
α∗,Δ∗=argminα≥0,Δ≥0(∣∣IΔ∣∣α2−2(i∈IΔ∑∣∣Wi∣∣)α+cΔ)(4)
其中,
I
Δ
=
{
i
∣
∣
W
i
∣
}
>
Δ
I_{\Delta}=\{i|\begin{vmatrix} W_i \end{vmatrix} \}>\Delta
IΔ={i∣∣∣Wi∣∣}>Δ,
∣
I
Δ
∣
\begin{vmatrix} I_{\Delta} \end{vmatrix}
∣∣IΔ∣∣表示
I
Δ
I_{\Delta}
IΔ中权值大于
Δ
\Delta
Δ的个数。
c
Δ
=
∑
i
∈
I
Δ
c
W
i
2
c_\Delta=\sum_{i\in {I_{\Delta}^{c}}}W_i^2
cΔ=∑i∈IΔcWi2是一个与
α
\alpha
α无关的常量。因此,对于一个给定的
Δ
\Delta
Δ,
α
\alpha
α的最优值为:
α
Δ
∗
=
1
∣
I
Δ
∣
∑
i
∈
I
Δ
∣
W
i
∣
(5)
\alpha_\Delta^*={1\over\begin{vmatrix} I_{\Delta} \end{vmatrix}}\sum_{i \in I_{\Delta}}\begin{vmatrix} W_i \end{vmatrix} \tag{5}
αΔ∗=∣∣IΔ∣∣1i∈IΔ∑∣∣Wi∣∣(5)
将
(
4
)
(4)
(4)式中的
Δ
\Delta
Δ固定,
c
Δ
c_\Delta
cΔ是一个常数可忽略,对
α
\alpha
α求导即可得到
(
5
)
(5)
(5)。将
(
5
)
(5)
(5)式代入
(
4
)
(4)
(4)中,可以得到一个与
Δ
\Delta
Δ相关的方程,简化可得:
Δ
∗
=
a
r
g
m
a
x
Δ
>
0
1
∣
I
Δ
∣
(
∑
i
∈
I
Δ
∣
W
i
∣
)
2
(6)
\Delta^*=\mathop {argmax}_{\Delta > 0}{{1\over\begin{vmatrix} I_{\Delta} \end{vmatrix}}(\sum_{i \in I_{\Delta}}\begin{vmatrix} W_i \end{vmatrix})^2} \tag{6}
Δ∗=argmaxΔ>0∣∣IΔ∣∣1(i∈IΔ∑∣∣Wi∣∣)2(6)
但是式
(
6
)
(6)
(6)没有一个直接的解,因此假设
W
i
W_i
Wis是均匀分布或者正态分布的(uniform or normal distribution),为了简化计算,估计
Δ
∗
≈
0.7
⋅
E
(
∣
W
∣
)
≈
1
n
∑
i
=
1
n
∣
W
i
∣
(7)
\Delta^* \approx 0.7\cdot E(\begin{vmatrix} W \end{vmatrix}) \approx{1\over n}\sum_{i=1}^n\begin{vmatrix} W_i \end{vmatrix} \tag{7}
Δ∗≈0.7⋅E(∣∣W∣∣)≈n1i=1∑n∣∣Wi∣∣(7)
在具体的实现过程中,即先计算出网络的阈值
Δ
∗
\Delta^*
Δ∗,利用它根据
(
3
)
(3)
(3)式把网络的权值变为
{
−
1
,
0
,
1
}
\{-1,0,1\}
{−1,0,1},对于某一层的输入
X
X
X,根据
(
2
)
(2)
(2)式把它乘以
α
\alpha
α得到
α
X
\alpha X
αX作为新的输入,然后进行前向的传播。
Training with stochastic gradient descent method
使用了SGD训练TWNs,三值化的权重在前向传播和反向传播时使用,但是在参数更新时不使用,另外,还使用了Batch Normalization、learning rate scaling、momentum。
Model compression and run time usage
相对于float和double精度的模型,就运行时间而言,该模型可达到16倍或者32倍的压缩倍率。
Experiments
具体可参见论文