Accelerate CNN via Recursive Bayesian Pruning
用概率方法来剪枝,对层间的噪声用马科夫链建模,考虑了层与层之间的联系。数据驱动。
论文方法
x
x
x和
y
y
y分别代表数据和标签。
x
l
x^l
xl代表第
l
l
l层的输入,
W
l
W^l
Wl代表第
l
l
l层的参数,
g
(
∗
)
g(*)
g(∗)代表激活函数。则
x
l
+
1
=
W
l
∗
g
(
x
l
)
x^{l+1}=W^l*g(x^l)
xl+1=Wl∗g(xl)
对剪枝建模,把剪枝看成是dropout noise
θ
\theta
θ 乘以每一个channel.
x
l
+
1
=
W
l
∗
(
g
(
x
l
)
.
∗
θ
l
)
θ
c
l
∼
q
N
(
1
−
r
c
l
,
r
c
l
(
1
−
r
c
l
)
)
x^{l+1}=W^l*(g(x^l) .* \theta ^l)\\\theta ^l_c \sim_q \mathcal{N}(1-r_c^l,r_c^l(1-r_c^l))
xl+1=Wl∗(g(xl).∗θl)θcl∼qN(1−rcl,rcl(1−rcl))
r
r
r是dropout rate。这样的话,对于冗余通道,dropout rate接近1,他们会被剪掉因为他们的noise scaling接近0
记p是sparsity-inducing prior,q是estimator。
q
(
θ
l
)
=
∫
p
(
θ
l
∣
θ
l
−
1
)
q
(
θ
l
−
1
)
d
θ
l
−
1
q(\theta^l)=\int_{}^{}p(\theta^l | \theta^{l-1})q(\theta^{l-1})d\theta^{l-1}
q(θl)=∫p(θl∣θl−1)q(θl−1)dθl−1
如果
θ
l
−
1
\theta^{l-1}
θl−1接近Dirac distribution,则
q
(
θ
l
)
≈
∫
p
(
θ
l
∣
θ
l
−
1
)
δ
(
θ
l
−
1
)
d
θ
l
−
1
=
p
(
θ
l
∣
θ
l
−
1
=
E
[
θ
l
−
1
]
)
q(\theta^l)\approx \int_{}^{}p(\theta^l|\theta^{l-1})\delta(\theta^{l-1})d\theta^{l-1}=p(\theta^l|\theta^{l-1}=E[\theta^{l-1}])
q(θl)≈∫p(θl∣θl−1)δ(θl−1)dθl−1=p(θl∣θl−1=E[θl−1])
这个近似成立,当高斯噪声
θ
l
−
1
\theta^{l-1}
θl−1有接近0或1的dropout rate。这是直观的,因为对于一个高度紧凑的模型,重要的通道的dropout rate
r
≈
0
r \approx 0
r≈0而对于要被剪掉的通道,
r
≈
1
r\approx 1
r≈1。我们简单选取
N
(
0
,
ϵ
2
)
\mathcal{N}(0,\epsilon^2)
N(0,ϵ2)作为p,其中
ϵ
\epsilon
ϵ非常小。那么KL-divergence 等于
D
K
L
(
q
(
θ
l
)
∣
∣
p
(
θ
l
)
)
=
∑
c
=
1
C
D
K
L
(
q
(
θ
c
l
)
∣
∣
p
(
θ
c
l
)
)
=
∑
c
=
1
C
−
1
2
l
o
g
r
c
l
(
1
−
r
c
l
)
ϵ
2
+
1
−
r
c
l
2
ϵ
2
−
1
2
D_{KL}(q(\theta^l)||p(\theta^l))=\sum_{c=1}^{C}D_{KL}(q(\theta^l_c)||p(\theta^l_c))=\sum_{c=1}^{C}-\frac{1}{2}log\frac{r^l_c(1-r^l_c)}{\epsilon^2}+\frac{1-r^l_c}{2\epsilon^2}-\frac{1}{2}
DKL(q(θl)∣∣p(θl))=c=1∑CDKL(q(θcl)∣∣p(θcl))=c=1∑C−21logϵ2rcl(1−rcl)+2ϵ21−rcl−21
表示网络对数据的契合程度。我们把dropout noise
θ
c
l
\theta^l_c
θcl采样为:
θ
c
l
=
1
−
r
c
l
+
r
c
l
(
1
−
r
c
l
)
⋅
N
(
0
,
1
)
\theta^l_c=1-r^l_c+\sqrt{r^l_c(1-r^l_c)}\cdot \mathcal{N}(0,1)
θcl=1−rcl+rcl(1−rcl)⋅N(0,1)
对于第
l
l
l层,我们要最大化的目标函数是
L
=
L
D
−
D
K
L
(
q
(
θ
l
)
∣
∣
p
(
θ
l
)
)
L
D
=
∣
D
∣
∣
B
∣
∑
(
x
,
y
)
∈
B
l
o
g
P
(
y
∣
x
,
W
,
r
l
)
\mathcal{L}=\mathcal{L}_D-D_{KL}(q(\theta^l)||p(\theta^l))\\\mathcal{L}_D=\frac{|D|}{|B|}\sum_{(x,y)\in B}logP(y|x,W,r^l)
L=LD−DKL(q(θl)∣∣p(θl))LD=∣B∣∣D∣(x,y)∈B∑logP(y∣x,W,rl)
B
B
B是batch的意思,代表一批数据。收敛后,
r
l
r^l
rl接近0或1,
θ
l
\theta^l
θl大概服从Dirac分布。
这个性质导致
q
(
θ
l
)
≈
p
(
θ
l
∣
θ
l
−
1
=
E
[
θ
l
−
1
]
)
q(\theta^l)\approx p(\theta^l|\theta^{l-1}=E[\theta^{l-1}])
q(θl)≈p(θl∣θl−1=E[θl−1])。我们可以把
θ
l
\theta^l
θl固定为其期望,然后对
θ
l
+
1
\theta^{l+1}
θl+1进行Baysian inference。进一步,
E
[
θ
l
]
=
1
−
r
l
E[\theta^l]=1-r^l
E[θl]=1−rl已经接近0或1,我们可以让
r
c
l
s
r_c^ls
rcls为1。
r
c
l
←
1
,
i
f
r
c
l
>
T
W
c
l
←
W
c
l
⊙
(
1
−
r
c
l
)
r_c^l \leftarrow1, if \quad r^l_c > T\\W^l_c \leftarrow W^l_c \odot (1-r^l_c)
rcl←1,ifrcl>TWcl←Wcl⊙(1−rcl)
T是阈值。注意
θ
l
\theta^l
θl可以被忽略掉了。
注意1,8,9,11对应(1)(6)(7)第一行(8)
实验结果
略