目录

1 卷积神经网络介绍

1.1 卷积神经网络的雏形

1.2 全连接层

1.2.1 BP神经网络的实例

1.3 卷积层

1.4 池化层

2 反向传播过程

2.1 误差的计算

2.2 误差的反向传播

2.3 权重的更新


1 卷积神经网络介绍

1.1 卷积神经网络的雏形

CNN和BP神经网络区别 cnn神经网络和bp神经网络_神经网络


1.2 全连接层

CNN和BP神经网络区别 cnn神经网络和bp神经网络_卷积核_02

输入乘以权重求和加上偏置,通过一个激励函数即可得到输出:

CNN和BP神经网络区别 cnn神经网络和bp神经网络_算法_03

将神经元按列排列,列与列之间进行全连接,即可得到一个BP神经网络。

CNN和BP神经网络区别 cnn神经网络和bp神经网络_算法_04

BP算法包括:

信号的向前传播:从输入到输出的方向计算误差;

误差的反向传播:根据误差从输出到输入的方向调整权值和阈值。


1.2.1 BP神经网络的实例

CNN和BP神经网络区别 cnn神经网络和bp神经网络_神经网络_05

首先读入彩色图像,每一个像素都包含有三个值即R、G、B分量;再经过灰度化和二值化处理,得到一个黑白图像,每个像素只有一个分量。

CNN和BP神经网络区别 cnn神经网络和bp神经网络_算法_06

用一个5行3列的滑动窗口在图像上进行滑动,每滑动一次就计算白色像素占整个像素的比例。如果滑动到最右面越界了,可以在最右面补一列0,或者是滑倒最右面把窗口变成5行2列的。处理完后得到一个5×5的矩阵:

CNN和BP神经网络区别 cnn神经网络和bp神经网络_CNN和BP神经网络区别_07

 将矩阵按行展开拼接成一个行向量,该行向量作为神经网络的输入层。

CNN和BP神经网络区别 cnn神经网络和bp神经网络_算法_08

对输出层常采用独热编码(one-hot),有了输入和输出之后,就可以对神经网络进行训练了。

CNN和BP神经网络区别 cnn神经网络和bp神经网络_CNN和BP神经网络区别_09

输入层节点个数和输入向量维数相同,设为25;输出层节点个数和输出分类个数相同,设为10。


1.3 卷积层

CNN和BP神经网络区别 cnn神经网络和bp神经网络_算法_10

卷积目的是进行图像特征提取。将卷积核作为一个滑动窗口在特征层上面进行滑动,每次滑动的的距离由步长决定,每滑动一次就将特征层的值与卷积核的值对应相乘再相加,最终得到卷积结果。


对于卷积神经网络权值共享的理解:

CNN和BP神经网络区别 cnn神经网络和bp神经网络_深度学习_11

对于普通的神经网络,若要提取1000个特征,将1000个神经元和图片进行全连接,需要

CNN和BP神经网络区别 cnn神经网络和bp神经网络_神经网络_12

个权重参数;但对于卷积神经网络,若采用5×5的卷积核,所需权重为

CNN和BP神经网络区别 cnn神经网络和bp神经网络_深度学习_13

个权重参数。


对于多层的输入,卷积核层数和输入层数相同,将卷积核的每一层放到输入对应层进行滑动卷积,最后对求出的三层进行求和操作就得到一个输出矩阵;输出的特征矩阵层数和卷积核个数相同,多个卷积核计算的方式是一样的。

CNN和BP神经网络区别 cnn神经网络和bp神经网络_卷积核_14

若要加上偏移量,比如卷积核1的偏移量为-1,则对黄色输出矩阵的每一个值都-1,有几个卷积核就有几个偏移量。


CNN和BP神经网络区别 cnn神经网络和bp神经网络_神经网络_15

在卷积过程中出现越界,可以利用padding在越界出进行补0处理,矩阵经过卷积操作之后的大小由以下四个参数决定:

①输入图片大小W×W;

②卷积核大小F×F;

③步长S;

④padding的像素数P。

经卷积过后矩阵尺寸大小的计算公式为:

CNN和BP神经网络区别 cnn神经网络和bp神经网络_CNN和BP神经网络区别_16

(注:实际操作都是左右上下都补0,所以一般加2P,图中只补了右下,所以计算时只加P)


1.4 池化层

MaxPooling下采样层:图中是采用一个2×2的池化核,步长设为2进行池化操作,池化核每移动一次就找一次最大值,最后得到一个输出矩阵。

CNN和BP神经网络区别 cnn神经网络和bp神经网络_CNN和BP神经网络区别_17

 AveragePooling下采样层:和MaxPooling下采样层类似,只不过从找最大值改为求平均值。

CNN和BP神经网络区别 cnn神经网络和bp神经网络_神经网络_18

池化层作用:对特征图进行稀疏处理,减少数据运算量

池化层特点:①没有训练参数,可以和卷积核进行对比,卷积核中是带有参数的;②只改变特征矩阵的w和h,不改变深度,也可以和卷积对比,对输入进行卷积操作,不论输入的深度是多少,1个卷积核得到的输出矩阵深度就是1;③池化核大小一般和步长是相同的。


2 反向传播过程

2.1 误差的计算

CNN和BP神经网络区别 cnn神经网络和bp神经网络_神经网络_19

输出

CNN和BP神经网络区别 cnn神经网络和bp神经网络_神经网络_20


