卷积神经网络之前向传播算法卷积神经网络之前向传播算法
1.CNN基本结构
首先我们来看看卷积神经网络(CNN)的基本结构。如上图所示,可以看出最左边的图片就是我们的输入层,计算机理解为输入
若干个矩阵。接着是卷积层(Convolution Layer),卷积层是CNN所特有的,卷积层使用的激活函数是ReLU,之前在DNN之中
介绍过ReLU的激活函数,形式如ReLU=max(0,x) 。卷积层后面的是池化层,池化层也是CNN所特有的,池化层没有激活函
数。
卷积层+池化层的组合可以在CNN隐藏层中出现多次,实际使用中根据模型需要而定。同时我们也可以灵活使用卷积层+卷积
层,或者卷积层+卷积层+池化层的组合,卷积层+池化层的组合在构建模型时没有限制,但最常见的CNN都是若干卷积层+池
化层的组合。
在若干卷积层+池化层的组合后面是全连接层(Fully Connected Layer),全连接层就是之前讲到的DNN结构,只是输出层使用
了Softmax激活函数来做图像识别的分类。从上面模型可以看出,CNN相对于DNN,比较特殊的是卷积层和池化层。如果之
前熟悉DNN的话,只要把卷积层和池化层的原理理解清楚,那么CNN就简单啦。
2.卷积
既然是学习卷积神经网络,那自然需要了解什么是卷积。在学习高等数学的时候,微积分中卷积表达式和其离散形式如下所
示。
当然也可以用矩阵进行表达,其中*****表示卷积。
s(t)=(X*W)(t)
如果是二维的卷积,则其表达式如下所示。
在CNN中,虽然我们也是说卷积,但严格意义上和数学上所定义的卷积稍有不同,比如对于二维的卷积,其定义如下所示,
其中X为输入,W为卷积核。如果X是二维输入,那么W也是二维矩阵,如果X是多维张量,那么W也是多维张量。
卷积有什么简单利用呢?我们举个例子,假如有两枚骰子,然后把骰子扔出去,求两枚骰子点数之和加起来为4的概率是多
少。
上述例子的关键点便是两个骰子点数之和加起来要等于4,这正是卷积的应用场景。假设利用f表示第一枚骰子,g表示第二枚
骰子。f(1)表示点数为1的概率,f(2)表示点数为2的概率。那么两枚骰子点数加起来为4的情况有f(1)g(3)、f(2)g(2)、f(3)g(1),
因此两枚骰子点数加起来为4的概率为f(1)g(3)+f(2)g(2)+f(3)g(1)。符合卷积的定义,那么转换成卷积的标准形式便是
3.CNN卷积层
现在我们来深入CNN中的卷积层,如下图所示,针对图像进行卷积计算。图中的输入是二维的3*4的矩阵,卷积核是2*2的矩
阵。这里我们假设卷积是每次移动一个像素来进行卷积,首先对左上角2*2局部和卷积核进行卷积计算,即各个位置的元素相
乘再相加,得到的输出值S00为aw+bx+ey+fz。接着我们将输入的局部向右平移一个像素,现在是(b,c,f,g)四个元素构成的矩