二值化神经网络——BNN

【深度学习——BNN】:二值神经网络BNN——学习与总结 最近一直在做深度学习的FPGA布署,偶然研读到Bengio大神的著作《Binarized Neural Networks: Training Neural Networks with Weights and Activations Constrained to +1 or −1》: 链接:https://arxiv.org/abs/1602.02830 关于BNN,已经有不少前辈做了mark,... 阅读详情

二值化神经网络——BNN


前言: 最近在研究FBN的时候看到了BNN这个概念,论文中有很多的概念都和BNN相关,这里记录一下对于BNN的理解

什么BNN?

BNN全称Binarized Neural Networks中文译作二值化神经网络。其核心的思想就算把权重矩阵中权重值和各个激活函数的函数值同时二值化得到的神经网络.我们通过有两个二值化函数可以用来完成这个过程。
第一个是Sign函数

xb=Sign⁡(x)={+1 if x≥0−1 otherwise x^{b}=\operatorname{Sign}(x)=\left\{\begin{array}{ll} +1 & \text { if } x \geq 0 \\ -1 & \text { otherwise } \end{array}\right.xb=Sign(x)={+1−1​ if x≥0 otherwise ​
其中x是真实变量值,Sign(x)是符号函数

第二个是随机式的:
xb={+1 with probability p=σ(x)−1 with probability 1−pσ(x)=clip⁡(x+12,0,1)=max⁡(0,min⁡(1,x+12))\begin{aligned} &x^{b}=\left\{\begin{array}{ll} +1 & \text { with probability } p=\sigma(x) \\ -1 & \text { with probability } 1-p \end{array}\right.\\ &\sigma(x)=\operatorname{clip}\left(\frac{x+1}{2}, 0,1\right)=\max \left(0, \min \left(1, \frac{x+1}{2}\right)\right) \end{aligned}​xb={+1−1​ with probability p=σ(x) with probability 1−p​σ(x)=clip(2x+1​,0,1)=max(0,min(1,2x+1​))​

随机式的二值化符号函数看起来要稍微复杂一点,也真是因为它在思想过程中比较困难,在实际运用的过程中也是第一种用的要多一些

BNN有什么优点?

通过将权重矩阵二值化,一个权重只占用一个比特,相当于单精度浮点型权重矩阵,网络模型内存消耗理论上能减少32倍。简单来说就是:模型速度更快,所需内存更小,这也是我们进行模型压缩的优化的主要目的

如何计算梯度?

虽然BNN在训练的过程中使用的是二值化的权重和激活值,但是梯度是不可用二值化存储的,原因在于:

  • 随机梯度下降更新参数的时候,梯度的量级很小;
  • 梯度具有累加效应,梯度中是包含噪声的,而噪声一般都是正态分布的,多次累加可以将噪声平均消耗点

而且在计算参数的梯度时,二值化相当于给权重和激活添加了噪声,这类似于正则化的操作让模型的泛化性能更好,我们训练BNN的方法可以看作是Dropout的一种变体,只是计算参数梯度时的Dropout是把激活值设置为0,而二值化网络是对权重和参数进行二值化。

综上所述,我们不能对梯度进行二值化。

在BNN中使用了离散化的梯度传播,在反向传播的过程中要用到Sign函数的导数,然而Sign函数的导数几乎处处为0,这点是不客气的。我们需要对Sign函数就行一定的变形,这就得到了Htanh函数
Htanh⁡(x)=Clip⁡(x,−1,1)=max⁡(−1,min⁡(1,x))\operatorname{Htanh}(x)=\operatorname{Clip}(x,-1,1)=\max (-1, \min (1, x))Htanh(x)=Clip(x,−1,1)=max(−1,min(1,x))
在这里插入图片描述
二值化操作函数为:
q=sign⁡(r)q=\operatorname{sign}(r)q=sign(r)

假设损失函数为C,C对q的导数已知,那么C对r的导数为:
gr=gq1∣r∣≤1g_{r}=g_{q} 1_{|r| \leq 1}gr​=gq​1∣r∣≤1​
这就算Htanh函数
在具体的算法应用时,对于隐藏层单元:

我们利用符号函数的非线性获得激活值,即直接使用Sign(a)获得二值化后的激活值。
对于权重
,Htanh和Sign两种函数都有用到:
在对参数进行更新时,对权重使用Htanh函数进行裁减,使得权重永远在[-1, 1]之间;

量化权重时,使用Sign(w)直接得到二值化的权重值;

二值神经网络(BNN) 二值神经网络不是一种新的网络模型,实际上它是一种极致的量化方法——将神经网络的权重和激活量化为1bit。随着神经网络的发展,神经网络的性能越来越高,但是同时,模型的大小也越来越大。对于资源有限,功耗又有要求的边沿设备,多数神经网络模型不适合进行部署,这限制了深度学习的发展。因此出现了许多模型压缩的方法,比如知识蒸馏、剪枝、量化等等。二值神经网络(BNN)的前身可以追溯到BWN,他只是将神经网络的权值进行二值量化,激活还是浮点的形式,实现了不错的性能。 阅读详情

相关推荐

二值二值神经网络(Binary Neural Networks)

二值化权重和激活传播:重复步骤2和步骤4,将隐藏层1的二值化激活值与隐藏层2之间的权重进行点乘运算,得到隐藏层2的输入。假设我们的隐藏层2与隐藏层1之间的权重被二值化为{-1, +1},表示为W2,隐藏层2的输入为H2,大小为128。假设我们的输出层与隐藏层2之间的权重被二值化为{-1, +1},表示为W3,输出层的输入为O,大小为10。二值化激活函数:将隐藏层1的加权和输入到二值化的激活函数中,如硬件阈值函数。二值化激活函数:将隐藏层2的加权和输入到二值化的激活函数中,得到隐藏层2的二值化激活值。

dn_us的博客 2874

基于随机效应贝叶斯神经网络(RE-BNN)的多区域出行模式选择分析

1.文章信息本次介绍的文章为《A Random Effect Bayesian Neural Network (RE-BNN) for travel mode choice analysis across multiple regions》,发表在Travel Behaviour and Society上。该工作在经济学的随机效用理论下,利用深度学习进行了跨区域的出行行为选择的预测,并且对于英国不...

zuiyishihefang的博客 1847

PYNQ-Z2初识(四)——BNN(二值化神经网络)

文章目录BNN神经网络二值化PYNQ上的BNN导入BNN压缩包通过python脚本实现解压缩案例1:MNIST数字识别基本加载载入图像格式转换通过PL端(Programmable Logic)硬件识别通过PS端(Processing System)软件识别进行自定义识别案例2:交通标志识别打开图片进行识别单个图像中的多个标志 BNN神经网络 二值神经网络是在浮点神经网络的基础上,对权值和激活值(特征值)做二值化处理,即取值是+1或-1。BNN网络结构与CNN相同,主要在梯度下降、权值更新、卷积运算上做了一些

战斗果冻的训练中心 4807

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

目录 1.简介 2.优点 3.基本原理 3.1 权重和激活值二值化[3] 3.2 乘法优化 3.3 权重和激活值更新 4.结论[3] 参考资料 1.简介 ​ 二值化神经网络,在...

weixin_30929011的博客 1756

ESP32-CAM实战:从零构建高精度QR二维码识别系统

本文详细介绍了如何使用ESP32-CAM构建高精度QR二维码识别系统,涵盖硬件配置、开发环境搭建、二维码识别库选择与优化、完整系统实现及实战问题排查。通过优化识别算法和电源管理,系统可实现快速、稳定的二维码识别,适用于物联网设备绑定等场景。

weixin_42524703的博客 433

XGBoost特征重要性为0的问题:深度解析与应对策略

在机器学习领域,XGBoost(Extreme Gradient Boosting)作为一款高效且强大的集成学习算法,已经被广泛应用于各类预测任务中。然而,在实际应用过程中,许多数据科学家和工程师们遇到了一个令人困惑的现象——某些特征的重要性值为0。这不仅影响了模型的解释性,还可能导致特征选择过程中的误判。本文将深入探讨这一问题,分析其背后的原因,并提供相应的解决方案。在深入探讨特征重要性为0的问题之前,我们首先需要了解XGBoost是如何计算特征重要性的。XGBoost提供了三种常见的特征重要性计算方法:

cda2024的博客 1705

二值化神经网络(BNN)综述

人工智能学习离不开实践的验证,推荐大家可以多在FlyAI-AI竞赛服务平台多参加训练和竞赛,以此来提升自己的能力。FlyAI是为AI开发者提供数据竞赛并支持GPU离线训练的一站式服务平台。每周免费提供项目开源算法样例,支持算法能力变现以及快速的迭代算法模型。 摘要: 二值化神经网络BNN由于可以实现极高的压缩比和加速效果,所以它是推动以深度神经网络为代表的人工智能模型在资源受限和功耗受限的移动端设备,嵌入式设备上落地应用的一门非常有潜力的技术。虽然目前的BNN仍然存在着 ... 二值化神经...

iFlyAI的博客 6383

【异常】claude : 无法将“claude”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径

如果claude方式1(临时):使用完整路径运行,比如:# Windows 批处理脚本示例 C:\你的脚本目录\claude . bat # PowerShell 脚本示例 C:\你的脚本目录\claude . ps1方式2(永久):将脚本所在文件夹添加到系统 PATH 环境变量(参考场景1的环境变量配置步骤),之后即可直接输入claude运行。错误核心原因:系统 PATH 环境变量中找不到claude对应的可执行文件/脚本。

奶爸的编程之路,也就一周冷个三天 3671

二值化_二值化神经网络(BNN)综述

作者:Ironboy来源:微信公众号:GiantPandaCV出处:https://mp.weixin.qq.com/s?__biz=MzA4MjY4NTk0NQ==&mid=2247490696&idx=1&sn=3b8132af1ddd918ff8fc69629214b59a二值化神经网络BNN由于可以实现极高的压缩比和加速效果,所以它是推动以深度神经网络为代表的人工智...

weixin_28040125的博客 3355

FFDNet-pytorch版本代码训练教程

该文章为FFDNet-pytorch版本代码训练教程,抓紧订阅学习!尽早入门发论文哦!

假技术Po主 1507

国自然基金申请书撰写新思路:如何合理利用AI提高本子竞争力?

最后给大家推荐的400多所高校教师都在用的AI平台——高级学术版专业应用平台,集成了国际主流学术应用,以及ChatGPT、Claude、Gemini、Grok等Al大模型的高级版本平台,还有,可以辅助大家高效完成科研和学术写作任务,当然撰写硕博论文,课题、职称论文、国社科、国自然基金本子也是手拿把掐。创新点、技术路线、前期基础,但是我们也可以把写好的初稿交给AI,让它扮演资深研究员,帮我们精炼表述、优化段落结构,并揪出可能被评审追问的逻辑漏洞。,我们需要的是让它帮我们理清楚思路,而不是让它替我们完成内容。

智能AI让学术科研更容易 665

论文二值化神经网络模型BNN计算训练预测及代码

Binarized Neural Networks: Training Neural Networks with Weights and Activations Constrained to +1 or − 1 1 前向和反向传播的数值计算 1.1权重和激活函数值二值化公式 就符号函数,跟零比,判断正负。 1.2二值化的数据梯度 对于输入r,经过上面的符号函数后,反向传播时候怎么求梯度gr。 ...

qq_35608277的博客 2711

控制科学与工程(自动化)保研经验【1】——预备篇

个人情况 学校:中末流211 专业:自动化(学科评估B-) 年份:2019 排名:4/128 绩点:4.16/5 竞赛:三个国二(包括数模国赛美赛)、两个省一(机器人、电子设计竞赛) 【本科期间竞赛做的比较多,是我的一大亮点,可以在筛简历这关适当弥补专业排名的不足】 科研:一个校级的大创项目(水) 夏令营报名:中科大科学岛、中科大本部、自动化所、沈自所、北航(仪器17系)、山大、浙江大学、南开、同...

Control Everything 1万+

二值化神经网络的发展现状:从BNN到Bi-Real Net的精度与效率权衡

二值化神经网络在七年时间里(2016-2023)将ImageNet精度从27.9%提升到70%+,缩小了与全精度网络的差距。每一次重要改进——缩放因子(XNor-Net)、残差适配(Bi-Real Net)、分布重塑(ReActNet)、自适应阈值(AdaBin)——都在解决精度损失的不同来源。但二值化的根本局限仍然存在:1-bit的表示空间无法承载复杂任务的语义需求。当前二值化网络的最佳位置是作为"精度略低但功耗极低"的边缘推理方案,而非全精度网络的通用替代。

lady_mumu的博客 4638

(11)(2.2.2) BLHeli32,AM32, and BLHeli_S ESCs(一)

Ardupilot官网关于《Peripheral Hardware》的翻译 —《(2.2.2) BLHeli32,AM32, and BLHeli_S ESCs》。

无人机开发(开源Ardupilot) 2232

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

BNN领域开山之作——不得错过的训练二值化神经网络的方法

BNN领域入门必读:《Binarized Neural Networks: Training Neural Networks with Weights and Activations Constrained to +1 or −1》

limingmin2020的博客 2691

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

二值神经网络(Binary Neural Network,BNN)

在我刚刚过去的研究生毕设中,我在ImageNet数据集上验证了图像特征二值化后仍然具有很强的表达能力,可以在检索中达到较好的效果。而Bengio大神的这篇文章,则不止于将特征二值化,而是要将权重和每层的激活值统统二值化。相比于非二值化的网络,将大量的数学运算变成了位操作。这样就节省了大量的空间而前向传播的时间,使神经网络的应用门槛变得更低。

雨石 6万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

推荐开源项目:BNN - Binary Neural Networks

推荐开源项目:BNN - Binary Neural Networks 项目简介 是一个基于Python实现的二值化神经网络库,由开发者Mat Palm创建并维护。该项目旨在为研究人员和工程师提供一种简单、高效的工具,用于探索和应用二值化神经网络(Binary Neural Networks)这种轻量级且计算效率高的深度学习模型。 二值化神经网络通过将权重和激活函数限制为+1或-1的二进制值,大大...

gitblog_00044的博客 653

BNN Pytorch代码阅读笔记

BNN Pytorch代码阅读笔记 这篇博客来写一下我对BNN(二值化神经网络)pytorch代码的理解,我是第一次阅读项目代码,所以想仔细的自己写一遍,把细节理解透彻,希望也能帮到大家! 论文链接:https://papers.nips.cc/paper/6573-binarized-neural-networks 代码链接: https://github.com/itayhubara/Bina...

Crayonshin的博客 5300

BNN 技术详解:当神经网络只剩下 +1 和 -1

近期的研究表明,它同样可以用来压缩更先进、更复杂的架构,如 Transformer 和新兴的 Mamba 模型。为了应对精度损失,研究者们也提出了更精细的策略,比如只对模型中非关键的部分进行二值化,而保留其核心计算单元为全精度,从而实现性能和效率的最佳平衡。虽然它伴随着不可避免的精度损失,但通过精巧的结构设计和训练策略,我们可以在效率和性能之间找到最佳的平衡点。这些缩放因子是全精度的,它们会在二值化计算之后,对结果进行重新缩放,从而在一定程度上补偿二值化过程中丢失的动态范围和信息。则是全精度的缩放因子。

2301_79168784的博客 1235

【论文笔记】二值化神经网络(Binarized Neural Network)

文章链接:Binarized Neural Networks: Training Deep Neural Networks with Weights and Activations Constrained to +1 or -1 是2016年2月份新出的一篇文章。文章的主要思想是通过二值化weights和activations,来提高NN的速度和减少其内存占用。

elaine_bao的专栏 1万+

深度神经网络中的BNN和DNN:基于存内计算的原理、实现与能量效率

基于二值化值和激活的MNIST分类的BNN实现,利用标准6T SRAM位单元进行内存计算。通过使用这种方法,将神经网络中通常需要的MAC操作减少为逐位操作,从而大大减小了模型的大小,节约了能量,同时保持了存储在内存中的重量不变随着人工智能和大数据时代的到来,深度神经网络(DNN)在计算机领域中得到了广泛应用。DNN具有较高的准确度和广泛的应用领域,如语音识别、图像识别等。然而,DNN的计算成本较高,需要大量的标记样本和计算时间。为了解决这一问题,随机梯度优化算法被提出,用于加快DNN的训练速度。

m0_58966968的博客 1556

深度学习算法优化系列十 | 二值神经网络(Binary Neural Network,BNN)

前言 昨天介绍的BinaryConnect提出将浮点权重量化到1bit,提出了完整的量化权重训练/测试流程,并且从带噪声权重的角度来解释了量化权重。但这种方法还有一个缺点,即并没有对激活函数进行量化,所以Bengio大神在2016年发表了这篇Binary Neural Network,论文原文和代码链接见附录。 BNN算法 二值化的方法 二值化方法主要有两种,确定式二值化和随机式二值化。二值化将f...

I good vegetable a! 1935

【Paper Reading】二值化网络——BNN

Binarized Neural Networks: Training Neural Networks withWeights and Activations Constrained to +1 or -1 论文链接:https://arxiv.org/abs/1602.02830 代码地址:https://github.com/MatthieuCourbariaux/BinaryNet 2016...

小铁匠的博客 1180

二值化网络(BNN)如何训练?这篇ICML 2021论文给你答案

二值化网络(Binary Neural Networks)是一种神经网络压缩方法,把原本需要32 bit 表示的神经网络参数值和激活值二值化到只需要用 1 bit 表示,即 -1/+1 表...

Paper weekly 2705
上一篇: Panoptic Feature Pyramid Networks【详细解析相关两篇论文】
下一篇: HWGQ-net学习记录
AndSonder
博客等级 码龄7年 364粉丝 154原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值