正在加载图片...
·324· 智能系统学报 第15卷 获得了超过人类的认知和分类水平。然而像典 庞大的逻辑和存储空间配套,这不利于大规模并 型的分类网络VGG-16,需要15.5G次乘加操作 行,尤其是在FPGA设备上不能将乘法器资源充 和138M的参数量),巨大的计算量和参数量使 分利用,并且这些设计对于计算量密集的卷积计 得卷积神经网络的实际应用困难重重。 算,最终体现出的加速效果也一般,性价比并不高。 如何加速卷积神经网络计算,近年来一直是 针对这些问题,提出了一种利用稀疏性加速 个活跃的研究领域。文献[3]研究了卷积神经网 计算同时并行效率极高、额外资源开销较小的并 络的加速基本方法,并分析了加速设计的性能瓶 行展开方法,设计并实现了能够高效利用稀疏性 颈。文献[4]比较了各种典型的并行展开方法, 加速计算的卷积神经网络加速器。对于卷积层, 提出了适合实时卷积神经网络计算的数据流结 我们通过使用内核脉动阵列展开与特征图平铺展 构。文献[5]设计了多个卷积层处理器,分别加 开结合的并行展开方式,在有效利用激活稀疏性 速不同的卷积层。文献[6]比较了不同的卷积计 减少计算量加速计算的同时,降低了并行计算负 算展开方式,并提出了有效的数据复用和资源展开 载失衡对加速效果的影响;对于全连接层,我们 方法。 选择使用压缩稀疏列的计算方式,同时利用激活 然而仅从计算性能和带宽瓶颈上入手对加速 稀疏性和参数稀疏性,明显的降低了参数量和计 卷积神经网络计算来说还远远不够,有效利用神 算量。 经网络本身的稀疏性,能够从算法层面大大加快 网络计算速度。卷积神经网络的稀疏性体现在 1卷积神经网络的稀疏性 激活结果和网络参数两个方面。 自然界中的神经系统本身是稀疏的),卷积 文献[8]利用激活稀疏性压缩了激活结果中 神经网络本身也是稀疏的。卷积神经网络的稀疏 的零值,节省了传输带宽开销并降低了计算功 性体现在激活结果和网络参数的两个方面。 耗。文献[9]利用激活稀疏性对卷积计算激活结 卷积神经网络的激活结果是稀疏的。卷积神 果压缩编码,在次层计算中跳过激活输入中的零 经网络使用非线性激活函数模仿了生物中神经元 值降低了卷积神经网络计算量。文献[10]利用参 的放电方式,近年来被广泛使用的ReLU激活 数稀疏性,将激活输入中权重无效的输入别除, 函数将所有负值激活为零,给卷积神经网络的激 降低了卷积神经网络计算量。文献[11]同时利用 活结果带来了显著的稀疏性I。例如AlexNet中 激活稀疏性和参数稀疏性,实时选择激活输入中 卷积层有19%~63%的激活结果是06,而对0进 的有效值广播给所有PE,PE独立索引,将有效的 行乘累加对计算结果没有任何影响,跳过这部分 激活输入和权重的乘积累加到对应位置完成卷积 的无效计算,就能给卷积神经网络加速器带来明 计算,有效降低了网络计算量和参数量。文 显的性能提升。 献[12]同时利用激活稀疏性和参数稀疏性,PE内 卷积神经网络的网络参数是冗余的。卷积神 使用笛卡尔乘积的方法,完成稀疏激活输入与稀 经网络使用了大量的参数来保证网络足够的复杂 疏权重的乘积,再将乘积结果还原到对应位置进 度和表现力,然而大量实验证明,增加参数量并 行累加完成卷积计算,有效降低了网络计算量和 不一定能提升网络效果,甚至会带来网络的过拟 参数量。 合。特别地,虽然卷积神经网络的全连接层占 尽管这些方法都能在一定程度上利用卷积神 用了绝大部分的参数量,却仅贡献了非常小的计 经网络的稀疏性优化计算,但是我们注意到它们 算量。例如VGG-16中全连接层使用了89.4%的 很难兼顾计算灵活性、并行效率和资源开销。文 参数,却仅仅占用了0.8%的计算量。实验证明全 献[8]虽然利用激活稀疏性压缩了激活结果,但 连接层的连接是非常稀疏的,能够在不损失网络 受制于计算方式的规整,实际上并没有将它用于 精度的情况下,通过剪枝移除超过90%的全连接 降低计算量。文献[9-10]、[12]没有对并行计算负 层连接。 载失衡导致的性能损失问题进行优化,进行卷积 如图I所示,实验随机选取了ImageNet数据 计算时平均有20%~40%的性能损失在负载失衡 集中的500张图,直接使用VGG-16网络不做任 上四。文献[1)只对输出特征图方向进行了并行 何优化的原始基础参数,统计了每一层的激活输 展开,在计算输出特征图较少的卷积层时不能完 入稀疏性。实验结果表明,对比VGG-16基准网 全利用计算性能,并行效率受到明显影响。文 络模型,在理想情况下利用激活稀疏性能够降低 献[10-12]为了利用参数稀疏性,每个PE都需要 50.92%的计算量。获得了超过人类的认知和分类水平[1]。然而像典 型的分类网络 VGG-16,需要 15.5 G 次乘加操作 和 138 M 的参数量[2] ,巨大的计算量和参数量使 得卷积神经网络的实际应用困难重重。 如何加速卷积神经网络计算,近年来一直是 个活跃的研究领域。文献 [3] 研究了卷积神经网 络的加速基本方法,并分析了加速设计的性能瓶 颈。文献 [4] 比较了各种典型的并行展开方法, 提出了适合实时卷积神经网络计算的数据流结 构。文献 [5] 设计了多个卷积层处理器,分别加 速不同的卷积层。文献 [6] 比较了不同的卷积计 算展开方式,并提出了有效的数据复用和资源展开 方法。 然而仅从计算性能和带宽瓶颈上入手对加速 卷积神经网络计算来说还远远不够,有效利用神 经网络本身的稀疏性,能够从算法层面大大加快 网络计算速度[7]。卷积神经网络的稀疏性体现在 激活结果和网络参数两个方面。 文献 [8] 利用激活稀疏性压缩了激活结果中 的零值,节省了传输带宽开销并降低了计算功 耗。文献 [9] 利用激活稀疏性对卷积计算激活结 果压缩编码,在次层计算中跳过激活输入中的零 值降低了卷积神经网络计算量。文献 [10] 利用参 数稀疏性,将激活输入中权重无效的输入剔除, 降低了卷积神经网络计算量。文献 [11] 同时利用 激活稀疏性和参数稀疏性,实时选择激活输入中 的有效值广播给所有 PE,PE 独立索引,将有效的 激活输入和权重的乘积累加到对应位置完成卷积 计算,有效降低了网络计算量和参数量。文 献 [12] 同时利用激活稀疏性和参数稀疏性,PE 内 使用笛卡尔乘积的方法,完成稀疏激活输入与稀 疏权重的乘积,再将乘积结果还原到对应位置进 行累加完成卷积计算,有效降低了网络计算量和 参数量。 尽管这些方法都能在一定程度上利用卷积神 经网络的稀疏性优化计算,但是我们注意到它们 很难兼顾计算灵活性、并行效率和资源开销。文 献 [8] 虽然利用激活稀疏性压缩了激活结果,但 受制于计算方式的规整,实际上并没有将它用于 降低计算量。文献 [9-10]、[12] 没有对并行计算负 载失衡导致的性能损失问题进行优化,进行卷积 计算时平均有 20%~40% 的性能损失在负载失衡 上 [12]。文献 [11] 只对输出特征图方向进行了并行 展开,在计算输出特征图较少的卷积层时不能完 全利用计算性能,并行效率受到明显影响。文 献 [10-12] 为了利用参数稀疏性,每个 PE 都需要 庞大的逻辑和存储空间配套,这不利于大规模并 行,尤其是在 FPGA 设备上不能将乘法器资源充 分利用,并且这些设计对于计算量密集的卷积计 算,最终体现出的加速效果也一般,性价比并不高。 针对这些问题,提出了一种利用稀疏性加速 计算同时并行效率极高、额外资源开销较小的并 行展开方法,设计并实现了能够高效利用稀疏性 加速计算的卷积神经网络加速器。对于卷积层, 我们通过使用内核脉动阵列展开与特征图平铺展 开结合的并行展开方式,在有效利用激活稀疏性 减少计算量加速计算的同时,降低了并行计算负 载失衡对加速效果的影响;对于全连接层,我们 选择使用压缩稀疏列的计算方式,同时利用激活 稀疏性和参数稀疏性,明显的降低了参数量和计 算量。 1 卷积神经网络的稀疏性 自然界中的神经系统本身是稀疏的[13] ,卷积 神经网络本身也是稀疏的。卷积神经网络的稀疏 性体现在激活结果和网络参数的两个方面。 卷积神经网络的激活结果是稀疏的。卷积神 经网络使用非线性激活函数模仿了生物中神经元 的放电方式[14] ,近年来被广泛使用的 ReLU 激活 函数将所有负值激活为零,给卷积神经网络的激 活结果带来了显著的稀疏性[15]。例如 AlexNet 中 卷积层有 19%~63% 的激活结果是 0 [16] ,而对 0 进 行乘累加对计算结果没有任何影响,跳过这部分 的无效计算,就能给卷积神经网络加速器带来明 显的性能提升。 卷积神经网络的网络参数是冗余的。卷积神 经网络使用了大量的参数来保证网络足够的复杂 度和表现力,然而大量实验证明,增加参数量并 不一定能提升网络效果,甚至会带来网络的过拟 合 [17]。特别地,虽然卷积神经网络的全连接层占 用了绝大部分的参数量,却仅贡献了非常小的计 算量。例如 VGG-16 中全连接层使用了 89.4% 的 参数,却仅仅占用了 0.8% 的计算量。实验证明全 连接层的连接是非常稀疏的,能够在不损失网络 精度的情况下,通过剪枝移除超过 90% 的全连接 层连接[18]。 如图 1 所示,实验随机选取了 ImageNet 数据 集中的 500 张图,直接使用 VGG-16 网络不做任 何优化的原始基础参数,统计了每一层的激活输 入稀疏性。实验结果表明,对比 VGG-16 基准网 络模型,在理想情况下利用激活稀疏性能够降低 50.92% 的计算量。 ·324· 智 能 系 统 学 报 第 15 卷
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有