执行 DNN 推断处理的嵌入平台有着严格的能耗、计算和存储成本限制。当 DNN 推断在云中执行时,语音识别等应用经常有强烈的延迟需求。因此,在本文中,我们将聚焦于推断处理而不是训练的计算需求。 III. 深度神经网络概述 根据应用情况不同,深度神经网络的形态和大小也各异。流行的形态和大小正快速演化以提升模型准确性和效率。所有深度神经网络的输入是一套表征网络将加以分析处理的信息的值。这些值可以是一张图片的像素,或者一段音频的样本振幅或者某系统或者游戏状态的数字化表示。 处理输入的网络有两种主要形式:前馈以及循环(图 2c)。前馈网络中,所有计算都是在前一层输出基础上进行的一系列运作。最终一组运行就是网络的输出,比如,这张图片包括某个特定物体的概率是多少,某段音频出现某个单词的概率是多少,或者下一步行动的建议等。在这类深度神经网络中,网络并无记忆,输出也总是与之前网络输入顺序无关。 相反,循环网络(LSTM 是一个很受欢迎的变种)是有内在记忆的,允许长期依存关系影响输出。在这些网络中,一些中间运行生成的值会被存储于网络中,也被用作与处理后一输入有关的其他运算的输入。在这篇文章中,我们关注的是前馈网络,因为到目前为止,少有人关注硬件加速,特别是循环网络的。 深度神经网络也可以是全连接的(FC,也指多层感知器),如图 2(d)最左部分所示。在一个全连接层中,所有输出与所有输入都是相连接的。这需要相当数量的存储和计算空间。谢天谢地,在许多应用中,我们可以移除激活(activations)之间的一些连接,方法就是将权重设置为零而不影响准确性。结果会产生一个稀疏连接层。图 2(d)最右端的层就是一个稀疏连接层。 通过限制对结果有影响的权重数量,我们也可以实现更高效的计算。如果每个输出仅仅是一个固定大小输入窗口的函数,就会出现这类结构化稀疏性。如果这套权重被用于每一个输入计算,就会进一步提高效率。这一权重共享能显著降低权重的存储要求。 通过将计算构建为卷积,一种非常流行的窗口式的权重共享的网络诞生了,如图 6(a) 所示,其仅使用少量临近的激活来计算加权和的输出(即,该过滤器有一个有限的接受域,与输入的距离超过特定值的所有权重都将被设置为 0),而且这一套权重能被每个输入共享来计算(即,滤波器是空间不变的)。这种结构稀疏性的形式正交于源自网络(修改情况如本文部分 VII-B2 所述)的稀疏性。所以,卷积神经网络就是一种受欢迎的深度神经网络形式 [35]。 1) 卷积神经网络(CNN) 图 6:卷积的维度。(a) 传统图像处理中的二维卷积,(b) CNN 中的高维卷积 图 7:卷积神经网络 表 1:CONV/FC 层的形状参数 给定表 I 中的形状参数(shape parameters),卷积层的计算可以定义为: 2)非线性(Non-Linearity) 图 8:多种形式的非线性激活函数(来自 Caffe Tutorial [43]) 3)池化(Pooling) 图 9:多种形式的池化(来自 Caffe Tutorial [43]) 4)归一化(Normalization) 控制输入在层级中的分布能显著地加快训练速度并提升准确度。因此,输入激活在层级上的分布(σ, µ)需要归一化处理,使其变换为均值为 0、标准差为 1 的分布。在批量归一化(batch normalization)中,归一化值如方程(2)所示将进一步缩放和平移,参数(γ, β)是从训练 [44] 中学到的两个小常数,它们能避免数值问题。 A. 流行的 DNN 模型 (责任编辑:本港台直播) |