剪枝系列3:Accelerate CNN via Recursive Bayesian Pruning

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=Wlg(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)θclqN(1rcl,rcl(1rcl))
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θl1)q(θl1)dθl1
如果 θ l − 1 \theta^{l-1} θl1接近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θl1)δ(θl1)dθl1=p(θlθl1=E[θl1])
这个近似成立,当高斯噪声 θ l − 1 \theta^{l-1} θl1有接近0或1的dropout rate。这是直观的,因为对于一个高度紧凑的模型,重要的通道的dropout rate r ≈ 0 r \approx 0 r0而对于要被剪掉的通道, r ≈ 1 r\approx 1 r1。我们简单选取 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=1CDKL(q(θcl)p(θcl))=c=1C21logϵ2rcl(1rcl)+2ϵ21rcl21
表示网络对数据的契合程度。我们把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=1rcl+rcl(1rcl) 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=LDDKL(q(θl)p(θl))LD=BD(x,y)BlogP(yx,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θl1=E[θl1])。我们可以把 θ 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]=1rl已经接近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) rcl1,ifrcl>TWclWcl(1rcl)
T是阈值。注意 θ l \theta^l θl可以被忽略掉了。

剪枝系列3:Accelerate CNN via Recursive Bayesian Pruning_第1张图片

注意1,8,9,11对应(1)(6)(7)第一行(8)

实验结果

你可能感兴趣的:(剪枝论文)