论文发布时间:2016-12
论文地址:https://arxiv.org/pdf/1612.01064.pdf
全文概括
TTQ只量化权重,该方法将权重量化成三元,即2-bit。
与其他方法不同的是,该方法的尺度因子更具有“包容性”,不是某层权重元素绝对值的均值 α l = ∑ ∣ w ∣ c o u n t l \alpha_l=\sum\frac{|w|}{count_l} αl=∑countl∣w∣,而是将正负尺度因子设定为参数(正负尺度都大于零),通过反向传播学习获得。即从 { − α , 0 , α } ⟶ { − W l n , 0 , W l p } \{ -\alpha,0,\alpha\}\longrightarrow\{-W_l^n,0,W_l^p\} {−α,0,α}⟶{−Wln,0,Wlp}。
提出了启发性的稀疏化思想:将最大值的 t t t 倍( t ∈ ( 0 , 1 ) t\in(0,1) t∈(0,1) )作为判断稀疏的阈值,即 w q = 0 ; i f w r ≤ ∣ t w m a x ∣ w_q=0; if\ w_r \leq |tw_{max}| wq=0;if wr≤∣twmax∣。 t t t是超参数。
提出了新的训练结构,其每层的两个尺度因子,直接通过网络模型反向传播学习,而不是通过学习网络参数后统计得到。即反向传播有两条路劲,一条指向全精度权重以学习参数分布,一条指向尺度因子以学习量化“边界”。
得到一个结论:第一个卷积层量化后,两个尺度因子变小,稀疏性更低;而最后一个卷积层和全连接层量化后,两个尺度因子变大,稀疏性更高。(个人猜测,第一层是因为要传播信息,所以分布比较紧凑;最后一层是因为要进行分类,所以大值与小值差距较大)
对尺度因子进行训练的好处在于,正负尺度因子的不对称使得模型能力更强,且针对所有层有一个常数稀疏r,调整超参数r可以调整量化阈值,能够获得不同稀疏度的三值网络。
简介
原来的三元权重网络, { − 1 , 0 , 1 } \{-1,0,1\} {−1,0,1}, { − E , 0 , E } \{-E,0,E\} {−E,0,E}都不是通过学习得到的,而是粗精度地取符号。在本文的三元权重网络,每层有两个参数,得到的网络权重为 { − W l n , 0 , W l p } \{-W_l^n,0,W_l^p\} {−Wln,0,Wlp}。
相关网络
Binary Neural Network(BNN)
该方法使用类似概率的方法将 32-bit 的权重转成 二值/三值 权重: w b ∼ B e r n o u l l i ( w ^ + 1 2 ) ∗ 2 − 1 w^b\sim Bernoulli(\frac{\hat{w}+1}2)*2-1 wb∼Bernoulli(2w^+1)∗2−1 w t ∼ B e r n o u l l i ( ∣ w ^ ∣ ) ∗ s i g n ( ∣ w ^ ∣ ) w^t\sim Bernoulli(|\hat{w}|)*sign(|\hat{w}|) wt∼Bernoulli(∣w^∣)∗sign(∣w^∣) 其中, w ^ \hat{w} w^表示全精度权重。
DoREFA-Net
w b = E ( ∣ w ^ ∣ ) ∗ s i g n ( w ^ ) w^b=E(|\hat{w}|)*sign(\hat{w}) wb=E(∣w^∣)∗sign(w^) 其中, E ( ∣ w ^ ∣ ) E(|\hat{w}|) E(∣w^∣)表示权重绝对值的平均值。
Ternary Weight Networks(TWN)
w l t = { W l w l ^ > Δ l 0 ∣ w l ^ ∣ ≤ Δ l − W l w ^ l < − Δ l w^t_l=\begin{cases}W_l&\hat{w_l}>\Delta_l \\ 0 & |\hat{w_l}|\leq \Delta_l \\ -W_l &\hat{w}_l<-\Delta_l\end{cases} wlt=⎩⎪⎨⎪⎧Wl0−Wlwl^>Δl∣wl^∣≤Δlw^l<−Δl
Δ l = 0.7 ∗ E ( ∣ w l ^ ∣ ) \Delta_l=0.7*E(|\hat{w_l}|) Δl=0.7∗E(∣wl^∣) W l = E i ∈ { i ∣ w l ^ > Δ } ( ∣ w l ( i ) ^ ∣ ) W_l=\mathop{E}\limits_{i\in\{i|\hat{w_l}>\Delta\}}(|\hat{w_l(i)}|) Wl=i∈{i∣wl^>Δ}E(∣wl(i)^∣)
方法介绍
在前向传播时,权重量化如下: w l t = { W l p w l ^ > Δ l 0 ∣ w l ^ ∣ ≤ Δ l − W l n w ^ l < − Δ l w^t_l=\begin{cases}W_l^p&\hat{w_l}>\Delta_l \\ 0 & |\hat{w_l}|\leq \Delta_l \\ -W_l^n &\hat{w}_l<-\Delta_l\end{cases} wlt=⎩⎪⎨⎪⎧Wlp0−Wlnwl^>Δl∣wl^∣≤Δlw^l<−Δl
求导如下: ∂ L ∂ W l p = ∑ i ∈ I l p ∂ L ∂ w l t ( i ) , ∂ L ∂ W l n = ∑ i ∈ I l n ∂ L ∂ w l t ( i ) \frac{\partial L}{\partial W_l^p}=\sum\limits_{i\in I^p_l}\frac{\partial L}{\partial w_l^t(i)},\frac{\partial L}{\partial W_l^n}=\sum\limits_{i\in I^n_l}\frac{\partial L}{\partial w_l^t(i)} ∂Wlp∂L=i∈Ilp∑∂wlt(i)∂L,∂Wln∂L=i∈Iln∑∂wlt(i)∂L 其中, I l p = { i ∣ w l ^ ( i ) > Δ l } I_l^p=\{i|\hat{w_l}(i)>\Delta_l\} Ilp={i∣wl^(i)>Δl}, I l n = { i ∣ w l ^ ( i ) < Δ l } I_l^n=\{i|\hat{w_l}(i)<\Delta_l\} Iln={i∣wl^(i)<Δl}
全精度权重的求导如下: ∂ L ∂ w l ^ = { W l p ∗ ∂ L ∂ w l t w ^ l > Δ l 1 ∗ ∂ L ∂ w l t ∣ w l ^ ∣ ≤ Δ l W l n ∗ ∂ L ∂ w l t w ^ l < − Δ l \frac{\partial L}{\partial \hat{w_l}}=\begin{cases}W_l^p*\frac{\partial L}{\partial w_l^t} & \hat{w}_l>\Delta_l \\ 1* \frac{\partial L}{\partial w_l^t} &|\hat{w_l}|\leq \Delta_l \\ W_l^n*\frac{\partial L}{\partial w_l^t} & \hat{w}_l<-\Delta_l \end{cases} ∂wl^∂L=⎩⎪⎪⎨⎪⎪⎧Wlp∗∂wlt∂L1∗∂wlt∂LWln∗∂wlt∂Lw^l>Δl∣wl^∣≤Δlw^l<−Δl
阈值: Δ l = t ∗ m a x ( ∣ w ^ ∣ ) \Delta_l=t*\mathop{max}(|\hat{w}|) Δl=t∗max(∣w^∣) 在 CIFAR-10数据集中, t 设为 0.05 0.05 0.05。
实验
CIFAR-10
初始学习率设为 0.1 0.1 0.1,在80、120、300个周期时乘以 0.1 0.1 0.1;L2正则化权重衰减设为 0.0002 0.0002 0.0002。一般 160 160 160个周期就能收敛。
ImageNet
batch_size设为128;初始学习率设为10-4,每56个周期乘以0.2;L2权重衰减设为5*10-6;大概在64个周期时,就比其他 low-bit 网络要好了。