三值神经网络

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三值神经网络相关的知识,希望对你有一定的参考价值。

参考技术A

权重压缩:三值神经网络

卷积神经网络(Convolutional Neural Network,CNN)尤其适合于目标识别、分类、检测及图像分割等计算机视觉应用。 典型的模型有数百万参数并 运算量大 ;例如,AlexNet有6100万参数(浮点数权值共占用249MB存储空间),分类一张图片需要15亿高精度运算。 所以为降低CNN规模和使用资源,现在有模型修剪(model pruning,去掉值较小的权值)和权值压缩(weight compression,利用少数几位量化权值) 两种方法。
权值压缩:二值神经网络

重要点:网络中的权重更新使用三值+1,0,-1;并最小化全精度权重W和三值权重W的欧式距离。


传播过程:


公式1的优化问题化解为如下:

从而 解:

最终确定一个阈值 、 来构建三值神经网络;根据 W 具体的分布情况来确定阈值 :

均匀分布:在 大于阈值的条件下 : 约等于均值( )*数量( )
[图片上传失败...(image-885207-1554553493996)]

正态分布:
[图片上传失败...(image-2a3804-1554553493996)]
最后本文章作者根据经验:

确定三值网络中的阈值与W期望的关系 :
均值分布: (注 在[-a,a]均匀取值,均值为 )
正态分布: (注:

算法:

[图片上传失败...(image-d013ce-1554553493996)]
只在前向和后向过程中使用使用权值简化 ,但是更新是仍然是使用连续的权值。
优化方法:随机梯度下降(SGD+动量)、批量标准化和学习率衰减
Momentum动量:

本实验基于数据集MNIST、CIFAR-10、ImageNet以及三种网络结构(LeNet-5、VGG-7、ResNet-18(B))进行测试,分别使用二值神经网络、三值神经网络及全精度网络,评测其效果。

TWNs在benchmark表现比全精度网络稍微差一点,但是模型压缩率达到了16/32倍。

源码:
前向后向 更改在conv_layer.cpp line 30-100 Forward_cpu | backward_cpu

算法三值选中法

    private static int f(int a, int b, int c) 
		if ((b - a) * (a - c) >= 0) 
			return a;
		 else if ((a - b) * (b - c) >= 0) 
			return b;
		 else 
			return c;
		
	

 中间值与另外两个数的差之积为负数

以上是关于三值神经网络的主要内容,如果未能解决你的问题,请参考以下文章

数组的三值合一

计蒜客 三值排序

算法三值选中法

三值策略的中位数

MySQL NULL--三值逻辑(Three Value Logic)

SQL进价2:三值逻辑和null