首个在ImageNet上精度超过80%的二值神经网络BNext问世,-1与+1的五年辛路历程

fd2d35c021956c2a646beb585f365589.png

源 | 机器之心

两年前,当 MeliusNet 问世时,机器之心曾发表过一篇技术文章《第一次胜过 MobileNet 的二值神经网络,-1 与 + 1 的三年艰苦跋涉》,回顾了 BNN 的发展历程。

彼时,依靠早期 BNN 工作 XNOR-Net 起家的 XNOR.AI 被苹果公司收购,大家曾畅想过这种低功耗、高效能的二值神经网络技术会不会即将开启广阔的应用前景。

然而,过去的两年时间,我们很难从对技术严格保密的苹果公司获得关于 BNN 技术应用的更多信息,而不论是学界和业界也未出现其他特别亮眼的应用案例。

另一方面,随着终端设备数量的暴涨,边缘 AI 应用和市场正在迅速增长: 预计到 2030 年将产生 500 到 1250 亿台边缘设备,边缘计算市场将暴涨到 600 亿美元规模。这其中有几个目前热门的应用领域:AIoT、元宇宙和机器人终端设备。

相关业界正在加速发力技术落地,与此同时 AI 能力已经嵌入到以上领域的诸多核心技术环节中,如 AI 技术在三维重建、视频压缩以及机器人实时感知场景中的广泛应用。

在这样的背景下,业界对基于边缘的高能效、低功耗 AI 技术、软件工具以及硬件加速的需求变的日益迫切。

目前,制约 BNN 应用的瓶颈主要有两方面:首先,无法有效缩小和传统 32-bit 深度学习模型的精度差距;第二则是缺乏在不同硬件上的高性能算法实现。

机器学习论文上的加速比通常无法体现在你正在使用的 GPU 或 CPU 上。

第二个原因的产生可能正是来自于第一个原因,BNN 无法达到令人满意的精度,因此无法吸引来自系统和硬件加速、优化领域的从业者的广泛关注。而机器学习算法社区通常无法自己开发高性能的硬件代码。

因此,想要同时获得高精度和强加速效果,BNN 应用或加速器无疑需要来自这两个不同领域的开发者进行协作。

BNN 为什么对于计算和内存高效

举个例子,Meta 推荐系统模型 DLRM 使用 32-bit 浮点数来储存权重和激活参数,它的模型大小约为 2.2GB。

而一个少量精度下降 (<4%) 的二值版本模型的大小仅为 67.5MB,由此可见二值神经网络可以节省 32 倍的模型大小。

这对于储存受限的边缘设备来说具备了非常强的优势。

此外,BNN 也非常适合应用在分布式 AI 场景中,例如联邦学习常常对模型权重进行传输和聚合操作,因此模型大小和带宽受限往往成为整个系统的瓶颈。

常用的手段是通过增加模型本地优化迭代次数来换取权重传输频率的降低,用这种折中的方法来提升整体效率,如著名的谷歌 FedAvg 算法。但增大本地计算量的策略对端侧用户并不友好,这里,如果采用 BNN 就可以很轻易的降低几十倍的数据传输量。

BNN 的第二个显著的优势是计算方式极度高效。它只用 1bit 也就是两种 state 来表示变量。

这意味着所有运算只靠位运算就能完成,借助与门、异或门等运算,可以替代传统乘加运算。

位运算是电路中的基础单元,熟悉电路设计的同学应该明白,有效减小乘加计算单元的面积以及减少片外访存是降低功耗的最有效手段,而 BNN 从内存和计算两个方面都具备得天独厚的优势,WRPN[1]展示了在定制化 FPGA 和 ASIC 上,BNN 对比全精度可获得 1000 倍的功耗节省。

更近期的工作 BoolNet [2]展示了一种 BNN 结构设计可以几乎不使用浮点运算并保持纯 binary 的信息流,它在 ASIC 仿真中获得极佳的功耗、精度权衡。

第一个精度上 80% 的 BNN 是什么样子的?

来自德国 Hasso Plattner 计算机系统工程研究院的 Nianhui Guo 和 Haojin Yang 等研究者提出了 BNext 模型,成为第一个在 ImageNet 数据集上 top1 分类准确率突破 80% 的 BNN:

