深度神经网络实际上是有多个人工神经网络神经元元组个而成

 上传我的文档
 下载
 收藏
本人所整理上传的PDF文档均可复制黏贴,请放心下载!!
 下载此文档
正在努力加载中...
深度神经网络在中文语音识别系统中的实现
下载积分:2000
内容提示:深度神经网络在中文语音识别系统中的实现
文档格式:PDF|
浏览次数:182|
上传日期: 07:36:26|
文档星级:
全文阅读已结束,如果下载本文需要使用
 2000 积分
下载此文档
该用户还上传了这些文档
深度神经网络在中文语音识别系统中的实现
关注微信公众号深度神经网络(DNN)目前是许多现代AI应用的基础。自从DNN在和图像识别任务中展现出突破性的成果,使用DNN的应用数量呈爆炸式增加。这些DNN方法被大量应用在无人驾驶汽车,癌症检测,游戏AI等方面。在许多领域中,DNN目前的准确性已经超过人类。与早期的专家手动提取特征或制定规则不同,DNN的优越性能来自于在大量数据上使用统计学习方法,从原始数据中提取高级特征的能力,从而对输入空间进行有效的表示。然而,DNN超高的准确性是以超高的计算复杂度为代价的。通常意义下的计算引擎,尤其是GPU,是DNN的基础。因此,能够在不牺牲准确性和增加硬件成本的前提下,提高深度神经网络的能量效率和吞吐量的方法,对于DNN在AI系统中更广泛的应用是至关重要的。研究人员目前已经更多的将关注点放在针对DNN计算开发专用的加速方法。雷锋网了解到,近日一篇名为《Efficient Processing of Deep Neural Networks: A Tutorial and Survey》的论文横空出世,这篇来自MIT的论文详细介绍了DNN高效运算的最新进展,提供了DNN的综述,以及加速DNN计算的方法。鉴于篇幅,雷锋网主要针对论文中的如下几部分详细介绍:DNN的背景,历史和应用DNN的组成部分,以及常见的DNN模型简介如何使用硬件加速DNN运算DNN的背景人工智能与深度神经网络深度神经网络,也被称为深度学习,是人工智能领域的重要分支,根据麦卡锡(人工智能之父)的定义,人工智能是创造像人一样的智能机械的科学工程。深度学习与人工智能的关系如图1所示:&&& & & & & & & &图1:深度神经网络与人工智能的关系人工智能领域内,一个大的子领域是机器学习,由Arthur Samuel在1959年定义为:让计算机拥有不需要明确编程即可学习的能力。这意味着创建一个程序,这个程序可以被训练去学习如何去做一些智能的行为,然后这个程序就可以自己完成任务。而传统的人工启发式方法,需要对每个新问题重新设计程序。高效的机器学习算法的优点是显而易见的。一个机器学习算法,只需通过训练,就可以解决某一领域中每一个新问题,而不是对每个新问题特定地进行编程。在机器学习领域,有一个部分被称作brain-inspired computation。因为人类大脑是目前学习和解决问题最好的“机器”,很自然的,人们会从中寻找机器学习的方法。尽管科学家们仍在探索大脑工作的细节,但是有一点被公认的是:神经元是大脑的主要计算单元。人类大脑平均有860亿个神经元。神经元相互连接,通过树突接受其他神经元的信号,对这些信号进行计算之后,通过轴突将信号传递给下一个神经元。一个神经元的轴突分支出来并连接到许多其他神经元的树突上,轴突分支和树突之间的连接被称为突触。据估计,人类大脑平均有1014-1015个突触。突触的一个关键特性是它可以缩放通过它的信号大小。这个比例因子可以被称为权重(weight),普遍认为,大脑学习的方式是通过改变突触的权重实现的。因此,不同的权重导致对输入产生不同的响应。注意,学习过程是学习刺激导致的权重调整,而大脑组织(可以被认为是程序)并不改变。大脑的这个特征对机器学习算法有很好的启示。神经网络与深度神经网络神经元的计算是输入值的加权和这个概念启发了神经网络的研究。这些加权和对应于突触的缩放值以及神经元所接收的值的组合。此外,神经元并不仅仅是输入信号的加权和,如果是这样的话,级联的神经元的计算将是一种简单的线性代数运算。相反的是,神经元组合输入的操作似乎是一种非线性函数,只有输入达到某个阈值的时候,神经元才会生成输出。因此,通过类比,我们可以知道神经网络在输入值的加权和的基础上应用了非线性函数。图2(a)展示了计算神经网络的示意图,图的最左边是接受数值的“输入层”。这些值被传播到中间层神经元,通常也叫做网络的“隐藏层”。通过一个或更多隐藏层的加权和最终被传播到“输出层”,将神经网络的最终结果输出给用户。图2:神经网络示意图在神经网络领域,一个子领域被称为深度学习。最初的神经网络通常只有几层的网络。而深度网络通常有更多的层数,今天的网络一般在五层以上,甚至达到一千多层。目前在视觉应用中使用深度神经网络的解释是:将图像所有像素输入到网络的第一层之后,该层的加权和可以被解释为表示图像不同的低阶特征。随着层数的加深,这些特征被组合,从而代表更高阶的图像特征。例如,线可以被组合成形状,再进一步,可以被组合成一系列形状的集合。最后,再训练好这些信息之后,针对各个图像类别,网络给出由这些高阶特征组成各个对象的概率,即分类结果。推理(Inference)与训练(Training)既然DNN是机器学习算法中的一员,那么它的基本编程思想仍然是学习。DNN的学习即确定网络的权重值。通常,学习过程被称为训练网络(training)。一旦训练完成,程序可以使用由训练确定的权值进行计算,这个使用网络完成任务的操作被被称为推断(inference)。接下来,如图3所示,我们用图像分类作为例子来展示如何训练一个深度神经网络。当我们使用一个DNN的时候,我们输入一幅图片,DNN输出一个得分向量,每一个分数对应一个物体分类;得到最高分数的分类意味着这幅图片最有可能属于这个分类。训练DNN的首要目标就是确定如何设置权重,使得正确分类的得分最高(图片所对应的正确分类在训练数据集中标出),而使其他不正确分类的得分尽可能低。理想的正确分类得分与目前的权重所计算出的得分之间的差距被称为损失函数(loss)。因此训练DNN的目标即找到一组权重,使得对一个较大规模数据集的loss最小。图3:图像分类权重(weight)的优化过程类似爬山的过程,这种方法被称为梯度下降(gradient decent)。损失函数对每个权值的梯度,即损失函数对每个权值求偏导数,被用来更新权值(例:第t到t+1次迭代:,其中α被称为学习率(Learning rate)。梯度值表明权值应该如何变化以减小loss。这个减小loss值的过程是重复迭代进行的。梯度可以通过反向传播(Back-Propagation)过程很高效地进行计算,loss的影响反向通过网络来计算loss是如何被每个权重影响的。训练权重有很多种方法。前面提到的是最常见的方法,被称为监督学习,其中所有的训练样本是有标签的。无监督学习是另一种方法,其中所有训练样本都没有标签,最终目标是在数据中查找结构或聚类。半监督学习结合了两种方法,只有训练数据的一小部分被标记(例如,使用未标记的数据来定义集群边界,并使用少量的标记数据来标记集群)。最后,强化学习可以用来训练一个DNN作为一个策略网络,对策略网络给出一个输入,它可以做出一个决定,使得下一步的行动得到相应的奖励;训练这个网络的过程是使网络能够做出使奖励(即奖励函数)最大化的决策,并且训练过程必须平衡尝试新行为(Exploration)和使用已知能给予高回报的行为(Exploitation)两种方法。用于确定权重的另一种常用方法是fine-tune,使用预先训练好的模型的权重用作初始化,然后针对新的数据集(例如,传递学习)或新的约束(例如,降低的精度)调整权重。与从随机初始化开始相比,能够更快的训练,并且有时会有更好的准确性。DNN发展简史1940s&&&&神经网络被提出1960s&&&&深度神经网络被提出1989&&&& 识别手写数字的神经网络(LeNet)1990s&&&&针对浅层网络的专用硬件被开发出(Intel ETANN)2011&&&& 基于DNN的语音识别突破(Microsoft)2012&&&& 在视觉方面,DNN代替了传统的人工提取特征的方法(AlexNet)2014+& &用于DNN加速的硬件兴起(Neuflow,DianNao)尽管神经网络在20世纪40年代就被提出了,但一直到80年代末期才有了第一个实际应用,识别手写数字的LeNet。这个系统广泛地应用在支票地数字识别上。而自2010年之后,基于DNN的应用爆炸式增长。深度学习在2010年前后得到巨大成功主要是由三个因素导致的。首先是训练网络所需的海量信息。学习一个有效的表示需要大量的训练数据。目前Facebook每天收到超过3.5亿张图片,沃尔玛每小时产生2.5Pb的用户数据,YouTube每分钟有300小时的视频被上传。因此,云服务商和许多公司有海量的数据来训练算法。其次是充足的计算资源。半导体和计算机架构的进步提供了充足的计算能力,使得在合理的时间内训练算法成为可能。最后,算法技术的进化极大地提高了准确性并拓宽了DNN的应用范围。早期的DNN应用打开了算法发展的大门。它激发了许多深度学习框架的发展(大多数都是开源的),这使得众多研究者和从业者能够很容易的使用DNN网络。ImageNet挑战是机器学习成功的一个很好的例子。这个挑战是涉及几个不同方向的比赛。第一个方向是图像分类,其中给定图像的算法必须识别图像中的内容,如下图所示。训练集由120万张图像组成,每张图片标有图像所含的1000个对象类别之一。然后,该算法必须准确地识别测试集中图像。图4显示了多年来ImageNet挑战中各年最佳参赛者的表现。可以看出算法的准确性最初错误率25%以上。 2012年,多伦多大学的一个团队使用图GPU的高计算能力和深层神经网络方法,即AlexNet,将错误率降低了约10%。他们的成就导致了深度学习风格算法的流行,并不断的改进。图4:Imagenet历年准确率变化ImageNet挑战中使用深度学习方法的队伍,和使用GPU计算的参与者数量都在相应增加。2012年时,只有四位参赛队使用了GPU,而到了2014年,几乎所有参赛者都使用了GPU。这反映了从传统的计算机视觉方法到于深度学习的研究方式的完全的转变。在2015年,ImageNet获奖作品ResNet 超过人类水平准确率(top-5错误率低于5%),将错误率降到3%以下。而目前的重点也不过多的放在准确率的提升上,而是放在其他一些更具挑战性的方向上,如对象检测和定位。这些成功显然是DNNs应用范围广泛的一个原因。DNN的应用目前DNN已经广泛应用到各个领域,下面列举一些DNN已经深远影响的领域,和一些未来可能产生巨大影响的领域。图像和视频 & &视频可能是大数据时代中最多的资源。它占据了当今互联网70%的流量。例如,世界范围内每天都会产生80亿小时的监控视频。计算机视觉需要从视频中抽取有意义的信息。DNN极大地提高了许多计算机视觉任务地准确性,例如图像分类,物体定位和检测,图像分割,和动作识别。语音和语言&&&&DNN也极大地提高了语音识别和许多其他相关任务地准确率,例如机器翻译,自然语言处理和音频生成。医药&&&&DNN在基因学中扮演了重要的角色,它探究了许多疾病的基因层面的原因,例如孤独症,癌症,和脊髓性肌萎缩。它同样也被应用在医学图像检测中,用来检测皮肤癌,脑癌以及乳腺癌等等。游戏&&&&近期,许多困难的AI挑战包括游戏都被使用DNN的方法解决了。这些成功需要训练技术上的创新,以及强化学习(网络通过自身输出的结果进行反馈训练)。DNN在Atari(一种流行的家用游戏机)和围棋上,已经有了超过人类的准确度。机器人&&&&DNN在一些机器人学的任务上同样取得了成功,例如机械臂抓取,运动规划,视觉导航,四旋翼飞行器稳定性控制以及无人驾驶汽车驾驶策略。DNN目前已经有了很广泛的应用。我们将目光放向未来,DNN会在医药和机器人领域扮演更重要的角色。同时,也会在金融(例如交易,能源预测和风险评估),基础设施建设(例如结构安全性,交通控制),天气预报和事件检测中有更多的应用。嵌入式与云不同的DNN应用和过程(training vs inference)有不同的计算需求。尤其是训练过程,需要一个较大的数据集和大量计算资源来进行迭代,因此需要在云端进行计算。而推理过程可以在云端或者终端进行(例如物联网设备或移动终端)。在DNN的许多应用中,需要推理过程在传感器附近。例如无人驾驶汽车或者无人机导航或者机器人,处理过程就必须在本地进行,因为延迟和传输的不稳定性造成的安全风险过高。然而对视频进行处理计算相当复杂。因此,能够高效分析视频的低成本硬件仍然是制约DNN应用的重要因素。能够执行DNN推理过程的嵌入式平台要有严格的能量消耗,计算和存储成本限制。这篇论文在推理过程中的计算需求方面进行了详细的介绍,感兴趣的读者可以参考文末连接进一步深入了解。DNN组成部分与常见模型DNN针对不同的应用有很多种形式,而流行的形式也在快速地进化,以改善准确性和高效性。据雷锋网了解,所有DNN的输入都是一系列需要被网络分析的值。这些值可以是一幅图片的像素,音频波形的幅值采样值,或者一些表示系统或游戏状态的数值。处理输入的网络主要有两种形式:前馈(Feed Forward)或者循环(Recurrent),如图2(c)所示。在前馈网络中,所有的计算都是对前面层输出的一系列运算。最后的运算生成网络的输出,例如一个图片包含某个物体的概率值,一段音频序列包含某个单词的概率值。在这样的DNN中,网络是无记忆性的,针对同一段输入,输出总是相同的,而与网络先前的输入是无关的。相反,循环神经网络(RNN),拥有内部记忆,允许长期的依赖影响输出。其中LSTM(Long Short Term Memory network)是RNN中很流行的一个变体。在这些网络中,一些内部中间操作生成的值会被存储在网络中,并在后面的操作中与其他输入结合,共同作为输入。如图2(d)左部分网络,DNN可以由全连接层组成(Fully-Connected Layer,也叫做多层感知机)。在全连接层中,输出激活是所有输入激活的加权和(前后两层的神经元是全部连接在一起的)。由于临近两层的所有神经元都是相互连接的,这会导致权重参数过多,需要大量的存储空间和计算资源。不过幸运的是,在许多应用中,我们可以通过设置某些激活之间连接的权值为0来减少参数的数量,而不影响准确性。这种叫做稀疏连接层(Sparsely-Connected Layer),如图2(d)右部分网络。为了减少权重参数,提高计算效率,我们可以更进一步,限制对输出有贡献的权值的数量。如果输出值是输入中一个固定窗口大小的函数,就可以实现结构上的稀疏性。如果每个计算每个输出时的权重都是相同的,那么就可以进一步提升效率。权值共享(weight sharing)可以极大地降低权重对存储空间的需求。一个最流行的窗口化,权值共享的网络就是卷积神经网络(convolution neural network)。如图5(a)所示,每个输出仅仅由一小个邻域的激活的加权和计算得到。每个滤波器拥有有限的感知野(receptive field),输入中超过一定距离的值的权重都被设置为零。同时,对于每个输出,同样的权值是被共享的,也就是说滤波器有空间不变性。图5:卷积DNN组成部分卷积神经网络:如图6所示,由多个卷积层组成(CONV),每个卷积层对各自的输入进行高阶抽象,这种高阶抽象被称为特征图(feature map,fmap)。CNN可以通过非常深的层级实现极高的性能。卷积神经网络被广泛应用在图像理解,语音识别,游戏,以及机器人学等。图5(b)介绍了CNN卷积的过程,CNN中的每个卷积层主要由高维卷积构成。输入为一系列二维特征图(input feature map),特征图的个数被称为通道,这里有C个通道。卷积层输出的每个点都是所有通道卷积之和。卷积层输出的通道数取决于滤波器的个数,本例中有M个滤波器,因此输出特征图为M通道。图6:卷积神经网络非线性函数:在每个卷积或全连接计算之后,都会使用一个非线性激活函数。如图7所示,不同种类的非线性函数向DNN中引入非线性。起初DNN经常使用Sigmoid或tanh函数,目前ReLU和它的一些变种函数被证明可以更简单,更易训练,同时也能达到更高的准确性,因此变得越来越流行。图7:常用非线性激活函数池化(Pooling):池化可以使网络鲁棒性更强。通常池化都是不重叠的,这样能降低表示的维数,减小参数量。图8:池化标准化(Normalization):控制各层输入的分布可以极大的加速训练过程并提高准确度。常有的如批标准化(batch normalization)(如下公式),它更进一步的进行缩放和平移,其中γ和β为参数,需要在训练中学习。常见DNN模型LeNet:1989年第一个CNN方法,为了解决手写数字识别而设计的。AlexNet:它在2012年赢得了ImageNet挑战,是第一个使用CNN方法赢得ImageNet的网络。它拥有5个卷积层和3个全连接层。Overfeat:它与AlexNet结构很相似,同样拥有5个卷积层和3个全连接层,区别是Overfeat的滤波器数量更多,所以准确度略有提升。VGG-16:网络深度大大加深,达到16层,其中包含13个卷积层和3个全连接层。为了平衡网络层数加深而导致的成本增加,一个大的滤波器被分解为多个小的滤波器,来减小参数数量,并具有相同的感知野。VGG有两个模型,还有一个VGG-19的模型,比VGG-16的Top-5错误率低0.1%。图9:为了减少参数,为了使感知野大小不变,使用两个较小的滤波器代替大的滤波器GoogLeNet:网络深度达到22层,同时引入了Inception模型,如图10所示。之前的模型通常是级联的,而Inception模型是并行连接的。可以看到,它使用了多种大小的滤波器对输入进行处理,这是为了能够在不同尺度上处理输入。22层网络包括了三个卷积层,接下来使9个inceptioin层(每层相当于两个卷积层),以及一个全连接层。图10:Inception模型ResNet:也叫做残差网络(Residual Net)。使用了残差连接使得网络变得更深(34层,或更多甚至千层)。它是ImageNet挑战中第一个top-5错误率低于人类的。当网络层次变得更深时,训练时的一个难点就是梯度消失(Vanishing Gradient)。由于沿着网络进行反向传播时,梯度会越来越小,导致对于很深的网络,最初几层网络的权重基本不会更新。残差网络引入了“短接”模型,包含了全等连接,使得梯度传播可以跳过卷积层,即使网络层数达到一千层仍可以训练。图11:残差模型DNN处理的硬件由于DNN的流行,许多硬件平台都针对DNN处理的特性进行针对性的开发。无论是服务器级别的还是嵌入式的SoC硬件都在快速发展。因此,了解各种平台如何加速计算,是十分重要的。CONV和FC层的基本组成都是乘加操作(Multiply-and-Accumulate,MAC),可以很容易的并行化。为了实现高性能,如图12所示,包括时间和空间的架构的经典模型经常被使用。时间架构(也称作SIMD或SIMT)主要出现在CPU或GPU中。它对大量ALU使用集中控制。这些ALU智能从存储器层次结构中获取数据,并且彼此不能通信数据。相比之下,空间架构使用数据流处理,即ALU形成处理链,使得它们能直接将数据从一个传递到另一个。每个ALU有自己的控制逻辑和本地内存,称为暂存器或注册文件。空间架构主要使用在为DNN专门设计的ASIC中。图12:时间和空间架构对于时间架构,可以使用核心中的计算转换(Computational Transform)来减少乘法的数量,以增加吞吐量(Throughput)。对于加速硬件中使用的空间架构,使用存储器层次结构中的低成本内存,来增加数据重利用率,以降低能耗。论文很详细的介绍了如何通过这两种方法改进时间和空间架构,以加速DNN运算的,感兴趣的读者可以阅读原论文深入了解:Efficient Processing of Deep Neural Networks: A Tutorial and Survey体系结构研究者眼中的神经网络硬件-其它-@大数据资讯
你好,游客
体系结构研究者眼中的神经网络硬件
来源:《中国计算机学会通讯》第7期《专题》&
作者:陈云霁
  神经网络硬件是计算机体系结构、人工智能和神经科学等多学科深度融合、交叉的一个领域,是利用专门的硬件电路对神经网络算法进行处理。二十世纪八九十年代,国内外曾掀起一阵研究神经网络硬件的热潮。但是由于整个智能领域的研究陷入低潮,神经网络硬件的研究也趋于停滞。近年来,计算机体系结构、人工智能应用出现了一些新的趋势,神经网络硬件加速器又重新回到工业界和学术界的视野。
  计算机体系结构:暗硅
  自计算机诞生以来,性能不断提升的处理器芯片使人类处理和计算大规模数据的能力不断增强,强大的计算能力也推动着其他学科的不断发展,反过来各个学科也促使人类不断追求更加强大的计算能力。
  处理器芯片厂商一直以来都是通过更高的主频来提升计算机性能。根据摩尔定律,处理器芯片上的晶体管数量和峰值功耗都在不断增加。由于时钟频率的提高和泄漏电流的增加,需要提高驱动电压来快速识别晶体管的状态。驱动电压与时钟频率有一定的正比关系,根据晶体管的功耗估算公式,可以得出,功耗的增加大大超过了性能的提升。根据英特尔公司的研究报告,3%的功耗只能带来1%性能的提升,这种代价过于昂贵。功耗的提升和处理器芯片有限的封装散热能力也有突出的矛盾。受限于封装功耗,大部分的晶体管无法同时全速工作,出现&暗硅(dark silicon)&[23, 66]。目前晶体管工艺仍有发展空间,随着三维堆叠(3D-stack)技术的发展,可以预见芯片的集成度仍将提升,功耗密度(powerdensity)将使散热问题更加突出。
  目前工业界和学术界的共识是:体系结构需要用&暗硅&实现加速器&&针对特定应用或算法而定制的硬件电路。从移动通信终端到数据中心,加速器是提升性能和能效的最有效手段。有研究表明,加速器能够使一些应用的能效提升50~1000倍[29]。神经网络硬件加速器又重新成为体系结构研究的重要内容。
  人工智能:深度学习技术
  神经网络的研究分为生物启发的神经网络(bio-inspired neural network)和人工神经网络(artificialneural network)两类。前者由神经生物学家关注,用于建立一种合适的模型(从生物学而来)来帮助理解神经网络和大脑是如何工作的,比较有代表性的是脉冲神经网络(spiking neural network)[45]。最近,IBM在《自然》(Nature)上发表了他们的成果&&TrueNorth[48],高通公司也宣布生物启发的神经网络芯片Zeroth处理器[38]的消息。这些模型都采用了更加接近生物学的模型,并且已经有一些实际应用的场景。
  人工神经网络是机器学习方法的一种,其起源要追溯到1943年麦卡洛克(McCulloch)和皮茨(Pitts)的工作[46]。他们设计的神经元模型构成的网络原则上可以计算任何函数。1949年赫布(Hebb)的工作阐述了突触修正的生理学模型。1958年罗森布拉特(Rosenblatt)第一个提出了感知器作为有监督学习的模型,80年代霍普菲尔德(Hopfield)发表了一篇引起巨大争论的论文[31],也推动了神经网络研究的高速发展。最近本希奥(Bengio)、欣顿(Hinton)等人提出的深度学习 [39]在许多应用程序上(如网页搜索、图像分析、语音识别等)表现出良好的特性,激起了人们的极大热情,再次推动了神经网络研究的发展。深度神经网络(Deep Neural Network, DNN)和卷积神经网络(ConvolutionalNeural Network, CNN)[40]相继引起人们的极大兴趣。
  应用:日益重要的智能应用
  随着技术的发展,应用发生了重大的变化,比如并行计算过去常常被狭隘地理解为科学计算,但近年来出现的一些复杂的云服务应用和移动终端上的智能处理应用,如音乐和语音识别(如Shazam和Siri)、图像/视频分析(图像/视频的自动文本标记,如Picasa和Flickr)、在线导航(如谷歌、必应和百度地图)等,对计算能力和能效提出了很高的要求。2005年,英特尔将其归纳为RMS(recognition-mining-synthesis,识别-发掘-综合)应用[21],如人脸识别、、图像合成等。其后英特尔联合普林斯顿大学推出了并行基准测试程序集PARSEC,其中大部分是RMS类应用。大部分RMS应用均基于分类、聚合、近似或优化算法。随着智能应用地位的日益提升,能显著提升智能处理速度、降低智能处理能耗的神经网络处理器自然成为业界关注的焦点。
  神经网络硬件发展现状
  随着新的神经网络模型的不断提出,硬件设计技术的不断更新,神经网络硬件也越来越难以单纯的标准划分出具有实际意义的分类。从弗林(Flynn)[27]
  在1972年提出的单指令流单数据流(SISD)、单指令流多数据流(SIMD)、多指令流单数据流(MISD)、多指令流多数据流(MIMD)的分类方法,到保罗(Paolo Ienne)[32] 在1995年提出的基于灵活性和性能进行串并行的分类方案,伊斯克&阿贝(Isik Aybay)在1996年提出的多属性分类(片上/片外、数字/模拟/混合等)方案,再到伊布杜詹恩(Izeboudjen)在2014年提出的更加偏向体系结构的分类方案[33],研究人员一直在努力将现有的神经网络硬件纳入一个清晰的体系。迪亚斯(Dias)在2004年总结了之前多年商业化的硬件神经网络[18]。米斯拉(Misra)等人在2010年调研了从20世纪90年代起近20年的硬件神经网络[49]。
  在本文中,我们的目的不是探讨如何将神经网络硬件分类,而是展示神经网络硬件在近几年的发展成果。
  面向机器学习的人工神经网络硬件
  以机器学习相关任务为加速目的的研究多集中在多层感知器(Multilayer Perceptron, MLP)、深度神经网络、卷积神经网络。这三种网络具有相似的结构,在很多场景下具有很好的精度表现,应用也极为广泛。多层感知器的每一层都基本相同,将输入和相应权值相乘的结果相加,通过激活函数(如sigmoid(x)和tanh(x))后,从最后一层获得输出结果。典型的深度神经网络和卷积神经网络具有卷积层、降采样层(pooling)和分类层。最近又提出了归一化层,常见的有局部对比度归一化(LocalContrast Normalization, LCN)[34]和局部响应归一化(LocalResponse Normalization, LRN)[37]。近几年的发展趋势是网络(尤其是深度学习所用到的神经网络)越来越大,模型中的参数越来越多,数据也越来越多。
  这里当属谷歌的深度学习模型最有影响力。谷歌2012年左右在非常大的图像数据集上训练深度学习模型[65]。该模型具有10亿个神经元连接,数据集采用从网络上下载的1000万幅200&200大小的图片,在1000台16个核的机器上训练了3天。该模型在ImageNet数据集上识别22000个物体的准确率达到15.8%。
  图形处理器(GPU)能够提供强大并行计算能力的特性,这使其成为神经网络硬件加速平台的首选。欧(Oh)等人[52]早在2004年就已经通过将点积转化为矩阵操作,用以在GPU上加速神经网络。科茨(Coates)等人[15]的论文提出,GPU可以加速到90倍以上。GPU的流行促使出现了大量深度学习的软件框架,包括Caffe[35]、Theano、Torch、Cuda-convnet。而英伟达公司(NVIDIA)也推出了自己的深度学习库来配合以上各种框架,最大可以加速30%。百度公司目前已构建了世界上规模最大的人工神经网络模型。
  现场可编程门阵列(FPGA)的优点在于可以快速进行硬件的功能验证和评估,加快完成设计的迭代速度。但和专用集成电路(Application Specific Integrated Circuit, ASIC)相比,FPGA相对低效,这也限制了FPGA的应用范围。文献[53, 61]等在FPGA平台上开展了很多神经网络硬件的研究工作。云(Yun)等人[68]在2002年提出了基于传统单指令流多数据流结构的ERNA结构,在FPGA上实现了256-32-5(输入层有256个神经元、隐藏层有32个神经元、输出层有5个神经元)的多层感知器和反向传播训练算法。
  与深度神经网络相比,卷积神经网络的一大特性是卷积层占很大的运算量,而运算中的核(kernel)是被每对输入输出特征图像所共享的,这样使得卷积神经网络的权值总量远远低于同样大小的深度神经网络。共享核的特性也使得每个输出特征图像上的神经元所需要的输入图像上的神经元是重叠的。卷积核在输入图像上滑动,与相应区域的输入神经元进行卷积运算后得到输出神经元(加上bias偏置和激活函数)。法拉贝特(Farabet)等人[26]基于FPGA实现了卷积神经网络处理器(Convolutional Network Processor, CNP)。基于卷积神经网络处理器的人脸检测系统可以以10帧/秒的速度处理大小为512&384的视频图像。法拉贝特等人[25]在2011年提出并在2012年[55]开发了一种运行时可重构数据流处理器NeuFlow,并在Xilinx Virtex 6 FPGA上实现。实时处理测试表明,这种实现方式的加速比高出CPU 100倍,功耗在10W左右。桑卡拉达斯(Sankaradas)等人[57]在2009年用FPGA加速了卷积神经网络。卷积运算被重点关注,实现了多个k&k的卷积核运算单元和相应的降采样非线性函数,片外存储和大带宽的数据连接用来保证运算的数据供应。然而卷积核的大小非常不灵活。查克拉哈(Chakradhar)等人[11]在2010年采用systolic-like结构在200MHz的FPGA上实现了卷积神经网络协处理器,来实时处理VGA(640&480)视频图像(25~30的帧率)。佩曼(Peemen)等人[54]在2013年利用卷积神经网络的计算特性实现了卷积神经网络协处理器。其中,MicroBlaze作为主控处理器实现卷积神经网络特殊的数据需求,计算单元PE与单指令流多数据流的结构类似。与使用传统的高速暂存存储器(scratchpadmemory)的FPGA实现的处理器相比,利用卷积神经网络特性实现的处理器的资源开销是前者的1/13。
  采用自定制电路可以给予设计者最大的自由度去实现设计,同时硬件设计的取舍也很大程度上取决于设计者本身。菲姆(Pham)等人利用IBM的45nmSOI工艺库对NeuFlow[55]进行了评估,认为如果将NeuFlow实现为专用集成电路,其性能功耗比将达到490 GOPs/W1,远大于FPGA实现的14.7 GOPs/W和GPU的1.8 GOPs/W。
  ASIC可以采用数字电路、模拟电路或者混合设计。最早的模拟芯片如英特尔的ETANN[30],包含64个全连接的神经元和10240个权值连接。随后有很多在ETANN上的尝试,如Mod2Neurocomputer[50]将12个ETANN连接,实时处理图像。刘(Liu)等人[44]在2002年展示了包含前向通路与实时错误处理的CMOS2芯片,采用了Orbit2um的N-well工艺。早期也有大量工作采用了模拟电路。文献[42]等采用模拟数字混合电路实现神经网络硬件,这些工作中,或者输入是模拟的,或者计算操作是模拟的。模拟电路的问题在于精度难以控制,表示数据范围极为有限,且实现依赖设计人员的经验。数字芯片则不然,数字芯片这些年统治了芯片行业的发展。Micro Devices的MD1220[16]是第一款商用数字芯片。埃舍梅尔扎德(Esmaeilzadeh)在2010年提出了采用近似运算的硬件多层感知器的神经网络流处理器NnSP[24]。特曼(Temam)[63]在2012年报告了有一定容错能力的硬件多层感知器。子东(Zidong)[20]等人研究实现了非精确硬件神经网络。笔者所在的课题组近年来在这方面的一系列工作也得到了国际上的关注。
  生物启发的脉冲神经网络硬件
  尽管生物启发的神经网络很贴近真实的神经元细胞,但是它在机器学习任务上的低精度使其一直在工业界得不到应用。卷积神经网络方向的巨擘勒坎(LeCun)就曾经发表过类似的观点:&他们寄希望于复制我们所知晓的神经元和神经突触的所有细节,然后在一台超级计算机上模拟巨大神经网络,从而产生人工智能,这是幻想。&然而,很多研究人员仍然认为贴近生物特征的神经网络才是构建真正强人工智能的基石(而不是传统的机器学习类的人工神经网络)。
  脉冲放电是生物启发的神经网络里通用的概念。单个输入刺激所携带的信息通过一连串的脉冲传递到后续神经元。这样的编码方式通常分为两类(并没有清晰的定义),一类是将信息编码在脉冲的放电频率上,即频率编码(rate coding),这是研究多年的工作方式;另一类是强调单个脉冲放电的精确时间,即时间编码(temporal coding),它的难度也是不言而喻的。格斯特纳(Gerstner)[28]和索普(Thorpe)[64]在近些年提出了一些方法。究竟哪种编码方式更优?学术界一直争论不断。这也显示出我们对大脑工作机制的无知。
  在硬件实现上,有一类研究是采用新兴的忆阻器(memristor)来实现神经网络的构建[51, 62]。奎瑞利兹(Querilioz)等人所用的模型是MNIST测试集上精度最高的脉冲神经网络模型[56]。李(Lee)[41]等人采用了CMOSCrossNet结构。埃依曼兹(Eryilmaz)等人专门研究了采用非易失性存储器学习问题。史密斯(Smith)在2014年研究了如何采用硬件(数字电路)高效地实现不同的LIF神经元模型[60]。沃格尔斯坦(Vogelstein)等人[67]比较了不同的神经元模型的模拟实现。作为BrainScale项目的一部分,舍梅尔(Schemmel)[58]调查了Wafer-scale的脉冲神经网络。SpiNNaker[36]实现了10亿个神经元。
  近年来,生物启发的脉冲神经网络芯片方面引人瞩目的进展是IBM的SyNAPSE项目。2011年,塞欧(Seo)等人[59]提出了45nm的CMOS芯片;卡西迪(Cassidy)等人[10]提出了针对生物神经芯片的数字神经元模型实现方案;梅罗拉(Merolla)等人[47]提出了采用Crossbar结构的数字芯片,单个脉冲的能耗是45pJ。2014年,IBM发布了TrueNorth芯片[48](如图1所示)。TrueNorth的每个核都采用了Crossbar结构的静态随机存储器(SRAM),拥有256个输入神经元、256个输出神经元。每个芯片拥有4096个芯片核,总计100万个神经元,2.56亿个权值连接,共计采用54亿个晶体管。单个芯片平均放电频率为20Hz,单个神经元放电功耗低至26pJ,功耗低至65mW,远远低于传统芯片。IBM表示,将多个TrueNorth芯片连接起来可以提供更加强大的脉冲神经网络处理能力。
  TrueNorth从推出伊始就充满了争议,如勒坎表示&尽管文章令人印象深刻,但实际上没有实现任何有价值的东西&
  。Neuflow的作者卡伦西罗(Culurciello)表示&从计算性能功耗比的角度讲,和一般的数字芯片相比,TrueNorth并没有优势3,反而处于劣势地位&[17]。然而从学科发展的角度讲,我们认为TrueNorth显示了神经网络硬件潜在的优势,使得神经网络硬件受到更多的关注。
  寒武纪系列神经网络处理器
  我是一名计算机体系结构研究者,而我所在课题组(体系结构国家重点实验室未来计算课题组)的陈天石博士,他的研究背景是人工智能。于是,我们从2008年开始走上了体系结构和人工智能交叉研究的道路,探索神经网络硬件。最初,研究推进难度很大,进展速度并不快。很多前辈都提到过,交叉领域的研究要得到认可并不容易,要做很多&培育&性质的工作,例如让体系结构领域的研究者认识到人工智能的重要性。2012年陈天石等人提出的国际上首个人工神经网络硬件的基准测试集benchNN就是一个代表[12]。我们发现,体系结构领域经典的测试集PARSEC中的大部分程序都是分类、聚类、逼近、优化、滤波等应用,非常适合神经网络算法。BenchNN利用人工神经网络算法对PARSEC的核心代码进行了重构(如图2所示)。这项工作提升了人工神经网络处理速度,有效加速了通用计算,因而获得了IISWC&12 (IEEE International Symposium onWorkload Characterization)的最佳论文提名奖,有力地推动了国际体系结构学术圈对神经网络的接纳。
  局面打开之后,我们课题组立即推出了一系列寒武纪神经网络专用处理器4。当前寒武纪系列已包含三种处理器结构:DianNao(面向多种人工神经网络的原型处理器结构)[13]、DaDianNao(面向大规模人工神经网络)[14]和PuDianNao(面向多种机器学习算法)[43],如表1所示。在即将到来的2015 ACM/IEEE计算机体系结构国际会议(ACM/IEEEInternational Symposium on Computer Architecture, ISCA 2015)上,我们还将发布第四种结构:面向卷积神经网络的ShiDianNao[19] 。这一系列工作在2014年两获CCF推荐A类国际学术会议的最佳论文奖,并被《美国计算机学会通讯》(Communications of the ACM)遴选为研究亮点(researchhighlights)。
  寒武纪1号:DianNao
  陈天石等人提出的DianNao是寒武纪系列的第一个原型处理器结构[13],包含一个处理器核,主频为0.98GHz,峰值性能达每秒4520亿次神经网络基本运算(如加法、乘法等),65nm工艺下功耗为0.485W,面积3.02mm2(如图3所示)。在若干代表性神经网络上的实验结果表明,DianNao的平均性能超过主流CPU核的100倍,面积和功耗仅为CPU核的1/30~1/5,效能提升达三个数量级;DianNao的平均性能与主流通用图形处理器(NVIDIA K20M)相当,但面积和功耗仅为后者的百分之一量级。
  DianNao要解决的核心问题是如何使有限的内存带宽满足运算功能部件的需求,使运算和访存之间达到平衡,从而实现高效能比。其难点在于选取运算功能部件的数量、组织策略以及片上随机存储器(RAM)的结构参数。由于整个结构参数空间有上千万种选择,而模拟器运行速度不及真实芯片的十万分之一,我们不可能蛮力尝试各种可能的设计参数。为解决此问题,我们提出了一套基于机器学习的处理器性能建模方法,并基于该模型最终为DianNao选定了各项设计参数,在运算和访存间实现了平衡,显著提升了执行神经网络算法时的效能。
  即使数据已经从内存移到了片上,搬运的能耗依然非常高。英伟达公司首席科学家史蒂夫&凯科勒(SteveKeckler)曾经指出,在40nm工艺下,将64位数据搬运20毫米的能耗是做64位浮点乘法的数倍。因此,要降低处理器功耗,仅仅降低运算功耗是不够的,必须对片上数据搬运进行优化。我们提出了对神经网络进行分块处理,将不同类型的数据块存放在不同的片上随机存储器中,并建立理论模型来刻画随机存储器与随机存储器、随机存储器与运算部件、随机存储器与内存之间的搬运次数,进而优化神经网络运算所需的数据搬运次数。相对于CPU/GPU上基于缓存层次的数据搬运,DianNao可将数据搬运次数减少至前者的1/30~1/10。
  寒武纪2号:DaDianNao
  近年来兴起的深度神经网络在模式识别领域取得了很好的应用效果,但这类神经网络的隐层数量和突触数量远多于传统神经网络。例如,著名的谷歌大脑包括了100多亿个突触。百度采用的大规模深度学习神经网络包含200多亿个突触。急剧增长的神经网络规模给神经网络处理器带来了挑战。单个核已经难以满足不断增长的应用需求。将神经网络处理器扩展至多核成为自然之选。DaDianNao在DianNao的基础上进一步扩大了处理器的规模,包含16个处理器核和更大的片上存储(如图4所示),并支持多处理器芯片间直接高速互连,避免了高昂的内存访问开销。在28nm工艺下,DaDianNao的主频为606MHz,面积67.7 mm2,功耗约16W。单芯片性能超过了主流GPU 的21倍,而能耗仅为主流GPU的1/330。64芯片组成的计算系统的性能较主流GPU提升450倍,但总能耗仅为后者的1/150。
  寒武纪3号:PuDianNao
  神经网络已成为模式识别等领域的主流算法,但用户很多时候可能更倾向于使用其他一些经典的机器学习算法。例如程序化交易中经常使用线性回归这类可解释性好、复杂度低的算法。在此背景下,我们研发了寒武纪3号多用途机器学习处理器&&PuDianNao[43],可支持k-最近邻、k-均值、朴素贝叶斯、线性回归、支持向量机、决策树、神经网络等近10种代表性机器学习算法。在65nm工艺下,PuDianNao的主频为1GHz,峰值性能达每秒10560亿次基本操作,面积3.51 mm2,功耗为0.596W。PuDianNao运行上述机器学习算法时的平均性能与主流通用图形处理器相当,但面积和功耗仅为后者的百分之一量级。PuDianNao的结构设计主要有两个难点:运算单元设计和存储层次设计,分别对应于机器学习的运算特征和结构特征。其中运算单元设计的出发点是高效实现机器学习最频繁的运算操作,而存储层次设计则主要根据访存特征提高各机器学习算法中数据的片内重用,降低片外访存带宽的需求,充分发挥运算单元的计算能力,避免片外访存成为性能瓶颈。在运算单元设计方面,我们提出了一种机器学习运算单元(Machine Learning Unit, MLU)来支持各种机器学习方法中共有的核心运算,包括:点积(线性回归、支持向量机、神经网络)、距离计算(k-最近邻、k-均值)、计数(决策树和朴素贝叶斯)、排序(k-最近邻、k-均值)和非线性函数计算(支持向量机和神经网络)等。机器学习运算单元被分成了计数器、加法器、乘法器、加法树、Acc和Misc 6个流水线阶段,如图5所示。
  在存储层次设计方面,我们设计了HotBuf(HB)、ColdBuf (CB)和OutputBuf(OB) 3个片上数据缓存(见图6)。HotBuf存储输入数据,具有最短重用距离的数据。ColdBuf存放相对较长重用距离的输入数据。OutputBuf存储输出数据或者临时结果。这样设计的原因有两个:第一,在各种机器学习算法中,数据的重用距离通常可以分为两类或三类,因此设计了3个片上数据缓存;第二,机器学习算法中不同类型的数据读取宽度不同,因此设置了分开的缓存来降低不同的宽度带来的开销。
  类脑硬件未来之路
  不同流派的神经网络硬件在目标、手段和方法上都存在很大差别。但是选择哪条道路更好?我想分享一下自己的一些看法。
  从短期(3~5年)来看,基于传统CMOS的人工神经网络硬件加速器是一种比较稳健的选择。从算法研究的现状看,面向机器学习的人工神经网络在所有认知应用上的精度几乎都显著超过了同等规模的生物启发的脉冲神经网络。前者已经开始部署在不同类型的互联网应用上(图像、语音和文本的智能处理),而后者几乎没有得到工业应用。从一个硬件设计者的角度看,硬件的设计应该是算法驱动的。要想让硬件有生命力,什么算法效果好、用途广,硬件就应该支持什么算法。传统CMOS工艺是最稳定成熟的,适合短期内的硬件开发。忆阻器这样的新型器件所需要的工艺复杂,距离大规模实用化开发还有很长的路要走。如果把目标定得过高过远,可能会给这个领域的发展带来很大的风险。
  从中期(5~10年)来看,可能会出现面向机器学习的人工神经网络硬件和生物启发的脉冲神经网络硬件并存的情况。这些年以深度学习为代表的人工神经网络非常热门,但是它有应用上的局限性。在没有高层次语义层面指导的情况下,很多图像识别问题是深度学习难以解决的。最近12306网站新推出的图片验证码就可能是这样一类的问题。例如,它会询问一组图片中哪些是开心果,而这些图片中有的是一颗开心果果仁,有的则是装在一个食品包装袋中的没剥开的开心果。我认为,没有高层次语义层面的指导(去壳的和带壳的都是开心果),现有的深度学习技术几乎无法通过逐层的特征提取来把这两个不同的开心果图片识别出来。所以深度学习技术的发展可能会遇到瓶颈。另一方面,通过学术界的深入研究,生物启发的脉冲神经网络在5~10年内在精度问题上有可能会取得一定的突破(达到或接近深度学习的精度)。一旦如此,脉冲神经网络的优势就会充分发挥出来。脉冲神经网络硬件有很强的异步性,很多时候整个硬件中只有一小部分电路需要翻转,能耗会远远低于人工神经网络硬件。如果适合脉冲神经网络硬件的忆阻器的工艺成熟,脉冲神经网络硬件的能耗优势会进一步扩大。到那时,在很多极端看重低能耗的设备(如可穿戴设备)上,生物启发的脉冲神经网络硬件有可能发挥重要的作用。
  在更遥远的未来,神经网络硬件可能会在迈向强人工智能的路上起到比较重要的作用。真正的生物神经网络是和计算机科学家正在研究的人工神经网络乃至脉冲神经网络有极大的差别。计算机科学家所关心的神经网络是对生物神经网络进行的某种抽象。究竟什么样的抽象能保证神经网络支撑或者涌现强人工智能?对此谁心里也没有底。脉冲神经网络相对人工神经网络更接近生物,因为它能更多地体现神经元放电的时域信息,但是它也把很多分子、离子层面的信息过滤掉了,而这些信息绝非无足轻重。例如,生物学上常用于描述神经元的霍奇金-赫克斯利(Hodgkin-Huxley)方程(相关工作获得了诺贝尔奖)就对神经元离子层面上的行为进行了建模。没有人知道高级智能的涌现是否依赖于某种离子或者分子(或者基因)层面上的基本规律。所以,到底哪种神经网络硬件会胜出,很大程度上取决于我们对大脑的理解有多深刻。这也是为什么会有一些生物学家对类脑计算提出质疑。毕竟生物学对脑、神经环路以及神经元细胞的理解还不透彻,如何借鉴人脑进行计算自然会存在争议。
  不是结论
  深度学习的出现直接推动神经网络进入新的发展高峰期。同时,类脑计划也在各个国家火热开展。这一切,无论是希望能够高效地完成机器学习任务,还是朝着终极的强人工智能前进,神经网络硬件在提升计算能力的同时也在推进着模型的发展,这都将有力地促进相关学科的发展。■
  陈云霁
  CCF会员,2014 CCF青年科学家奖获得者。中国科学院计算技术研究所研究员。主要研究方向为计算机体系结构、集成电路设计和机器学习。
  脚注:
  1GOPS: Giga Operations Per Second,每秒10亿运算数。
  2CMOS: Complementary Metal Oxide Semiconductor,互补金属氧化物半导体。
  3卡伦西罗之所以认为TrueNorth功耗低,仅仅是因为它的频率(平均放电频率20Hz)比主流硬件(一般可达到1~3GHz)低约一亿倍。
  4寒武纪是生命爆炸性发展的时代,各种现代动物的祖先纷纷登场。我们给自己的项目起这个名字,是希望21世纪成为智能爆炸性发展的时代。
&参考文献:
相关新闻 & & &
& (06/30/:19)
& (05/13/:51)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款

我要回帖

更多关于 bp神经网络神经元个数 的文章

 

随机推荐