DNN tutorial 2017 导读

本文主要讨论以下几个问题:

  • DNN设计关键考虑因素
  • 对比不同DNN硬件的性能
  • 理解不同架构和平台间的折中
  • 评估不同DNN设计程序的处理效率
  • 了解最近的趋势

DNN(Deep Neural Network)背景

各种概念之间的关系可以用下图1来表示。其中类脑计算中又有两个分支。一个是spiking,以微软的TrueNorth芯片为代表,是模仿人脑的工作模式,打破了现有的冯诺依曼结构的新的计算结构。另一种是神经网络,其中包含了深度学习。这也就是本文讨论的重点。

DNN tutorial 2017 导读_第1张图片
1.Deep learning在人工智能中的概念

DNN概述

在DNN中,主要有以下几种计算:
(1)卷积
DNN的卷积主要如图2。


DNN tutorial 2017 导读_第2张图片
2. CNN中的高维卷积

(2)非线性
一般常用的非线性为ReLU。一些常见的非线性函数如图3所示。


DNN tutorial 2017 导读_第3张图片
3. 非线性函数

(3)池化
池化层可以减少网络中参数的个数。池化的方法如图4所示。
DNN tutorial 2017 导读_第4张图片
4. 池化

(4)归一化

归一化用来控制输入的分布,这样可以提高训练的速度和准确度。最常用的是batch normalization,其公式如下。



其中σ和μ是输入的概率分布,参数γ和β是需要训练的。

DNN模型

  1. LeNet
    这是第一个流行的DNN。
  2. AlexNet
  3. Overfeat
  4. VGG-16
  5. GoogLeNet
  6. ResNet
    各模型的比较如下图5。
DNN tutorial 2017 导读_第5张图片
5. SUMMARY

其中表现出来的趋势为:

  1. 网络的深度不断增加。
  2. 权重的数量受到控制。
  3. filter的大小根据不同的层而改变,灵活性要求更高。
  4. 大部分的计算资源用于卷积。

DNN数据集

  1. MNIST
    手写数字数据集
  2. DIFAR
    32*32彩色图片
  3. ImageNet
    1000多类的256*256彩色图片

DNN硬件

1. 加速计算方法

对于全连接,相乘卷积用矩阵相乘来表示。对于卷积计算,可以用Teaplitz matrix来表示。分别如图6和图7所示。

DNN tutorial 2017 导读_第6张图片
6. 全连接层
DNN tutorial 2017 导读_第7张图片
7. 卷积层

图7中,如果是传统的卷积方式,其中会存在很多重复的存储,化为Teaplitz矩阵(对角线常数)后便可直接进行矩阵运算。
卷积可以用FFT来做,但是它的益处会随着filter大小的减小而减小。减小计算量但是加大存储量。

加速的低功耗的数据流

在DNN中,主要是片外DRAM与片内的数据传输需要消耗大量的能量,因而,可以通过建立多级缓存的方式来节能。其中会有很多数据复用的地方。如图8所示。

DNN tutorial 2017 导读_第8张图片
8. DNN中的数据复用

近数据处理器

DRAM

为了减少功耗,提高数据的传输带宽,可以考虑将存储器做成3维,这样就有了Micron’s Hyper Memory Cube(HMC)

SRAM

可以考虑让存储器既可以存储数据又可以进行乘法的运算,这样就可以节省数据流的功耗,又可以提高计算速度。 如图9(a)所示。

DNN tutorial 2017 导读_第9张图片
9. 模拟计算:(a)SRAM bit-cell(b)non-volatile resistance memory

非易失性存储器

思路记录

对于卷积神经网络加速,主要有以下几种思路:

  1. 数据流入手,数据复用
    WS
    OS
    NLR
    RS
  2. 存储器入手,减少计算
  3. 减少精度
    位宽限制 quantization3种
    浮点数,定点数
  4. 模型处理
    二值化等
  5. 压缩
    权重编码
    稀疏性
    剪枝

你可能感兴趣的:(DNN tutorial 2017 导读)