b5acecea07ebc8620a277e6173c66387.png
▲图 1 基于 ImageNet 的 SOTA BNN 性能对比
2d2ab0dc7a96f7df8aa435fdee7f75bd.jpeg

论文地址:
https://arxiv.org/pdf/2211.12933.pdf

作者首先基于 Loss Landscape 可视化的形式深入对比了当前主流 BNN 模型同 32-bit 模型在优化友好度方面的巨大差异 (图 2),提出 BNN 的粗糙 Loss Landscape 是阻碍当前研究社区进一步探索 BNN 性能边界的的主要原因之一。

基于这一假设,作者尝试利用新颖的结构设计对 BNN 模型优化友好度进行提升,通过构造具备更平滑 Loss Landscape 的二值神经网络架构以降低对高精度 BNN 模型的优化难度。

具体而言,作者强调模型二值化大幅度限制了可用于前向传播的特征模式,促使二值卷积仅能在有限的特征空间进行信息提取与处理,而这种受限前馈传播模式带来的优化困难可以通过两个层面的结构设计得到有效缓解:

(1) 构造灵活的邻接卷积特征校准模块以提高模型对二值表征的适应性;

(2) 探索高效的旁路结构以缓解前馈传播中由于特征二值化带来的信息瓶颈问题。

8da77d453d3ad52d1b7092d5ea0db3a3.png
▲图 2 针对流行 BNN 架构的 Loss Landscape 可视化对比(2D 等高线视角)

基于上述分析,作者提出了 BNext,首个在 ImageNe 图像分类任务达到 > 80% 准确率的二值神经网络架构,具体的网络架构设计如图 4 所示。

作者首先设计了基于 Info-Recoupling (Info-RCP) 模块的基础二值处理单元。

针对邻接卷积间的信息瓶颈问题,通过引入额外的 Batch Normalization 层与 PReLU 层完成对二值卷积输出分布的初步校准设计。

接着作者构造了基于逆向残差结构与 Squeeze-And-Expand 分支结构的二次动态分布校准设计。

如图 3 所示,相比传统的 Real2Binary 校准结构,额外的逆向残差结构充分考虑了二值单元输入与输出间的特征差距,避免了完全基于输入信息的次优分布校准。

这种双阶段的动态分布校准可以有效降低后续邻接二值卷积层的特征提取难度。

cbc191371d94eafe3261723207446088.png
▲图 3 卷积模块设计对比图

其次,作者提出结合 Element-wise Attention (ELM-Attention) 的增强二值 Basic Block 模块。

作者通过堆叠多个 Info-RCP 模块完成 Basic Block 的基础搭建,并对每个 Info-RCP 模块引入额外的 Batch Normalization 和连续的残差连接以进一步缓解不同 Info-RCP 模块间的信息瓶颈问题。

基于旁路结构对二值模型优化影响的分析, 作者提出使用 Element-wise 矩阵乘法分支对每个 Basic Block 的首个 3x3 Info-RCP 模块输出进行分布校准。

额外的空域注意力加权机制可以帮助 Basic Block 以更灵活的机制进行前向信息融合与分发,改善模型 Loss Landscape 平滑度。

如图 2.e 和图 2.f 所示,所提出的模块设计可以显著改善模型 Loss Landscape 平滑度。

21c0785a641debc89e9b940887433203.png
▲图 4 BNext 架构设计。"Processor 代表 Info-RCP 模块,"BN "代表 Batch Normalization 层,"C "表示模型基本宽度,"N "和"M " 表示模型不同阶段的深度比例参数。
8625b7aa1457d23a695fb31cd94bf196.png
▲Table 1 BNext 系列。“Q”表示输入层、SEbranch以及输出层量化设置。

作者将以上结构设计同流行的MoboleNetv1基准模型结合,并通过改变模型深度与宽度的比例系数构建了四种不同复杂度的 BNext 模型系列 (Table 1):BNex-Tiny,BNext-Small,BNext-Middle,BNext-Large。

由于相对粗糙的 Loss Landscape,当前二值模型优化普遍依赖于 knowledge distillation 等方法提供的更精细监督信息,以此摆脱广泛存在的次优收敛。

