1. 前言
三是化网络是2016年由Fengfu Li在论文《Ternary Weight Networks》中提出来的,它相比二值化网络具有更好的效果。论文地址如下:https://arxiv.org/abs/1605.04711 。
2. 出发点
首先,论文提出多权值比二值化具有更好的网络泛化能力。论文中提到,在VGG,GoogLeNet 和残留网络等最新的网络体系结构中,最常用的卷积滤波器大小为,如果使用上一节提到的二值权重,有个模板,但如果使用三值权重就有个模板,它的表达能力比二值权重强很多。
另外,在TWN中,每一个权重单元只需要2比特的存储空间。因此,和浮点数相比,TWN实现了高达16倍的模型压缩率。在计算能力方面,和二值化网络相比,TWN拥有额外的零值,但是零值不增加任何的乘法运算。因此,TWN中的乘法累加操作次数和二值化网络相比保持不变。
3. 三值化网络的原理
3.1 问题引入
首先,论文认为权值的分布接近于一个正态分布和一个均匀分布的组合。然后,论文提出使用一个scale参数去最小化三值化前的权值和三值化之后的权值的L2距离。
参数三值化的公式如下:
参数三值化公式
即我们选取一个阈值,大于这个阈值的权重就变成1,小于这个阈值的权重就变成-1,中间的为0。然后这个阈值是根据权重分布的先验知识计算出来的。这篇论文最核心的部分就是阈值和scale参数alpha的推导过程。
在参数三值化后,论文使用了一个scale参数(用表示)让三值化后的参数更接近三值化之前的参数,具体如下:
评估三值化后的参数和三值化之前的参数的差距
其中,表示卷积核的数量,权重估计。
然后,三维网络的前向传播过程如下:
三值网络的前向传播过程
其中,是输入的矩阵块,是卷积运算或者内积运算,是非线性激活函数,是积或卷积运算,无任何乘法。是输出的矩阵块。
前向传播过程
可以看到,在把乘到前面以后,我们就可以把复杂的乘法运算变成了简单的加法运算,从而加快了整个训练速度。
3.2 基于阈值的三值函数近似解
现在我们的目标是求解等式(1),然后我们容易知道上面的等式不仅仅和有关,还和有关,而是根据等式三来控制的,即:
给定一个就能确定一组参数,有了等式(3)之后原始的问题即等价于:
其中并且表示在里面的元素个数。是一个只和有关的一个独立常量。因此,对于任意的给定的,可选参数可以表示为如下式子:
通过将带入到等式4中,我们获得了一个独立的等式,可以表示为:
由于这个式子需要迭代才能得到解(即不断的调和),会造成训练速度过慢,所以如果可以提前预测权重的分布,就可以通过权重分布大大减少阈值计算的计算量。文中推导了正态