Rockdu's Blog
“Where there is will, there is a way”
亲 您的浏览器不支持html5的audio标签
Toggle navigation
Rockdu's Blog
主页
数据结构
字符串算法
图论
数论、数学
动态规划
基础算法
[其它内容]
计算几何
科研笔记
归档
标签
XNOR-Net:ImageNet Classification Using Binary Convolutional Neural Networks
? 量化网络 ?
? 论文笔记 ?
2022-12-29 15:05:40
105
1
0
rockdu
? 量化网络 ?
? 论文笔记 ?
#### 概括 提出两种量化网络 **Binary-Weight-Networks(BWN)** 和 **XNOR-Net** ,并给出训练方法 #### 基本概念 普通 **CNN** 可以用$\left<\mathcal{I}, \mathcal{W}, *\right>$表示 - 其中$I=\mathcal{I}_{l(l=1,...,L)}$为每层输入张量,$I\in \mathbb{R}^{c\times w_{in}\times h_{in}}$ - $W=\mathcal{W}_{lk(k=1,...,K^l)}$是$l$层的所有卷积核 **filter** , $W\in \mathbb{R}^{c\times w\times h}$,$K^l$是$l$层卷积核个数; - $*$是指$I,W$之间的操作,为实数卷积 #### 核心问题:逼近卷积 **BWN:** $\left<\mathcal{I},\mathcal{B},\mathcal{A},\oplus\right>$ - 思想:卷积核二值化 - 其中$B=\mathcal{B}_{lk}$,$\alpha=\mathcal{A}_{lk}$,$\mathcal{W}_{lk}\approx \mathcal{A}_{lk}\mathcal{B}_{lk}$ 要逼近卷积,即 $$ I*W\approx (I\oplus B)\cdot \alpha $$ 其中$B\in \{+1,-1\}^n,\alpha\ge 0$ $\oplus$是无乘法卷积,若符号$\{+1,-1\}\to \{0,1\}$即为符号异或 推导其量化: $$ J(B,\alpha)=\Vert W-\alpha B \Vert^2=W^TW-2\alpha W^TB+\alpha^2B^TB\\ $$ 由于$B^TB=n$,$W$为常数,有: $$ B^*=\mathop{\mathrm{argmin}}\limits_{B}J(B,\alpha)=\mathop{\mathrm{argmax}}\limits_{B}(\alpha W^TB)=\mathrm{sign}(W) $$ 对$\alpha$考察: $$ \mathop{\mathrm{argmin}}\limits_{\alpha}J(B,\alpha)=\mathop{\mathrm{argmin}}\limits_{\alpha}(-2\alpha W^TB^* +n\alpha^2)\\ \frac{\partial J}{\partial \alpha}=-2W^TB^*+2n\alpha $$ 令$\partial J/\partial \alpha=0$: $$ \alpha^*=\frac{W^TB^*}{n}=\frac{1}{n}\Vert W \Vert_{\ell1} $$ **BWN的训练** 效果最好的网络不一定适合量化,目标——**量化后** 效果最好的网络 - 思路:将量化过程加入训练 $$ I*W\to (I\oplus \mathrm{sign}(W))\cdot \frac{1}{n}\Vert W\Vert_{\ell 1} $$ - 其中$\mathrm{sign}(\cdot)$的求导使用代理梯度 **XNOR-Net:** - 思想:卷积核+输入二值化 - 输入的量化过程 **本身即具有非线性**,可看做激活函数 - 结构调整 要逼近卷积,考察任意卷积: $$ X^TW\approx \beta H^T\alpha B $$ 其中$H,B\in \{+1,-1\}^n$且$\beta,\alpha\in \mathbb R^+$ 有优化目标: $$ \alpha^*,B^*,\beta^*,H^*=\mathop {\mathrm {argmin}} \limits_{\alpha, B,\beta,H} {\Vert X \odot W - \beta \alpha H \odot B\Vert} $$ 令$Y=X \odot W,\gamma=\beta\alpha,C=H \odot B$ 有: $$ \gamma^*,C^*=\mathop {\mathrm{argmin}}\limits_{\gamma,C} \Vert Y-\gamma C \Vert $$ 与 **BWN** 部分形式相同,易得: $$ \gamma^* = \frac{1}{n} \Vert Y \Vert_{\ell1}\\ C = \mathrm{sign}(Y) $$ 思考将$C^*$分解到$B^*,H^*$,发现符号函数有分配律: $$ C^* = \mathrm{sign} (X \odot W) = \mathrm{sign} (X) \odot \mathrm{sign} (W) = H^* \odot B^*\\ H^* = \mathrm{sign} (X), B^* = \mathrm{sign} (W) $$ 思考将$\gamma^*$分解到$\alpha^*,\beta^*$,利用$X_i$和$W_i$无关: $$ E[|Y_i|] = E[|X_i||W_i|] = E[|X_i|] E[|W_i|]\\ \gamma^* = \frac{\sum_i |Y_i|}{n} \approx \frac{\sum_i |X_i|}{n} \frac{\sum_i |W_i|}{n} = (\frac{1}{n} \Vert X \Vert_{\ell1}) (\frac{1}{n} \Vert W \Vert_{\ell1}) = \beta^* \alpha^*\\ \beta^* = \frac{1}{n} \Vert X \Vert_{\ell1}, \alpha^* = \frac{1}{n} \Vert W \Vert_{\ell1} $$ 最终过程: $$ X * W = (\mathrm{sign}(X) \odot \mathrm{sign}(W)) \cdot \frac{1}{n}\Vert X \Vert_{\ell1} \cdot \frac{1}{n}\Vert W \Vert_{\ell1} $$ 解决了卷积的逼近,考察一层卷积网络的其中一个卷积核$W$: $$ O[i,j] = I[i-\lfloor \frac{k\_size}{2} \rfloor...i+\lfloor \frac{k\_size}{2} \rfloor,j-\lfloor \frac{k\_size}{2} \rfloor...j+\lfloor \frac{k\_size}{2} \rfloor] * W\\ $$ 令$I[i-\lfloor \frac{k\_size}{2} \rfloor...i+\lfloor \frac{k\_size}{2} \rfloor,j-\lfloor \frac{k\_size}{2} \rfloor...j+\lfloor \frac{k\_size}{2} \rfloor] = I'[i,j]$ $$ O[i,j] = (\mathrm{sign}(I'[i,j]) \odot \mathrm{sign}(W)) \cdot E[I'[i,j]] \cdot E[W] $$ 因此使用一个全$'1'$卷积核预处理出$K[i,j]=E[I'[i,j]]$,即可计算量化卷积层 **网络结构调整: ** ![title](https://leanote.com/api/file/getImage?fileId=63ad3c1eab64411709a995fe) - 此处的BinActiv+BinConv是原来卷积的近似 - 由于BinActiv自带非线性,可看做激活函数,为去除原激活函数提供了依据 - 此处的BNorm若放在conv后,由于每个位置只可能有两个值$+O[i,j],-O[i,j]$,BN效果将极差 #### 结果 在ImageNet上: | | AlexNet | ResNet18 | GoogLenet | | ------------ | --------- | --------- | --------- | | **BWN** | 56.8/79.4 | 60.8/83.0 | 65.5/86.1 | | **XNOR-Net** | 44.2/69.2 | 51.2/73.2 | N/A | | **Original** | 56.6/80.2 | 69.3/89.2 | 71.3/90.0 | **近似推导的有效性** 和 **结构调整的合理性** ![title](https://leanote.com/api/file/getImage?fileId=63ad3c33ab64411710a7e6a6) #### 问题 - BWN虽然量化卷积核可以预处理,每个卷积核仍然会引入一次对输入逐个位置的全局乘法 - XNOR-Net对于每一次的输入都要逐个位置预处理均值,且要逐个位置计算两项乘法 - 二值网络中pooling似乎很重要,但也会引入乘法 - 网络结构中,激活函数是否有必要 #### Notes - fc可以写成卷积层形式,本文的fc层也做了量化 - BN层在二值网络中的位置问题 - 近似推导蕴含先验知识,可能比训练有效得多
上一篇:
MRI影响缺失模态分割论文&总结[更新中]
下一篇:
细节小专题
1
赞
105 人读过
新浪微博
微信
腾讯微博
QQ空间
人人网
提交评论
立即登录
, 发表评论.
没有帐号?
立即注册
0
条评论
More...
文档导航
没有帐号? 立即注册