CNN和BP神经网络区别 cnn神经网络和bp神经网络_深度学习_21

分别为:

其中

CNN和BP神经网络区别 cnn神经网络和bp神经网络_算法_22

的下标11分别指上一层的第1个节点和本层的第1个节点,上标(1)指第1层。

最后一层统一用Softmax激活函数,这样能使输出能够满足一个分布:

CNN和BP神经网络区别 cnn神经网络和bp神经网络_算法_23


CNN和BP神经网络区别 cnn神经网络和bp神经网络_卷积核_24

经过该处理后所有输出节点概率和为1。


一般计算损失都使用的是交叉熵损失(Cross Entropy Loss),针对多分类问题(softmax输出,所有输出概率和为1)使用:

CNN和BP神经网络区别 cnn神经网络和bp神经网络_卷积核_25

针对二分类问题(sigmoid输出,每个输出节点之间互不相干)使用:

CNN和BP神经网络区别 cnn神经网络和bp神经网络_CNN和BP神经网络区别_26

其中

CNN和BP神经网络区别 cnn神经网络和bp神经网络_神经网络_27

为真实值标签,

CNN和BP神经网络区别 cnn神经网络和bp神经网络_CNN和BP神经网络区别_28

为预测值,默认log以e为底。上面两者的区别在于某个输出是否只归于一个类别,若只归于一个类别就是多分类问题。

该例子的损失为:

CNN和BP神经网络区别 cnn神经网络和bp神经网络_深度学习_29


2.2 误差的反向传播

以求

CNN和BP神经网络区别 cnn神经网络和bp神经网络_深度学习_30

的误差梯度为例,首先对

CNN和BP神经网络区别 cnn神经网络和bp神经网络_神经网络_20

进行处理,可以把上一个节点的输入当成常数来处理:

CNN和BP神经网络区别 cnn神经网络和bp神经网络_深度学习_32

根据链式求导法则:

CNN和BP神经网络区别 cnn神经网络和bp神经网络_CNN和BP神经网络区别_33

对其中的每一个表达式进行计算

CNN和BP神经网络区别 cnn神经网络和bp神经网络_算法_34


CNN和BP神经网络区别 cnn神经网络和bp神经网络_CNN和BP神经网络区别_35

CNN和BP神经网络区别 cnn神经网络和bp神经网络_CNN和BP神经网络区别_36

CNN和BP神经网络区别 cnn神经网络和bp神经网络_神经网络_37

CNN和BP神经网络区别 cnn神经网络和bp神经网络_CNN和BP神经网络区别_38

将求解的值代入到求

CNN和BP神经网络区别 cnn神经网络和bp神经网络_深度学习_30

的误差梯度的式子中可得

CNN和BP神经网络区别 cnn神经网络和bp神经网络_神经网络_40


2.3 权重的更新

CNN和BP神经网络区别 cnn神经网络和bp神经网络_卷积核_41

CNN和BP神经网络区别 cnn神经网络和bp神经网络_算法_42

若采用整个样本进行求解,损失梯度会指向全局最优(如左图);但实际应用中不可能一次性将所有数据载入,一般会分批次(batch)训练,此时的损失梯度会指向当前批次最优方向。从图中可以看出,分批次样本训练过程不够平稳,因此需要使用优化器帮助网络更快收敛,通常采用SGD优化器(随机梯度下降法):

CNN和BP神经网络区别 cnn神经网络和bp神经网络_CNN和BP神经网络区别_43

 

CNN和BP神经网络区别 cnn神经网络和bp神经网络_神经网络_44

其中

CNN和BP神经网络区别 cnn神经网络和bp神经网络_算法_45

为学习率,

CNN和BP神经网络区别 cnn神经网络和bp神经网络_算法_46


CNN和BP神经网络区别 cnn神经网络和bp神经网络_卷积核_47

时刻对参数

CNN和BP神经网络区别 cnn神经网络和bp神经网络_CNN和BP神经网络区别_48

的误差梯度,该优化器有两个缺点:①易受样本噪声影响,若某样本的标注是错误的,那么所求梯度和我们理想中的梯度可能是相悖的;②根据不同批次所求的梯度方向是随机的,因此可能陷入局部最优解(如图中红线所示)。

根据SGD优化器的缺点,引入了SGD+Momentum优化器

CNN和BP神经网络区别 cnn神经网络和bp神经网络_CNN和BP神经网络区别_49

CNN和BP神经网络区别 cnn神经网络和bp神经网络_卷积核_50

其中

CNN和BP神经网络区别 cnn神经网络和bp神经网络_卷积核_51

为动量系数,通常取0.9。与SGD优化器相比,多了动量(

CNN和BP神经网络区别 cnn神经网络和bp神经网络_CNN和BP神经网络区别_52

)部分,除了计算当前梯度之外,还将之前的梯度加入进来,具体理解为

CNN和BP神经网络区别 cnn神经网络和bp神经网络_卷积核_53

利用SGD优化器,当前梯度方向为

CNN和BP神经网络区别 cnn神经网络和bp神经网络_CNN和BP神经网络区别_54

,下一次梯度方向为

CNN和BP神经网络区别 cnn神经网络和bp神经网络_算法_55

,但在动量的影响下,会考虑

CNN和BP神经网络区别 cnn神经网络和bp神经网络_CNN和BP神经网络区别_54

的方向,

CNN和BP神经网络区别 cnn神经网络和bp神经网络_算法_55

的方向可能如图中红标所示。