当前位置: 首页 > article >正文

二值化神经网络(BNN)基础学习(一)

目录

  • 1.简介
  • 2.优点
  • 3.基本原理
    • 3.1 权重和激活值二值化[3]
    • 3.2 乘法优化
    • 3.3 权重和激活值更新
  • 4.结论[3]
  • 参考资料

1.简介

​ 二值化神经网络,在浮点型(权重值和激活函数值存储类型,32bit)神经网络的基础,将其权重和激活函数值进行二值化(+1,-1存储,只需1bit)得到的神经网络。[1]

​ BNN可用于嵌入式或移动场景(例如手机端、可穿戴设备、自动驾驶汽车等)[1],这些场景都没有GPU且计算能力和存储容量相对较弱且限制较大,具有研究的价值和意义。


1502909-20190330104505434-704126019.png
二值化神经网络示例

2.优点

​ 既然参数值存储位数变少,其运算速度和存储空间必然能较原来神经网络有所提升,同时在训练效果上有所提升。

  • 存储空间上,通过将权重矩阵二值化,一个权重值只占用一个比特,相比于单精度浮点型权重矩阵,网络模型的内存消耗理论上能减少32倍,因此BNN在模型压缩上具有很大的优势。[1]

  • 运算速度上,权重值和激活函数值进行二值化之后,原来32位浮点型数的乘加运算,可以通过一次异或运算和一次popcnt(population count 统计有多少个为1的位)运算解决,在模型加速上具有很大的潜力。[1]

  • 训练效果上,有的时候二值网络的训练效果甚至会超越全精度网络,因为二值化过程给神经网络的权重和激活值带来了noise,像dropout一样,反而是一种regularization,可以部分避免网络的overfitting。[2]

3.基本原理

​ 方法来自于Bengio组2016年发表《Binarynet: Training deep neural networks with weights and activations constrained to +1 or -1》。

3.1 权重和激活值二值化[3]

Deterministic(确定法):大于等于0,取+1;否则,取-1

1502909-20190330104513794-559257674.png

Stochastic(统计法):以一定的概率img,取+1,或-1

img

​ 作者采用确定法,在前向传播过程中,经过Sign函数,可以将实数型的权值和激活值量化成+1,-1,当用于预测时,参数值仅为+1或-1,可以减小参数的内存占用和运算量;但是,训练时,仍需要对实数型的权值和激活值计算梯度,并以此更新权值。论文中说到这里如果不是实际值的话,梯度处处为0,无法进行梯度下降。

3.2 乘法优化

用Xnor代替乘法的可行性:

假如用0表示-1,那么原来的二值乘法运算,与Xnor的真值表一样,所以,用Xnor代替乘法是合理、可行的。
1502909-20190330104523071-296801958.png

例:a=[1,-1, 1, 1, -1],W=[-1,1,1,-1,-1]

正常乘法操作:a1xw1+a2xw2+a3xw3+a4xw4+a5xw5 =1x-1+-1x1+1x1+1x-1+-1x-1=-1

转成Xnor的计算方式:在程序中,a=[1,0,1,1,0],W=[0,1,1,0,0]表示的,

a^W=[1^0,0^1,1^1,1^0,0^0]=[1,1,0,1,0]

Popcount(a^w)=3

用vec_len表示向量元素个数的话,那么用xnor代替正常的乘累加(卷积),可以用通式:-(2Popcount(a^w)-vec_len)来计算,此例结果为 -(2Popcount(a^w)-5) = -1

3.3 权重和激活值更新

网络前向传播算法:

1502909-20190330104528227-1172702583.png

​ 对所有层循环,符合函数对当前权重Wk二值化,记为Wbk ,然后与上层激活值abk-1相乘在进行BN得本层激活值ak ,如果不是最后一层,则ak进行二值化。

网络反向传播算法:

1502909-20190330104531904-2115298766.png

​ 对所有层循环(倒序),如果k不是第一层,则计算梯度gak ,其中1|ak|含义:

1502909-20190330104537965-968026323.png

图片来源于 [3]

, 这里表示当|r|<=1时,Sign(r)的梯度等于1;否则,均为0。可见,这样处理,既保留了梯度信息,当r太大时,又取消梯度,加速网络的收敛。这就相当于,用HTanh(x)代替Sign(x)[3]

转载于:https://www.cnblogs.com/huxiaozhouzhou/p/10625614.html

http://www.lryc.cn/news/2417250.html

相关文章:

  • 网络安全中数据加密技术的发展趋势及相关应用
  • mywife.cc 神一样的存在!
  • Vulkan简介
  • Ubuntu之开篇
  • 第7章、单选按钮RadioGroup与复选框CheckBox(从零开始学Android)
  • class类文件结构
  • [创业-18]:财务报表之资产负债表
  • Python pdf2word -- pdf文件转word文件
  • JS+CSS仿admin5站长网首页导航菜单代码
  • 腾讯工蜂的使用
  • ​​Jmeter性能测试(性能测试,Jmeter使用与结果分析)
  • IPsec 9个包分析(主模式+快速模式)
  • androidP: apk安装流程
  • Parallel的使用 之Parallel.forrech
  • 详解 Android 中 BroadcastReceiver
  • 用spss进行主成分分析
  • php fakepath,chrome上传图片 路径为c:/fakepath的解决办法
  • 常见编码方式之间的区别
  • 经典算法研究系列:八、再谈启发式搜索算法
  • IEEE会议排名(转载)
  • Libsvm使用笔记【matlab】
  • Wireshark 提示和技巧 | TCP Reassembly
  • 体验ChitGPT AI大模型生成生成拉格朗日运动轨迹和具体实践案例
  • 堆栈溢出及其原因
  • python编写小游戏的代码,python游戏编程代码大全
  • 异步任务(AsyncTask)
  • 电脑死机是什么原因及解决方法
  • 我是巢皮...
  • Paypal开发者中心获取“ClientId”和“ClientSecret”参数
  • objectARX自用总结