低成本的二值神经网络介绍以及它能代替全精度网络吗?

简介: 低成本的二值神经网络介绍以及它能代替全精度网络吗?

每年都会开发出更深的模型来执行各种任务,例如对象检测,图像分割等,这些任务始终能够击败最新模型。但是,人们越来越关注使模型更轻便,更高效,以便它们可以在边缘设备和移动设备上运行。这对于弥合机器学习的研究和生产价值之间的差距非常重要。

减少深度神经网络的内存和计算成本的一种方法是二值神经网络的概念。二值神经网络的概念非常简单,其中权重和激活张量的每个值都使用+1和-1表示,以便它们可以以1字节而不是全精度存储(在1-中表示为0 位整数)。使用以下所示的符号函数将浮点值转换为二进制值-

640.png

现在,使用阈值函数作为上述函数的一个主要问题是该函数的梯度趋于为零。一种解决方案是使用直通估算器。直通估算器是一种在梯度传递过程中完全照原样通过渐变而不会发生任何变化的估计器。这简化了二值神经网络中阈值函数的反向传播机制,并显示出很好的效果。

640.png

在梯度累积阶段,将使用二进制权重和激活来累积每一层的梯度。但是权重更新是对实值原始权重进行的。为什么会这样呢?让我举例说明。

  • 我们在神经网络中有一个值为0.05的节点(原始参数)。
  • 通过阈值函数传递此值后,我们获得的值为1(二进制参数)。
  • 让我们假设在二进制参数处累积的梯度为3。我们使用直通估计器的概念将其照原样传递给原始参数。
  • 现在,一旦累积了渐变,我们就可以更新值。
  • 如果我们使用二进制值获得新的参数值,则参数的新值将为1–0.1 * 3(其中0.1是学习率),即0.7。
  • 如果我们使用原始参数值来获取新参数,则新值将为0.05–0.1 * 3,即-0.25。
  • 这是可以注意到差异的地方。当我们执行下一个迭代时,我们将再次通过二进制阈值函数传递新的参数值,它们将给出不同的结果。如果我们继续使用参数的二进制值,则可能永远无法更改该位,因为始终会根据1或-1计算损耗。

当更新参数值时,这些值将被裁剪为介于-1和1之间。主要原因是这些值只会增加/减少,否则对网络没有任何影响。需要注意的一件事是,最后一个激活层中的值未进行二值化,而是按原样用于分类/回归。这些是二值神经网络的基本概念。

可以添加到权重和激活层二值化的另一个改进是使用缩放因子来表示权重和激活。在这里,比例因子只是权重向量中所有值的平均值的绝对值。如果我们有一个2 * 2矩阵,其值[[0.2,0.2],[-0.6,-0.6]],则比例因子α将为0.2,二进制矩阵表示为[[1,1],[-1,- 1]]。

640.png

因此,一旦权重和激活连同它们各自的缩放因子一起以二进制形式表示,就可以使用以下公式表示。在此,I和W分别表示激活层和权重层,而激活和权重的缩放因子分别使用κ和α表示。

640.png

现在,作为卷积运算基础的乘积(MAC)函数是非常昂贵的运算。现在,可以将其替换为XNOR + 弹出计数操作。 几乎每个CPU都固有地执行按位运算,并且这些运算的执行速度明显更快且成本更低。弹出计数操作只不过是检查设置的位。下面的示例显示了MAC操作可以由XNOR + 弹出计数操作代替。

640.png

但是二值神经网络的主要缺点在于,它们无法实现与完全精度的深层网络一样高的精度。但这一直在缓慢地变化,并且每年(与每月发表论文的数量越来越相似),随着差距的缩小,已经有了很多进步。由于人们越来越关注在具有有限计算资源的设备上实施机器学习模型,因此在未来几年中,将会在该领域进行更多的研究。

