Abstract
本文在二值化权重(BWN)方面做出了创新,发表在AAAI2018上,作者是自动化所程建团队。本文的主要贡献是提出了一个新的训练BWN的方法,揭示了哈希与BW(Binary Weights)之间的关联,表明训练BWN的方法在本质上可以当做一个哈希问题。基于这个方法,本文还提出了一种交替更新的方法来有效的学习hash codes而不是直接学习Weights。在小数据和大数据集上表现的比之前的方法要好。
主要贡献
- 本文揭示了保持内积哈希与BWN之间的紧密关联。
- 为了减轻用哈希方法所带来的loss,本文将binary codes乘以了一个scaling factor并用交替优化的策略来更新binary codes以及factor。
- 在Cifar10,Cifar100以及ImageNet上实验,本文提出的BWNH方法比之前方法要好。
Inner-product preserving hashing
保留内积哈希方法是沈老师团队在15年ICCV上提出的,方法是给定两个点集和, 以及分别代表向量和的第个点,记作向量和的内积相似性(inner-product similarity)为。则目标函数变为:
与表示的是向量和的哈希函数。
哈希与BWN之间的关联
假设有一个L层pre-trained CNN model,是第层的input feature map.记作第层的权重的真实值为,目标是得到二进制的weighs ,天真的想法可能就是直接优化二者的差:
优化上式的解就是.直接来优化会导致accuracy的严重下降。这时我们可以优化内积相似性的quantiztion error:
我们可以发现公式和公式很相似,令,这时两个等式是一致的。换句话说,训练一个二值化网络(BWN)本质上就转化称为了一个哈希问题。由于是一个确定的公式,所以不用学习的哈希codes。这可以用在哈希空间的ACD(asmmetric distances calculation)方法来实现。
其实公式有时候仍然会导致accuracy的下降(原因?)。本文采用了在每个hashing codes 上乘以一个scaling factor:,是一个对角矩阵,对应的scaling因子,这样目标函数就变为:
是向量的第列向量。等式又可以分为N个独立子问题:
这里本文也采用交替更新的策略来求解公式.更新,固定;反之亦然。
首先初始化和,,对于,用的平均L1范数来初始化。
然后更新固定,对公式进行展开,
对进行求导,令其等于0,则的解为
最后更新,对公式进行展开,
在这里,是矩阵的迹,.这里公式可以用15年沈老师团队在CVPR上提出DCC(discrete cyclic coordinate descent)离散循环梯度下降方法来解决。
DCC算法的推导可以参考http://jikaichen.com/2016/05/31/notes-on-sdh/这篇博客。
大致算法就是:令为的第个元素,而是列向量除了的剩下的元素。类似的,记作是的第行的元素,是除了剩下的元素;是矩阵的第行以及是除了剩下的元素。则公式就变为:
这样我们可以得到的第个元素的解:
通过使用这种方法,通过固定的其他个元素,的每一个元素都可以被更新。
这种方法理论上是收敛的,实验结果也证明算法经过很少的迭代就可以收敛,下图展示了不同CNN model的收敛情况,可以看出在很少的迭代次数下就收敛了。
Layer-wise optimization
由于本文提出的交替优化binary weight策略是一层一层优化的,这样下来量化误差会层与层累加。这是因为量化第层会导致第层的输出的量化误差,而第层的输出正是第层的输入,因此也就间接导致了第层的优化。
本文采用Wu等人在QCNN中提出的training shceme.假设有一个pre-trained层的CNN model和一个第层被二值化的CNN model,记作第层的输入分别为以及.则目标函数将变为:
目标相似性矩阵可以通过和计算出来,真实相似性通过和binary codes所得到。因此通过这样一个层与层的training框架,quantization error可以被避免。
The While Training Scheme
这里就是量化完二值化weights,之后会有一个fine-tune的过程。
Experiments
以上分别是VGG-9,Alexnet以及ResNet-18的结果,比当前BWN方法都好。
上图表明本文提出的BWNH方法没有fine-tuning的情况下依然accuracy很高,当然fine-tuning会提高accuracy。
The Effect of Scaling Factor
上图展示了scaling factor的作用,可以看出scaling factor非常重要,没有scaling factor网络的accuracy会下降的非常严重,而且会很快的下降到很低,本文将scaling factor融合到了BN层在前向传播的时候,这就不会带来额外的存储。还有一点就是通过上图可以发现优化完conv2会比优化conv1的accuracy高,This is because the binary weights in conv2 compensates the accuracy drop by adapting to the input featuremaps generated by binary weights in conv1.
本文只对weights进行二值化,并没有对featuremaps进行二值化,这也是一个研究点。