BNext作者首次考虑了优化过程中teache模型与二值student模型预测分布巨大差距可能带来的影响,指出单纯基于模型精度进行的 teacher 选择会带来反直觉的 student 过拟合结果。

为解决这一问题,作者提出了 knowledge-complexity (KC) 作为新的 teacher-selection 度量标准,同时考虑 teacher 模型的输出软标签有效性与 teacher 模型参数复杂度之间的关联性。

5126d4f163992822e3fd3f7a285c315c.png

如图 5 所示,基于 knowledge complexity,作者对流行全精度模型系列如 ResNet、EfficientNet、ConvNext 进行了复杂度度量与排序,结合 BNext-T 作为 student 模型初步验证了该度量标准的有效性,并基于排序结果用于后续实验中的 knowledge distillation 模型选择。

e9fa74bed3590a0b46c58da4281f45b6.png
▲图 5 反直觉的过拟合效应和不同教师选择下的知识复杂性影响

在此基础上,论文作者进一步考虑了强 teacher 优化过程中由于早期预测分布差距造成的优化问题,提出 Diversified Consecutive KD。

如下所示,作者通过强弱 teachers 组合的知识集成方法对优化过程中的目标函数进行调制。

在此基础上,进一步引入 knowledge-boosting 策略,利用多个预定义候选 teachers 在训练过程中对弱 teacher 进行均匀切换,将组合知识复杂度按照从弱到强的顺序进行课程式引导,降低预测分布差异性带来的优化干扰。

7305542e456f6d26f105b5934935afcf.png

在优化技巧方面,BNext 作者充分考虑了现代高精度模型优化中数据增强可能带来的增益,并提供了首个针对现有流行数据增强策略在二值模型优化中可能带来影响的分析结果,实验结果表明,现有数据增强方法并不完全适用于二值模型优化,这为后续研究中特定于二值模型优化的数据增强策略设计提供了思路。

基于所提出架构设计与优化方法,作者在大规模图像分类任务 ImageNet-1k 进行方法验证。实验结果如图 6 所示。

8aa4d2640a9769b6faf3f2f8a48be434.png
▲图 6 基于 ImageNet-1k 的 SOTA BNN 方法比较

相比于现有方法,BNext-L 在 ImageNet-1k 上首次将二值模型的性能边界推动至 80.57%,对大多数现有方法实现了 10%+ 的精度超越。

相比于来自 Google 的 PokeBNN, BNext-M 在相近参数量前提下要高出 0.7%,作者同时强调,PokeBNN 的优化依赖于更高的计算资源,如高达 8192 的 Bacth Size 以及 720 个 Epoch 的 TPU 计算优化,而 BNext-L 仅仅以常规 Batch Size 512 迭代了 512 个 Epoch,这反映了 BNext 结构设计与优化方法的有效性。

在基于相同基准模型的比较中,BNext-T 与 BNext-18 都有着大幅度的精度提升。

在同全精度模型如 RegNetY-4G (80.0%)等的对比中,BNext-L 在展现相匹配的视觉表征学习能力同时,仅仅使用了有限的参数空间与计算复杂度,这为在边缘端部署基于二值模型特征提取器的下游视觉任务模型提供了丰富想象空间。

What next?

BNext 作者在论文中提到的,他们和合作者们正积极在 GPU 硬件上实现并验证这个高精度 BNN 架构的运行效率,未来计划扩展到其他更广泛的硬件平台上。

然而在编者看来,让社区对 BNN 重拾信心,被更多系统和硬件领域的极客关注到,也许这个工作更重要的意义在于重塑了 BNN 应用潜力的想象空间。

从长远来看,随着越来越多的应用从以云为中心的计算范式向去中心化的边缘计算迁移,未来海量的边缘设备需要更加高效的 AI 技术、软件框架和硬件计算平台。

而目前最主流的 AI 模型和计算架构都不是为边缘场景设计、优化的。因此,在找到边缘 AI 的答案之前,相信 BNN 始终都会是一个充满技术挑战又蕴涵巨大潜力的重要选项。

8fa7cc60830ea239d9494f9677748ac1.jpeg后台回复关键词【入群

