DNN综述
本slide主要是DNN中的一些概念介绍和名词解释。
slide链接
https://www.rle.mit.edu/eems/wp-content/uploads/2019/06/Tutorial-on-DNN-01-Overview.pdfwww.rle.mit.edu1 深度神经网络背景
![5e97df0c3ab51891ad0ebe7320ce79ed.png](https://img-blog.csdnimg.cn/img_convert/5e97df0c3ab51891ad0ebe7320ce79ed.png)
机器学习是人工智能的重要内容之一,脑启发计算是机器学习的方法之一,spiking是脑启发计算的方法之一,它的原理是模仿大脑工作。
![f288823bcb619afff30de3464790e560.png](https://img-blog.csdnimg.cn/img_convert/f288823bcb619afff30de3464790e560.png)
spiking架构的典型芯片是IBM的TrueNorth。TureNorth芯片包含64x64个核心,每个核心由几部分组成:片上SRAM、神经元neuron、符号控制逻辑、调度器和路由组成。右侧ABCD是它的工作原理
![0cd94fa94c5881ccb7ea19e7fb1cbe40.png](https://img-blog.csdnimg.cn/img_convert/0cd94fa94c5881ccb7ea19e7fb1cbe40.png)
脑启发计算还有一种重要的方法就是神经网络
![280cb9818d70c34b0fbf973cf3b57293.png](https://img-blog.csdnimg.cn/img_convert/280cb9818d70c34b0fbf973cf3b57293.png)
神经网络实现了权重的相加,输入为来自上一个神经元的轴突x0、x1.。。。,权重为本神经元的突触w0、w1.。。。神经细胞体就是求和公式,所有轴突突触的乘积和加上偏置b。输出轴突为细胞体结果经过激活函数的值。
![d0c0a1f96f6225b4c148f3c3b95ee679.png](https://img-blog.csdnimg.cn/img_convert/d0c0a1f96f6225b4c148f3c3b95ee679.png)
神经网络有很多权重,分布于输入层、隐藏层和输出层。图中是全连接的情况,即每个神经元和上一层神经元的所有输出相关。
![978404d45fb9b17dbc3bc44cc496d190.png](https://img-blog.csdnimg.cn/img_convert/978404d45fb9b17dbc3bc44cc496d190.png)
深度学习是神经网络中的一个重要方法。
![978b24d01d373e6d7a5be6991a96321a.png](https://img-blog.csdnimg.cn/img_convert/978b24d01d373e6d7a5be6991a96321a.png)
深度学习中的层可以看做是神经元集合
![27947d14fd5c19ccb7f236d91038c3d7.png](https://img-blog.csdnimg.cn/img_convert/27947d14fd5c19ccb7f236d91038c3d7.png)
权重可以看做是突触集合
![7d395ab7a568a9d7e173ff59b1d41a9a.png](https://img-blog.csdnimg.cn/img_convert/7d395ab7a568a9d7e173ff59b1d41a9a.png)
每个突触都有自己的权重。
![a4cb4b882864198ae0c30e24636c825f.png](https://img-blog.csdnimg.cn/img_convert/a4cb4b882864198ae0c30e24636c825f.png)
多个突触使用相同的权重值称为权重共享
![7d6e31f4e81ff53065d4d231825baab0.png](https://img-blog.csdnimg.cn/img_convert/7d6e31f4e81ff53065d4d231825baab0.png)
L1层的神经元输入为输入层比如图像像素,L1层神经元输出为经过激活函数后的值
![e7e2e6ff17fb51952e4f52dd0ed24611.png](https://img-blog.csdnimg.cn/img_convert/e7e2e6ff17fb51952e4f52dd0ed24611.png)
L2层同理
![954c91c995baf5b5e6a9509d729433fe.png](https://img-blog.csdnimg.cn/img_convert/954c91c995baf5b5e6a9509d729433fe.png)
全连接:所有的输入神经元都连接到所有的输出神经元
稀疏连接:非全连接
![c0ca4bc063c8e94ff5bb90b125945d81.png](https://img-blog.csdnimg.cn/img_convert/c0ca4bc063c8e94ff5bb90b125945d81.png)
前馈:参数向前传递
反馈:参数向自身传递
![0838bbcd039ee13694d4762c28fca969.png](https://img-blog.csdnimg.cn/img_convert/0838bbcd039ee13694d4762c28fca969.png)
当前DNN流行的类型:
全连接神经网络,也叫作MLP,是一个前馈的网络
卷积神经网络CNN,前馈网络,具有稀疏连接、共享权重的特性
循环神经网络RNN,反馈网络
长短期记忆网络LSTM,反馈网络和存储的属性
![85aa1d8bca21a5eba8f0ab4ff9fec8ac.png](https://img-blog.csdnimg.cn/img_convert/85aa1d8bca21a5eba8f0ab4ff9fec8ac.png)
训练:训练的目的是决定权重,可分为
监督:有用于训练的带标签数据集,包含输入和输出
无监督/自监督:没有带标签的训练数据集
半监督:训练集中有一部分带标签的数据
增强(强化)学习:通过奖励和惩罚来评估输出
推理:推理是使用权重来决定输出
深度卷积神经网络
![95ebefc76f41bc9d1a85378960bc6fe7.png](https://img-blog.csdnimg.cn/img_convert/95ebefc76f41bc9d1a85378960bc6fe7.png)
当前的深度卷积神经网络可能包含了5~1000层的卷积层,在最后使用1~3层的全连接层,最后得出分类结果。
![1961b3782a3de1a27efa89a4a5ab0b7b.png](https://img-blog.csdnimg.cn/img_convert/1961b3782a3de1a27efa89a4a5ab0b7b.png)
卷积层主要完成卷积和卷积结果经过激活函数后的值
![d6c8fccdcfafc3ec48a6e3e09b753ac4.png](https://img-blog.csdnimg.cn/img_convert/d6c8fccdcfafc3ec48a6e3e09b753ac4.png)
全连接层主要完成全连接计算以及结果经过激活函数后的值
![ca77451e2a964c94a96bc2a3ecfda0ba.png](https://img-blog.csdnimg.cn/img_convert/ca77451e2a964c94a96bc2a3ecfda0ba.png)
在卷积层之间或卷积层和全连接层之间可以插入归一化处理和池化Pooling来优化整个深度神经网络
![47312a25b6051e16b96c7d7a754f6895.png](https://img-blog.csdnimg.cn/img_convert/47312a25b6051e16b96c7d7a754f6895.png)
卷积大约占了所有计算量的90%,决定了运行时长和能耗。
![c578a6cbd67d56b830f4611c2bf3545c.png](https://img-blog.csdnimg.cn/img_convert/c578a6cbd67d56b830f4611c2bf3545c.png)
卷积层完成filter(由权重组成的矩阵)和输入特征图fmap矩阵进行元素乘(element-wise)的计算。即输出的结果为两个矩阵对应位置每个元素相乘的部分和累加。
![cd15f84789ccdd41f2f48369bf01d457.png](https://img-blog.csdnimg.cn/img_convert/cd15f84789ccdd41f2f48369bf01d457.png)
由于filter矩阵规模小(RxS),特征图矩阵规模大(HxW),所以采用滑动窗口的方法处理得到输出特征图矩阵(ExF)
![9d1dd6dc4bbdd94655da233d3b475ffb.png](https://img-blog.csdnimg.cn/img_convert/9d1dd6dc4bbdd94655da233d3b475ffb.png)
如果特征图有多个通道(C个),那么同时也需要C个filter来进行卷积,这C个一对矩阵元素乘的结果的部分和为输出特征图矩阵的一个元素。
![90983befa22bc8a6046650a178bd9b7b.png](https://img-blog.csdnimg.cn/img_convert/90983befa22bc8a6046650a178bd9b7b.png)
如果filter有M组(每组C个矩阵),那么可以得到一个通道数为M的输出特征图矩阵,即输出fmap的通道数C由filter的组数M决定,即本卷积层的M为下一卷积层的C。
![625d06b8c11a15fc23d690917a508d7d.png](https://img-blog.csdnimg.cn/img_convert/625d06b8c11a15fc23d690917a508d7d.png)
如果输入特征图有N组(每组C个矩阵),filter还是M组(每组C个矩阵),则可以得到N组通道数为M的输出特征图矩阵。N表示同时处理多少批图片,一般也称为batch size
![4ff1c1918b2484d8249a5c17e48e0a72.png](https://img-blog.csdnimg.cn/img_convert/4ff1c1918b2484d8249a5c17e48e0a72.png)
由上可知,filter和输入fmap的通道数必定一样,输入fmap和输出fmap的组数必定一样,filter的组数和输出fmap的通道数必定一样。
![6822e78d79e8a1713924ffb0d6580eb8.png](https://img-blog.csdnimg.cn/img_convert/6822e78d79e8a1713924ffb0d6580eb8.png)
以上卷积过程用公式表示就如图中所示。
![2aff81a41127689a7a89390e6a9c7e7c.png](https://img-blog.csdnimg.cn/img_convert/2aff81a41127689a7a89390e6a9c7e7c.png)
用软件简单实现需要7层循环完成卷积层的计算,外四层为输出fmap的循环,内三层为filter和输入fmap的乘法累加计算。
激活函数
![e43f1fdba536217e505dd392ee8eed1b.png](https://img-blog.csdnimg.cn/img_convert/e43f1fdba536217e505dd392ee8eed1b.png)
传统的激活函数Sigmoid和双曲正切
![33ebd1d0e3f72b8fb388a00e42fcefaf.png](https://img-blog.csdnimg.cn/img_convert/33ebd1d0e3f72b8fb388a00e42fcefaf.png)
当前流行的激活函数ReLU及其衍生(为了解决梯度消失问题)
![53801fc31cc34ac429c832c464e34996.png](https://img-blog.csdnimg.cn/img_convert/53801fc31cc34ac429c832c464e34996.png)
全连接层和卷积层的计算基本一致
![68140099f59dbfc5c955c963a9a4f616.png](https://img-blog.csdnimg.cn/img_convert/68140099f59dbfc5c955c963a9a4f616.png)
输出fmap的规模为MxN,filter和输入fmap的规模一样大
![eb9d3e53fcd0fca63851eaaa0c17dd42.png](https://img-blog.csdnimg.cn/img_convert/eb9d3e53fcd0fca63851eaaa0c17dd42.png)
Pooling层主要完成下采样,可以独立的减少每个通道的特征图规模
根据stride的大小也可以决定有没有overlap。
![784d6b96e3ea2929a738ded5713ab17b.png](https://img-blog.csdnimg.cn/img_convert/784d6b96e3ea2929a738ded5713ab17b.png)
上图为max-pooling的简单软件实现有6层循环,内两层是找到窗口的最大值保存。
![5a6e8bb3c1ffeefbb973d7655fcb2b8e.png](https://img-blog.csdnimg.cn/img_convert/5a6e8bb3c1ffeefbb973d7655fcb2b8e.png)
归一化层主要是批处理的归一化处理(BN),归一化后均值为0,标准差为1,一般认为使用BN可以提高精度,并且可以加速DNN的训练
![76b0c097e6d87cc8ef1f53f92ca8b8db.png](https://img-blog.csdnimg.cn/img_convert/76b0c097e6d87cc8ef1f53f92ca8b8db.png)