目录
相关文章
|
5月前
|
机器学习/深度学习 计算机视觉 异构计算
【YOLOv8改进 - Backbone主干】FasterNet:基于PConv(部分卷积)的神经网络,提升精度与速度,降低参数量。
【YOLOv8改进 - Backbone主干】FasterNet:基于PConv(部分卷积)的神经网络,提升精度与速度,降低参数量。
|
2月前
|
机器学习/深度学习 存储 自然语言处理
深度学习入门:循环神经网络------RNN概述,词嵌入层,循环网络层及案例实践!(万字详解!)
深度学习入门:循环神经网络------RNN概述,词嵌入层,循环网络层及案例实践!(万字详解!)
|
4月前
|
机器学习/深度学习 人工智能 编解码
【神经网络】基于对抗神经网络的图像生成是如何实现的?
对抗神经网络,尤其是生成对抗网络(GAN),在图像生成领域扮演着重要角色。它们通过一个有趣的概念——对抗训练——来实现图像的生成。以下将深入探讨GAN是如何实现基于对抗神经网络的图像生成的
43 3
|
4月前
|
机器学习/深度学习 算法 文件存储
【博士每天一篇文献-算法】 PNN网络启发的神经网络结构搜索算法Progressive neural architecture search
本文提出了一种名为渐进式神经架构搜索(Progressive Neural Architecture Search, PNAS)的方法,它使用顺序模型优化策略和替代模型来逐步搜索并优化卷积神经网络结构,从而提高了搜索效率并减少了训练成本。
62 9
|
5月前
|
机器学习/深度学习 自然语言处理
像生物网络一样生长,具备结构可塑性的自组织神经网络来了
【7月更文挑战第24天】Sebastian Risi团队发布的arXiv论文探讨了一种模仿生物神经网络生长与适应特性的新型神经网络。LNDP利用结构可塑性和经验依赖学习,能根据活动与奖励动态调整连接,展现自我组织能力。通过基于图变换器的机制,LNDP支持突触动态增删,预先通过可学习随机过程驱动网络发育。实验在Cartpole等任务中验证了LNDP的有效性,尤其在需快速适应的场景下。然而,LNDP在复杂环境下的可扩展性及训练优化仍面临挑战,且其在大规模网络和图像分类等领域的应用尚待探索
102 20
|
4月前
|
机器学习/深度学习 网络安全 TensorFlow
探索操作系统的心脏:内核与用户空间的奥秘云计算与网络安全:技术挑战与未来趋势深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【8月更文挑战第29天】在数字世界的每一次点击与滑动背后,都隐藏着一个不为人知的故事。这个故事关于操作系统——计算机的灵魂,它如何协调硬件与软件,管理资源,并确保一切运行得井井有条。本文将带你走进操作系统的核心,揭示内核与用户空间的秘密,展现它们如何共同编织出我们日常数字生活的底层结构。通过深入浅出的讲解和代码示例,我们将一同解锁操作系统的神秘面纱,理解其对现代计算的重要性。 【8月更文挑战第29天】本文将深入探讨卷积神经网络(CNN)的基本原理和结构,以及它们如何被广泛应用于图像识别任务中。我们将通过代码示例来展示如何使用Python和TensorFlow库构建一个简单的CNN模型,并训练
|
5月前
|
机器学习/深度学习 编解码 计算机视觉
【YOLOv8改进- Backbone主干】BoTNet:基于Transformer,结合自注意力机制和卷积神经网络的骨干网络
【YOLOv8改进- Backbone主干】BoTNet:基于Transformer,结合自注意力机制和卷积神经网络的骨干网络
|
5月前
|
机器学习/深度学习 计算机视觉
【YOLOv8改进- Backbone主干】YOLOv8更换主干网络之ConvNexts,纯卷积神经网络,更快更准,,降低参数量!
YOLOv8专栏探讨了针对目标检测的ConvNet创新,提出ConvNeXt模型,它挑战Transformer在视觉任务中的主导地位。ConvNeXt通过增大卷积核、使用GeLU激活、切换到LayerNorm和改进下采样层,提升了纯ConvNet性能,达到与Transformer相当的准确率和效率。论文和代码已公开。
|
5月前
|
机器学习/深度学习 PyTorch 算法框架/工具
图神经网络是一类用于处理图结构数据的神经网络。与传统的深度学习模型(如卷积神经网络CNN和循环神经网络RNN)不同,
图神经网络是一类用于处理图结构数据的神经网络。与传统的深度学习模型(如卷积神经网络CNN和循环神经网络RNN)不同,
|
5月前
|
机器学习/深度学习 计算机视觉 网络架构
【YOLOv8改进- Backbone主干】YOLOv8 更换主干网络之 PP-LCNet,轻量级CPU卷积神经网络,降低参数量
YOLO目标检测专栏介绍了PP-LCNet,一种基于MKLDNN加速的轻量级CPU网络,提升了模型在多任务中的性能。PP-LCNet利用H-Swish、大核卷积、SE模块和全局平均池化后的全连接层,实现低延迟下的高准确性。代码和预训练模型可在PaddlePaddle的PaddleClas找到。文章提供了网络结构、核心代码及性能提升的详细信息。更多实战案例和YOLO改进见相关链接。