加入卖萌屋NLP、CV、搜广推与求职讨论群

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/476597.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中countif函数_countif与countifs:单条件与多条件计数适用场景

countif&#xff08;&#xff09;的语法图丑~~图丑~~见谅~~Countif函数&#xff1a;对指定区域中符合指定条件的单元格计数。该函数的语法规则如下:countif(range&#xff0c;criteria)参数:range 要计算其中非空单元格数目的区域参数:criteria 以数字、表达式或文本形式定义的…

极大似然模型1

first_step.m%clear; syms rou fai2 k1 k2 k3 n rorn ii clc; ninput(观测时刻数 n); disp( dealing ); disp(Just wait for a few minutes............); k1sym((1-rou*rou)*(1-fai2*fai2)*Xmn(rorn,1)*Xmn(rorn,1)); k2sym((1-fai2^2)*(Xmn…

LeetCode 1177. 构建回文串检测(前缀和)

1. 题目 给你一个字符串 s&#xff0c;请你对 s 的子串进行检测。 每次检测&#xff0c;待检子串都可以表示为 queries[i] [left, right, k]。我们可以 重新排列 子串 s[left], ..., s[right]&#xff0c;并从中选择 最多 k 项替换成任何小写英文字母。 如果在上述检测过程…

张俊林:ChatGPT会成为下一代搜索引擎吗

文|张俊林知乎本文将从以下几个方面展开&#xff1a;引言ChatGPT的技术原理ChatGPT能否取代Google、百度等传统搜索引擎引言作为智能对话系统&#xff0c;ChatGPT最近两天爆火&#xff0c;都火出技术圈了&#xff0c;网上到处都在转ChatGPT相关的内容和测试例子&#xff0c;效果…

k8s dashboard_k8s集群部署Dashboard

部署Dashboard&#xff08;Web UI&#xff09;* dashboard-deployment.yaml // 部署Pod&#xff0c;提供Web服务 * dashboard-rbac.yaml // 授权访问apiserver获取信息 * dashboard-service.yaml // 发布服务&#xff0c;提供对外访问 ​…

.Net笔试题 有答案

在对SQL Server 数据库操作时应选用&#xff08;a&#xff09;。 a)SQL Server .NET Framework 数据提供程序&#xff1b; b)OLE DB .NET Framework 数据提供程序&#xff1b; c)ODBC .NET Framework 数据提供程序&#xff1b; d)Oracle .NET Framework数据提供程序&#x…

程序员面试金典 - 面试题 17.13. 恢复空格(DP+Trie树)

文章目录1. 题目2. 解题2.1 动态规划2.2 Trie树1. 题目 哦&#xff0c;不&#xff01;你不小心把一个长篇文章中的空格、标点都删掉了&#xff0c;并且大写也弄成了小写。 像句子"I reset the computer. It still didn’t boot!"已经变成了"iresetthecomputeri…

2022的结尾,对话系统起飞了

文 | 郑楚杰知乎编者记&#xff1a;近日来&#xff0c;ChatGPT的连续刷屏让人们重新看到了AI的希望&#xff0c;编者通过对ChatGPT的试用&#xff0c;发现其对话能力早已不同于两年前的对话系统了&#xff0c;可以说&#xff0c;有了质的飞跃&#xff0c;向着用户体验奇点迈进了…

python清除列表内容_Python 列表的清空方式

情况列表的操作&#xff1a; del list[:] list[] list[:][] def func(L): L.append(1) print L #L[:][] #del L[:] L [] print L L[] func(L) print L 输出结果&#xff1a; [1] [] [1] 分析&#xff1a;L是可变数据类型&#xff0c;L作为参数&#xff0c;函数内对L的改变&…

ASP.NET小收集:Word的编码是Unicode

Word的编码是Unicode&#xff0c;从Word连接的超链接会附带Unicode编码进行打开&#xff0c;所以&#xff0c;如果没有对链接页面设定编码&#xff0c;将出现乱码&#xff0c;解决方法之一&#xff1a;设置编码为UTF-8<meta http-equiv"Content-Type" content&quo…

程序员面试金典 - 面试题 05.08. 绘制直线(位运算)

1. 题目 绘制直线。有个单色屏幕存储在一个一维数组中&#xff0c;使得32个连续像素可以存放在一个 int 里。 屏幕宽度为w&#xff0c;且w可被32整除&#xff08;即一个 int 不会分布在两行上&#xff09;&#xff0c;屏幕高度可由数组长度及屏幕宽度推算得出。 请实现一个函数…

FarPoint Spread For .Net 4.0

FarPoint Spread For .Net 4.0 ftp://ftp.fpoint.com/Trials/SpreadWinForm/spwin.zip http://www.fpoint.com:8080/files/Trials/SpreadWinForm/spwinframework35.zip 转载于:https://www.cnblogs.com/Tonyyang/archive/2008/06/23/1228133.html

入职比你晚,薪资比你高,礼貌吗

文&#xff5c; 穆胜咨询研究院源&#xff5c; 穆胜咨询秋招已过&#xff0c;企业迎来了许多新的面孔&#xff0c;对于很多老员工来说却是五味杂陈。新人空降拿到高工资&#xff0c;而自己的资历却换不来期待幅度的涨薪。“新老员工薪资倒挂”的问题&#xff0c;本就是HR的一道…

乐学python_【IT专家】铁乐学python

铁乐学 python 2018/04/18 13 铁乐学 python_day23_ 面向对象进阶 1_ 反射 以下内容大部分摘自博客 cnblogs/Eva-J/ isinstance() 和 issubclass() 两者的返回值都是布尔值 isinstance() 能够检测到继承关系 type() 只能单纯的判 断类 isinstance() 判断一个对象和一个类有没有…

程序员面试金典 - 面试题 16.14. 最佳直线(哈希map+set)

1. 题目 给定一个二维平面及平面上的 N 个点列表Points&#xff0c;其中第i个点的坐标为Points[i][Xi,Yi]。 请找出一条直线&#xff0c;其通过的点的数目最多。 设穿过最多点的直线所穿过的全部点编号从小到大排序的列表为S&#xff0c;你仅需返回[S[0],S[1]]作为答案 若有多…

Visual C# 2008+SQL Server 2005 数据库与网络开发--13.1.1 菜单创建

创建菜单的方法大体可以包括两种&#xff0c;比较简单的方法是通过Visual Studio 2008提供的菜单设计工具来创建&#xff0c;这种方式创建的菜单比较固定。另外一种方式是通过后台程序创建&#xff0c;这种方式由于通过代码在窗体菜单加载的时候完成&#xff0c;所以编写过程相…

c语言数据类型_C语言基础数据类型

点击上方“C语言中文社区”&#xff0c;选择“设为星标★”技术干货第一时间送达&#xff01;基本类型基本类型就是我们在使用C语言时最基础的数据类型&#xff0c;包括整形(短整型&#xff0c;基本整型&#xff0c;长整型)、字符型、浮点型(单、双精度)以及枚举类型。构造类型…

为辨别offer含金量,我做了个时薪计算器

文 | 曹宾玲源 | 表外表里提到计算机专业&#xff0c;大部分人第一时间会联想到“万金油专业”“大厂”和“高薪”。但在2023届计算机毕业生眼里&#xff0c;这已经是过去式了。以前被嫌弃的华子&#xff0c;今年校招群里挤满了人&#xff0c;即使一直泡在“人才池”里&#xf…

程序员面试金典 - 面试题 16.22. 兰顿蚂蚁(deque模拟)

1. 题目 一只蚂蚁坐在由白色和黑色方格构成的无限网格上。 开始时&#xff0c;网格全白&#xff0c;蚂蚁面向右侧。 每行走一步&#xff0c;蚂蚁执行以下操作。 (1) 如果在白色方格上&#xff0c;则翻转方格的颜色&#xff0c;向右(顺时针)转 90 度&#xff0c;并向前移动一个…

在程序中设置infopath中的整型等域值时出错解决方法

最近一直和infopath表单打交道&#xff0c;碰到的问题也比较多&#xff0c;刚刚就碰到一个在程序中修改infopath表单中域的内容时出错的问题&#xff0c;写出来与大家共享一下&#xff0c;我想这个问题&#xff0c;可能玩infopath的话&#xff0c;迟早会碰上的吧。具体表现就是…