加法网络"宇宙"来了!AdderNet极简硬件设计曝光,对此你怎么看?
在深度学习里,乘积是个避免不了的运算,比如做图像识别的卷积层,就需要做大量的乘法。但是,与加法运算相比,乘法运算的计算复杂度高得多。
现在的深度学习在很大程度上依赖于GPU硬件,做大量的乘法运算,限制了它在移动设备上的应用,需要一种更高效的方法。如果能够抛弃乘法运算,是不是会让代码运行速度更快呢?
来自北京大学、华为诺亚方舟实验室、鹏城实验室的研究人员提出了一种加法器网络AdderNet,去掉卷积乘法,并设计一种新的反向传播算法,结果也能训练神经网络。
而且实验结果证明了,这种方法在MNIST、CIFAR-10、SVHN上已经接近传统CNN的SOTA结果。
加法网络早已有之,早在2015年,Bengio等人就提出了二元权重(1或-1)神经网络,用简单的累加运算来代替乘法,提高深度学习硬件的运行效率。
紧接着在2016年,Bengio等人进一步提出了二元神经网络(BNN),不仅是权重,连激活函数也被设定为二元形式。尽管将深度神经网络二元化可以极大地降低了计算成本,但是原始识别精度经常无法保持。
另外,二元网络的训练过程不稳定,并且通常收敛速度较慢。卷积通常作为默认操作从图像数据中提取特征,若引入各种方法来加速卷积,则存在牺牲网络性能的风险。如何让避免CNN中的乘法呢?
研究人员使用L1了距离。L1距离是两点坐标差值的绝对值之和,不涉及乘法。加法运算是L1距离中的主要操作,使用补码可以轻松地将求差值的运算转化为加法。
研究人员在此基础上提出了加法器网络AdderNet,不同类别的CNN特征按其角度来划分。由于AdderNet使用L1范数来区分不同的类,因此AdderNet的特征倾向于聚集到不同的类中心。
可视化的结果表明,L1距离可用作深度神经网络中滤波器与输入特征之间距离的相似性度量。由此进行优化的方法叫做符号SGD(signSGD)。
但是,signSGD几乎永远不会沿着最陡的下降方向,并且方向性只会随着维数的增长而变差。
最后,在CIFAR-10的图像分类任务中,AdderNet相比原始的二元神经网络BNN性能有大幅的提升,并且性能已经接近了传统CNN的结果。
这种方法训练的得到的权重分布也和CNN有很大的不同,AdderNet的权重服从拉普拉斯分布,而CNN的权重服从高斯分布。
个人认为,在未来的工作中,他们将研究AdderNet的量化结果,以实现更高的速度和更低的能耗,以及AdderNet的通用性,不仅用于图像分类,还将用到目标检测和语义分割等任务中。
深度学习能够学会加法吗
首先,加法(数值计算)是机器擅长而人类不擅长的,与之相反,模式识别是人类擅长而机器不擅长的A8U神经网络。所以题主拿加法作为切入点来衡量深度学习能不能媲美人类,出发点上就错了,应该拿人类擅长的东西来切入。
然后,正面回答问题,一个去掉非线性激活函数的感知机就可以学习加法了,而感知机是神经网络的构建积木,深度学习用的就是神经网络,所以深度学习可以学习加法——虽然这是杀鸡用牛刀的行为。
最后,题主真正疑惑的应该不是“深度学习能不能模拟人”,而是“深度学习能不能模拟机器”,意即模拟非常机械的数值计算、数据结构和算法等。
答案是已经有这方面的研究了,叫做神经图灵机(NeuralTuringMachine):这篇论文的实验部分用它的模型做了几个非常“机械”的任务,包括拷贝、排序、子过程调用等,这样就是在模拟机器而非模拟人。
虽然里面没有专门做加法的实验,但从上述已经做到的任务可以看出神经图灵机对加法也应该是手到擒来的。作者:郑华滨链接:来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
神经网络的历史是什么?
沃伦·麦卡洛克和沃尔特·皮茨(1943)基于数学和一种称为阈值逻辑的算法创造了一种神经网络的计算模型。这种模型使得神经网络的研究分裂为两种不同研究思路。
一种主要关注大脑中的生物学过程,另一种主要关注神经网络在人工智能里的应用。一、赫布型学习二十世纪40年代后期,心理学家唐纳德·赫布根据神经可塑性的机制创造了一种对学习的假说,现在称作赫布型学习。
赫布型学习被认为是一种典型的非监督式学习规则,它后来的变种是长期增强作用的早期模型。从1948年开始,研究人员将这种计算模型的思想应用到B型图灵机上。
法利和韦斯利·A·克拉克(1954)首次使用计算机,当时称作计算器,在MIT模拟了一个赫布网络。纳撒尼尔·罗切斯特(1956)等人模拟了一台IBM704计算机上的抽象神经网络的行为。
弗兰克·罗森布拉特创造了感知机。这是一种模式识别算法,用简单的加减法实现了两层的计算机学习网络。罗森布拉特也用数学符号描述了基本感知机里没有的回路,例如异或回路。
这种回路一直无法被神经网络处理,直到保罗·韦伯斯(1975)创造了反向传播算法。在马文·明斯基和西摩尔·派普特(1969)发表了一项关于机器学习的研究以后,神经网络的研究停滞不前。
他们发现了神经网络的两个关键问题。第一是基本感知机无法处理异或回路。第二个重要的问题是电脑没有足够的能力来处理大型神经网络所需要的很长的计算时间。
直到计算机具有更强的计算能力之前,神经网络的研究进展缓慢。二、反向传播算法与复兴后来出现的一个关键的进展是保罗·韦伯斯发明的反向传播算法(Werbos1975)。
这个算法有效地解决了异或的问题,还有更普遍的训练多层神经网络的问题。在二十世纪80年代中期,分布式并行处理(当时称作联结主义)流行起来。
戴维·鲁姆哈特和詹姆斯·麦克里兰德的教材对于联结主义在计算机模拟神经活动中的应用提供了全面的论述。神经网络传统上被认为是大脑中的神经活动的简化模型,虽然这个模型和大脑的生理结构之间的关联存在争议。
人们不清楚人工神经网络能多大程度地反映大脑的功能。
支持向量机和其他更简单的方法(例如线性分类器)在机器学习领域的流行度逐渐超过了神经网络,但是在2000年代后期出现的深度学习重新激发了人们对神经网络的兴趣。
三、2006年之后的进展人们用CMOS创造了用于生物物理模拟和神经形态计算的计算设备。最新的研究显示了用于大型主成分分析和卷积神经网络的纳米设备具有良好的前景。
如果成功的话,这会创造出一种新的神经计算设备,因为它依赖于学习而不是编程,并且它从根本上就是模拟的而不是数字化的,虽然它的第一个实例可能是数字化的CMOS设备。
在2009到2012年之间,JürgenSchmidhuber在SwissAILabIDSIA的研究小组研发的循环神经网络和深前馈神经网络赢得了8项关于模式识别和机器学习的国际比赛。
例如,AlexGravesetal.的双向、多维的LSTM赢得了2009年ICDAR的3项关于连笔字识别的比赛,而且之前并不知道关于将要学习的3种语言的信息。
IDSIA的DanCiresan和同事根据这个方法编写的基于GPU的实现赢得了多项模式识别的比赛,包括IJCNN2011交通标志识别比赛等等。
他们的神经网络也是第一个在重要的基准测试中(例如IJCNN2012交通标志识别和NYU的扬·勒丘恩(YannLeCun)的MNIST手写数字问题)能达到或超过人类水平的人工模式识别器。
类似1980年KunihikoFukushima发明的neocognitron和视觉标准结构(由DavidH.Hubel和TorstenWiesel在初级视皮层中发现的那些简单而又复杂的细胞启发)那样有深度的、高度非线性的神经结构可以被多伦多大学杰弗里·辛顿实验室的非监督式学习方法所训练。
2012年,神经网络出现了快速的发展,主要原因在于计算技术的提高,使得很多复杂的运算变得成本低廉。以AlexNet为标志,大量的深度网络开始出现。
2014年出现了残差神经网络,该网络极大解放了神经网络的深度限制,出现了深度学习的概念。
构成典型的人工神经网络具有以下三个部分:1、结构(Architecture)结构指定了网络中的变量和它们的拓扑关系。
例如,神经网络中的变量可以是神经元连接的权重(weights)和神经元的激励值(activitiesoftheneurons)。
2、激励函数(ActivationRule)大部分神经网络模型具有一个短时间尺度的动力学规则,来定义神经元如何根据其他神经元的活动来改变自己的激励值。
一般激励函数依赖于网络中的权重(即该网络的参数)。3、学习规则(LearningRule)学习规则指定了网络中的权重如何随着时间推进而调整。这一般被看做是一种长时间尺度的动力学规则。
一般情况下,学习规则依赖于神经元的激励值。它也可能依赖于监督者提供的目标值和当前权重的值。例如,用于手写识别的一个神经网络,有一组输入神经元。输入神经元会被输入图像的数据所激发。
在激励值被加权并通过一个函数(由网络的设计者确定)后,这些神经元的激励值被传递到其他神经元。这个过程不断重复,直到输出神经元被激发。最后,输出神经元的激励值决定了识别出来的是哪个字母。
介绍深度神经网络的书怎么都是介绍数学的 知乎
基于遗传算法的神经网络预测股票的价格有现实意义吗 知乎
卷积神经网络和深度神经网络的区别是什么
作者:杨延生链接:来源:知乎著作权归作者所有,转载请联系作者获得授权。"深度学习"是为了让层数较多的多层神经网络可以训练,能够work而演化出来的一系列的新的结构和新的方法。
新的网络结构中最著名的就是CNN,它解决了传统较深的网络参数太多,很难训练的问题,使用了逗局部感受野地和逗权植共享地的概念,大大减少了网络参数的数量。
关键是这种结构确实很符合视觉类任务在人脑上的工作原理。新的结构还包括了:LSTM,ResNet等。
新的方法就多了:新的激活函数:ReLU,新的权重初始化方法(逐层初始化,XAVIER等),新的损失函数,新的防止过拟合方法(Dropout,BN等)。
这些方面主要都是为了解决传统的多层神经网络的一些不足:梯度消失,过拟合等。
----------------------下面是原答案------------------------从广义上说深度学习的网络结构也是多层神经网络的一种。
传统意义上的多层神经网络是只有输入层、隐藏层、输出层。其中隐藏层的层数根据需要而定,没有明确的理论推导来说明到底多少层合适。
而深度学习中最著名的卷积神经网络CNN,在原来多层神经网络的基础上,加入了特征学习部分,这部分是模仿人脑对信号处理上的分级的。
具体操作就是在原来的全连接的层前面加入了部分连接的卷积层与降维层,而且加入的是一个层级。
输入层-卷积层-降维层-卷积层-降维层--.--隐藏层-输出层简单来说,原来多层神经网络做的步骤是:特征映射到值。特征是人工挑选。深度学习做的步骤是信号->特征->值。
特征是由网络自己选择。
如何理解ReLU activation function
作者:知乎用户链接:来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。你可以看:最近流行的激活函数!
一般激活函数有如下一些性质:非线性:当激活函数是线性的,一个两层的神经网络就可以基本上逼近所有的函数。
但如果激活函数是恒等激活函数的时候,即f(x)=x,就不满足这个性质,而且如果MLP使用的是恒等激活函数,那么其实整个网络跟单层神经网络是等价的;可微性:当优化方法是基于梯度的时候,就体现了该性质;单调性:当激活函数是单调的时候,单层网络能够保证是凸函数;f(x)≈x:当激活函数满足这个性质的时候,如果参数的初始化是随机的较小值,那么神经网络的训练将会很高效;如果不满足这个性质,那么就需要详细地去设置初始值;输出值的范围:当激活函数输出值是有限的时候,基于梯度的优化方法会更加稳定,因为特征的表示受有限权值的影响更显著;当激活函数的输出是无限的时候,模型的训练会更加高效,不过在这种情况小,一般需要更小的LearningRate。
Sigmoid常用的非线性的激活函数,数学形式如下:;tp=webp&wxfrom=5&wx_lazy=1Sigmoid函数曾经被使用的很多,不过近年来,用它的人越来越少了。
主要是因为它的缺点(输入较大或较小的时候,最后梯度会接近于0),最终导致网络学习困难。
所以,出现了另一种激活函数:ReLUReLUf(x)=max(0,x)优点:使用ReLU得到的SGD的收敛速度会比sigmoid/tanh快。
这是因为它是linear,而且ReLU只需要一个阈值就可以得到激活值,不用去计算复杂的运算。
缺点:训练过程该函数不适应较大梯度输入,因为在参数更新以后,ReLU的神经元不会再有激活的功能,导致梯度永远都是零。
为了针对以上的缺点,又出现Leaky-ReLU、P-ReLU、R-ReLU三种拓展激活函数。
LeakyReLUs该函数用来解决ReLU的缺点,不同的是:f(x)=αx,(x=0)这里的α是一个很小的常数。这样,即修正了数据分布,又保留了一些负轴的值,使得负轴信息不会全部丢失。
ParametricReLU对于LeakyReLU中的α,通常都是通过先验知识人工赋值,可以观察到损失函数对α的导数是可以求得的,可以将它作为一个参数进行训练。
《DelvingDeepintoRectifiers:SurpassingHuman-LevelPerformanceonImageNetClassification》该文章指出其不仅可以训练,而且效果特别好。
公式非常简单,其中对α的导数:data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==原文使用了ParametricReLU后,最终效果比不用提高了1.03%。
RandomizedReLURandomizedLeakyReLU是LeakyReLU的随机版本(α是随机选取)。它首次是在NDSB比赛中被提出。
核心思想就是,在训练过程中,α是从一个高斯分布U(l,u)中随机出来的,然后再测试过程中进行修正(与Dropout的用法相似)。
数学表示如下:;tp=webp&wxfrom=5&wx_lazy=1在测试阶段,把训练过程中所有的αji取个平均值。NDSB冠军的α是从U(3,8)中随机出来的。
在测试阶段,激活函数如下:;tp=webp&wxfrom=5&wx_lazy=1。