深度神经网络全面概述 下载本文

深度神经网络全面概述 从基本概念到实际模型和硬件基础

深度神经网络(DNN)所代表的人工智能技术被认为是这一次技术变革的基石(之一)。近日,由 IEEE Fellow Joel Emer 领导的一个团队发布了一篇题为《深度神经网络的有效处理:教程和调研(Efficient Processing of Deep Neural Networks: A Tutorial and Survey)》的综述论文,从算法、模型、硬件和架构等多个角度对深度神经网络进行了较为全面的梳理和总结。鉴于该论文的篇幅较长,机器之心在此文中提炼了原论文的主干和部分重要内容。

目前,包括计算机视觉、语音识别和机器人在内的诸多人工智能应用已广泛使用了深度神经网络(deep neural networks,DNN)。DNN 在很多人工智能任务之中表现出了当前最佳的准确度,但同时也存在着计算复杂度高的问题。因此,那些能帮助 DNN 高效处理并提升效率和吞吐量,同时又无损于表现准确度或不会增加硬件成本的技术是在人工智能系统之中广泛部署 DNN 的关键。

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

本文旨在提供一个关于实现 DNN 的有效处理(efficient processing)的目标的最新进展的全面性教程和调查。特别地,本文还给出了一个 DNN 综述——讨论了支持 DNN 的多种平台和架构,并强调了最新的有效处理的技术的关键趋势,这些技术或者只是通过改善硬件设计或者同时改善硬件设计和网络算法以降低 DNN 计算成本。本文也会对帮助研究者和从业者快速上手 DNN 设计的开发资源做一个总结,并凸显重要的基准指标和设计考量以评估数量快速增长的 DNN 硬件设计,还包括学界和产业界共同推荐的算法联合设计。

读者将从本文中了解到以下概念:理解 DNN 的关键设计考量;通过基准和对比指标评估不同的 DNN 硬件实现;理解不同架构和平台之间的权衡;评估不同 DNN 有效处理技术的设计有效性;理解最新的实现趋势和机遇。

一、导语

深度神经网络(DNN)目前是许多人工智能应用的基础 [1]。由于 DNN 在语音识别 [2] 和图像识别 [3] 上的突破性应用,使用 DNN 的应用量有了爆炸性的增长。这些 DNN 被部署到了从自动驾驶汽车 [4]、癌症检测 [5] 到复杂游戏 [6] 等各种应用中。在这许多领域中,DNN 能够超越人类的准确率。而 DNN 的出众表现源于它能使用统计学习方法从原始感官数据中提取高层特征,在大量的数据中获得输入空间的有效表征。这与之前使用手动提取特征或专家设计规则的方法不同。

然而 DNN 获得出众准确率的代价是高计算复杂性成本。虽然通用计算引擎(尤其是 GPU),已经成为许多 DNN 处理的砥柱,但提供对 DNN 计算更专门化的加速方法也越来越热门。本文的目标是提供对 DNN、理解 DNN 行为的各种工具、有效加速计算的各项技术的概述。

该论文的结构如下:

? ? ? ? ? ? ?

Section II 给出了 DNN 为什么很重要的背景、历史和应用。

Section III 给出了 DNN 基础组件的概述,还有目前流行使用的 DNN 模型。 Section IV 描述了 DNN 研发所能用到的各种资源。

Section V 描述了处理 DNN 用到的各种硬件平台,以及在不影响准确率的情况下改进吞吐量(thoughtput)和能量的各种优化方法(即产生 bit-wise identical 结果)。

Section VI 讨论了混合信号回路和新的存储技术如何被用于近数据处理(near-data processing),从而解决 DNN 中数据流通时面临的吞吐量和能量消耗难题。

Section VII 描述了各种用来改进 DNN 吞吐量和能耗的联合算法和硬件优化,同时最小化对准确率的影响。 Section VIII 描述了对比 DNN 设计时应该考虑的关键标准。

