ANN vs BNN
莫华枫
毋庸置疑,
ann是对
bnn的模拟。(也有人不这么认为,打算闹独立。且不说版权问题,认为自己能够牛过上帝他老人家,也是不应该的)。这两天奥运,心血来潮,想让ann和bnn PK一下,看看咱们人类同上帝他老人家之间还差多少。
在bnn中,
神经细胞是基础,先pk这个。尽管神经细胞也叫神经元,但是为了方便裁判,还是得区分一下:bnn的叫神经细胞,ann的叫神经元。
神经细胞有个重要的特性,它带电。(放心,连个草履虫也电不死)。神经细胞膜拥有-70mV的电位差。不过,这只是神经细胞安静下来的状态。在特定的情况下,神经细胞会
很激动,膜电位会一下子达到+40mV。而且会传播开来,直到传遍整个细胞。在传播的过程中,每到一处,都会激起膜电位的逆转。在某些
特定的部位,细胞膜上的众多特殊开关会放出集聚多时的
化学物质,刺激其他的神经细胞。一个神经细胞会尽量收集来自其他神经细胞的刺激。当刺激积累到一定程度,超过了一个特定值(阈值)之后,便也会变得激动起来,也去刺激其他神经细胞。(听起来很像我们传小道消息:))。
回过来看看ann。在ann中,与神经细胞对应的,叫
神经元。
ann是抽象模型,神经元自然不会有细胞膜了。但是膜电位还是有的,只是用一个变量来表达了。一个神经元会通过一个数学公式从其他神经元那里收集数据,作
为自己的状态值。当然不是简单地一股脑加起来,而是要为每一个神经元的状态乘上一个“权重”值。这样累加起来之后的,便可以作为神经元自身的状态。每个神
经元都有一个阈值。当状态值超过阈值,则它是“激活的”,状态为1,否则为0。
这么看来,ann对于bnn的模拟还是相当贴近的:神经细胞有表明自身状态的膜电位,神经元有状态值;神经细胞膜电位会传播,神经元的状态可以加权;神经细胞有突触,神经元有权重;神经细胞的会集聚其他神经细胞的刺激,神经元会加权累加。
就此断定ann已经是bnn完整的模拟,还为时尚早。这仅仅是第一节。
bnn
在神经细胞的层面上还有许多有趣的特性。首先,神经细胞兴奋程度的表达。神经细胞尽管拥有0-1特性(兴奋-静息),但这并不表明它无法表达自身的兴奋程
度。这一点在神经系统运作方面非常重要。比如,假设有一组神经细胞代表狗这个概念,而另一组是代表猫。当看到一只狗的时候,狗神经细胞的兴奋程度应该比猫
神经细胞更强。(否则,怎么知道是狗呢?)但是猫神经细胞也不会不兴奋,因为狗和猫毕竟还是有几分相像的。尽管猫神经细胞兴奋程度比不上狗神经细胞,但肯
定会比牛神经细胞来的兴奋。猫毕竟比牛更像狗。
表达神经细胞兴奋程度的最直接的方法莫过于膜电位。就是说,20mV比
10mV更加兴奋。很多ann模型也是采用了直接使用神经元状态值表示神经元兴奋的程度。这样最直观,最简单。但实际上,神经细胞却采用了另一个方案——
时间编码。通俗地讲,就是用神经元发放的频率表示神经细胞的兴奋程度。而每次兴奋时的膜电位都是一样的,不管神经细胞有多兴奋。
相
比之下,似乎神经细胞不很高明。如果使用膜电位表示兴奋程度,可以比时间编码方式在信息处理速度上快很多。神经细胞采用这种“不理想”的方案,是有原因
的。要知道,神经系统可不是电路构成的,无法精确地控制电位。维持神经系统运作的是电化学反应,无法象电路那样精确地控制电压。另一方面,对于生物体而
言,细胞维持一个固定的膜电位要容易得多,也更加高效、节能、环保、绿色...。
这么看来,上帝他老人家也不怎么高明,为神
经细胞设计了不够理想的方案。似乎还是人类的设计更加高明些。但是千万别这么想,如果你不想遭雷劈的话。实际上,时间编码方案有着很多优势。如果神经细胞
用膜电位表达兴奋程度,那么一个神经细胞如何持续地跟踪了解其他神经细胞的状态变化呢?两个神经细胞之间是通过突触传递信号,而突触是通过神经递质刺激目
标。如果要持续了解其他神经细胞状态,这些细胞必须不停地发放神经递质,并且通过控制神经递质发放的数量表示神经细胞的状态。如此高强度的神经递质消耗是
生物体所负担不起的。
其实,这种情况对于ann而言同样是一个严重的问题。如果一个神经元试图持续了解其他神经元的兴奋程
度,必须没完没了地执行加权汇总。对于所有的神经元都是如此。一般情况下,计算资源无法支撑这种运算。因而,ann的很多模型实际上放弃了神经元之间的动
态互动,而是采用“快照”的方式,统一周期性地计算所有神经元的状态。这在小规模的ann中尚可应用,但在大型系统中,则无法获得很好的效果。
反
过来,如果神经细胞采用发放频率表示兴奋程度,那么问题就简单了。因为频率编码同时包含了神经细胞兴奋的状态和状态随时间的变化情况。一个神经细胞只需要
老老实实地按照自己的状态(实际上是其他神经细胞对其的刺激的汇总)发放神经脉冲。当外界刺激增强了,那么发放自然就会变得频繁。当一个神经细胞持续收到
另一个的高频发放,那么它就知道“那个家伙已经很兴奋了”。这种高频刺激在时间上的积累效应,同样会提升目标神经细胞的兴奋状态。
在bnn中,神经细胞间的这种动态互动有着至关重要的作用。一个神经细胞可以不断地知道其他神经细胞的兴奋状态和变化,同样做出持续不断地状态响应。这种特性可以帮助处理那些时间相关的信息。比如运动检测等。
时
间编码的实现,还依赖于上帝他老人家的另外一个设计。神经细胞的膜电位在受到单个刺激后上升,然后逐步回落,回到静息电位。这种“漏电”现象保证了不同频
率的刺激,会对神经细胞产生不同的影响。当刺激频率超过膜电位回落速度时,膜电位会不断上升,直到超过阈值,导致神经细胞兴奋。
此
处,还有一个与此相关的有趣的现象。通常,兴奋的神经细胞们向某个神经细胞发放的时候,所有的刺激会叠加在一起,并且使得该神经细胞兴奋。但是这种叠加并
不一定要同时发生。有时,一连串不足以引发神经细胞兴奋的阈下刺激,会在时间上叠加,最终引起神经细胞的兴奋。这种特性对
LTP和
LTD等与神经系统学习有关的机制起着重要的作用。
最
后,任何一个神经细胞都有所谓的“不应期”。也就是,当一个神经细胞发放之后,会进入一个短暂的“休眠期”,不再受其他神经细胞影响,直到该阶段结束。这
样一来,一个神经细胞的最大兴奋频率是不应期长度的倒数。这有着现实意义。神经细胞的每次发放都需要消耗各种营养物质和能量,因而必须补充。无法想象一个
神经细胞没完没了地兴奋,还能够生存。这一点对于ann有着同等意义。尽管构成ann的是数字或者电路,但是资源同样也不是无限的。我们当然无法容忍个别
神经元长期占用计算资源,而使得其他神经元的歇工。上帝的设计,永远是最精简,最高效的。
上
半场就此结束。实际上ann和bnn还有很多方面可以进一步比较。到目前为止,仅仅比较了细胞层面的基本特性。总的说来,bnn更具柔性和灵活性,并且
bnn更加注重对资源的利用.尽管看起来神经细胞的行为更加复杂,但是它实际上使用了更加简单可靠的方式达到所需的目标。或许这种形式并非最快的,或者最
简单的,但却是在所面对的需求和约束下最好的选择。
此后的pk就延期吧,因为在更高的层面上,比如神经细胞/神经元的组织,功能模块的构成等等,bnn明显地在ann之上。我们不应当再怀疑上帝他老人家的设计了,自大往往不会有好结果的。别忘了,我们也是上帝设计的。
分享到:
相关推荐
**BNN-PYNQ-PYNQ+神经网络_labelm2j_pynq_bnn** 本文将深入探讨在PYNQ平台上实现BNN(二值神经网络)的技术细节和相关工具,帮助你理解如何利用硬件加速来提升神经网络的运行效率。 **一、BNN(二值神经网络)** ...
标题 "bnn_pynq.zip" 暗示了这是一个关于在PYNQ平台上实现神经网络,特别是二值神经网络(Binary Neural Network, BNN)的项目或库。PYNQ是Xilinx公司开发的一个开源硬件平台,它允许用户通过Python编程对赛灵思FPGA...
bnn dynamic。。。。。。。。。。。
标题“PYNQ上实现BNN网络识别数字”揭示了本次讨论的核心内容,即在PYNQ平台上利用二值神经网络(Binary Neural Network, BNN)进行数字识别。PYNQ是Xilinx公司推出的一个基于Zynq FPGA的嵌入式平台,它允许用户通过...
标题中的"BNN-PYNQ-master.zip_6BNN.COM_6bnn_com_PYNQ的BNN搭建_gradehrl_pynq b" 提到了几个关键元素:BNN(二值神经网络)、PYNQ-Z1、6BNN.COM以及gradehrl。这表明我们将讨论如何在基于PYNQ-Z1的平台上,利用6...
bnn-fpga是FPGA上CIFAR-10的二进制神经网络(BNN)加速器的开源实现。 加速器针对低功耗嵌入式现场可编程SoC,并在Zedboard上进行了测试。 在编写CIFAR-10测试集中的10000张图像时,错误率是11.19%。
标题中的“tensorflow-使用tensorflow实现的BNN算法.zip”表明这是一个使用TensorFlow框架实现的二值神经网络(Binary Neural Network, BNN)算法的代码库。BNN是一种针对深度学习模型进行轻量化处理的方法,它将...
基于PYNQ复现的BNN重建项目-lfcW1A2,包括HLS和Vivado项目工程,结合https://blog.csdn.net/qq_42334072/article/details/107966278食用更佳。
基于PYNQ复现的BNN重建项目-lfcW1A1,包括HLS和Vivado项目工程,结合https://blog.csdn.net/qq_42334072/article/details/107966278食用更佳。
BNN(二值神经网络)是一种在深度学习中使用的网络结构,它通过将权重和激活函数中的值从浮点数转换为二进制值,来大幅减少模型的复杂性并降低计算资源的使用。尽管在神经元的权重和激活值上进行二值化,研究证明,...
具有资源优化架构构建工具的组合式BNN工具链。 论文的一部分:“((Tadej Murovic,Andrej Trost),资源优化的组合式二元神经网络电路”->尚未出版。 构建用于二进制神经网络的组合Verilog电路的框架。 实现上述...
BNN-BN =? 在不进行批量归一化的情况下训练二进制神经网络 本文的代码 。 [CVPR BiVision研讨会2021] 陈天龙,张振宇,徐欧阳,刘泽春,沉志强,王张阳。概述批处理规范化(BN)是一个关键的促进因素,被认为对最新...
微社区,微信公众号后台,类似朋友圈的样式,还有活动功能
N3-BNN Toolbox是一款专为实现N3分类算法而设计的工具包,它在传统的KNN(K近邻)算法基础上进行了创新,改进了邻居识别的方法。KNN算法是一种基础且广泛应用的监督学习方法,主要适用于分类问题。其基本思想是通过...
标题中的“VMD+BNN_VMD_神经网络预测_神经网络_LSTM_vmd预测_源码.zip”指示了这个压缩包文件包含了一种基于VMD(Variational Mode Decomposition)和BNN(Bayesian Neural Networks)的神经网络预测方法,特别地是...
标题中的“VMD+BNN_VMD_神经网络预测_神经网络_LSTM_vmd预测”表明这是一个关于使用变分模态分解(VMD)与二元神经网络(BNN)结合,进行时间序列预测的项目,其中特别应用了长短期记忆网络(LSTM)。这种预测方法在...
二值化_卷积_神经网络_ Softwar_bnn-fpga_Binarized_Convolutional_Neural_Networks_on_Softwar_bnn-fpgaConvolutional_Neural_Networks_on_Softwar_bnn-fpga.zip
CocosCreator源码资源bnn(牛牛游戏)提取方式是百度网盘分享地址
"基于分时重用行卷积查找表的BNN加速器" 本文提出了一种基于硬件复用的可重构 BNN 硬件加速器,以解决当前基于二进制神经网络(BNN)的加速器在精度和计算效率方面的限制。该加速器主要包括三部分:完全二值化神经...