二、深度神经网络(DNN)的背景

在这一部分,我们将描述深度神经网络(DNN)在人工智能这个大框架下的位置,以及一些促进其发展的的概念。我们还将对其主要的发展历程和现阶段主要的应用领域做一个简单的介绍。

1. 人工智能和深度神经网络

根据 John McCarthy 的论述,深度神经网络(也称为深度学习)是人工智能(AI)大框架下的一部分。而人工智能(AI)是利用科学与工程学创造具有如同人类那样能实现目标的智能机器。人工智能这个词就是这位计算机科学家在上个世纪 50 年代所创造出的。深度学习和整个人工智能的关系就如下图所示。

图 1:深度学习在人工智能大框架下的位置

2. 神经网络和深度神经网络(DNN)

神经网络从神经元涉及对输入值求加权和进行计算这一概念而获得灵感。这些加权和对应于突触完成值的缩放以及其和神经元值间的组合。此外,因为计算与神经元级联相关联,并且其为简单线性代数的运算,所以神经元不会仅仅输出加

权和。相反,在神经元中有函数执行组合输入的运算,而这种函数应该是非线性运算。在非线性运算的过程中,神经元只有在输入超过一定阀值时才生成输出。因此通过类比,神经网络将非线性函数运用到输入值的加权和中。我们等一下会描述一些非线性函数。

图 2:简单的神经网络例子。(a) 神经元和突触,(b) 为每一层计算加权和,(c) 前向和反向(循环)网络,(d) 全连接与

稀疏

(a)中展示了计算神经网络的示意图。图的前端是输入层,该层会接受输入数据值。这些数据值前向传播到神经网络中间层的神经元中,中间层也常称为神经网络的隐藏层。一个或多个隐藏层的加权和最终前向传播到输出层,该输出层会最终向用户呈现神经网络的输出结果。为了将脑启发的术语和神经网络相匹配,神经元的输出通常称为激活(activation),并且突触如(a)所示通常称为权重(weight)。

在上方表达式中,W_ij 代表着权重、x_i 为输入激活、y_i 是输出激活,而 f(·) 就代表着在 III-2 中描述的非线性激活函数。

在神经网络的领域内,有一门称为深度学习的研究。普通神经网络基本上层级不会很多,而在深度学习里,神经网络的层级数量十分巨大,现如今基本上神经网络可以达到 5 到 1000 多层。 3. 推理 vs 训练

这一节中,如图 4 所示,我们将把图像分类用作训练 DNN 的一个强劲的实例。评估 DNN 时,我们输入一个图像,DNN 为每一个对象分类输出分值向量;分值最高的分类将成为图像中最有可能的对象分类。训练 DNN 的总体目标是决定如何设置权重以最大化正确分类(来自标注的训练数据)的分值并最小化其他不正确分类的分值。理想的正确分值与 DNN 基于其当前权重计算的分值之间的差被称为损失值(L)。因此训练 DNN 的目标是找到一组权重以最小化大型数据集中的平均损失值。

图 4:图像分类任务

4. 开发历史

? ? ? ? ? ? ?

1940 年代 - 神经网络被提出 1960 年代 - 深度神经网络被提出 1989 年 - 识别数字的神经网(LeNet)出现 1990 年代 - 浅层神经网硬件出现(Intel ETANN) 2011 年 - DNN 语音识别取得突破性进展(Microsoft) 2012 年 - 用于视觉的 DNN 开始替代人工放大(AlexNet) 2014 年+ - DNN 加速器研究兴起(Neuflow、DianNao 等等)

图 5 的表柱是这些年来 ImageNet 竞赛中每届冠军的表现。你可以看到最初算法精确度的错误率在 25% 或更多。2012 年,多伦多大学的 AlexNet 团队通过 GPU 来提升其计算能力并采用深度神经网络方法,把错误率降低了近 10% [3]。他们的成功带来了深度学习风格的算法的井喷,以及图像识别技术的持续进步。