首页 > 人工智能(Artificial Intelligence) > 卷积神经网络

卷积神经网络(CNN)前向传播算法

CNN的结构,包括输出层,若干的卷积层+ReLU激活函数,若干的池化层,DNN全连接层,以及最后的用Softmax激活函数的输出层。

CNN输入层前向传播到卷积层

853467-20171121145544493-278036006.png

前向传播的过程表示为:

$ a^2= \sigma(z^2) = \sigma(a^1*W^2 +b^2)$

其中,上标代表层数,星号代表卷积,而b代表我们的偏置, σ为激活函数,这里一般都是ReLU。

360截图20190512105849920.jpg

和DNN的前向传播比较一下,形式非常的像,只是我们这儿是张量的卷积,而不是矩阵的乘法。同时由于WW是张量,那么同样的位置,WW参数的个数就比DNN多很多了。

如果没有特殊说明,我们都默认输入是3维的张量,即用RBG可以表示的彩色图片。

这里需要我们自己定义的CNN模型参数是:

  1.  一般我们的卷积核不止一个,比如有K个,那么我们输入层的输出,或者说第二层卷积层的对应的输入就K个。
  2. 卷积核中每个子矩阵的的大小,一般我们都用子矩阵为方阵的卷积核,比如FxF的子矩阵。
  3. 填充padding(以下简称P),我们卷积的时候,为了可以更好的识别边缘,一般都会在输入矩阵在周围加上若干圈的0再进行卷积,加多少圈则P为多少。
  4.  步幅stride(以下简称S),即在卷积过程中每次移动的像素距离大小。

CNN隐藏层前向传播到卷积层

假设隐藏层的输出是M个矩阵对应的三维张量,则输出到卷积层的卷积核也是M个子矩阵对应的三维张量,表示为

$ a^l= \sigma(z^l) = \sigma(a^{l-1}*W^l +b^l)$

其中,上标代表层数,星号代表卷积,而b代表我们的偏倚, σσ为激活函数,这里一般都是ReLU。

也可以写成M个子矩阵子矩阵卷积后对应位置相加的形式,即:

$ a^l= \sigma(z^l) = \sigma(\sum\limits_{k=1}^{M}z_k^l) = \sigma(\sum\limits_{k=1}^{M}a_k^{l-1}*W_k^l +b^l)$

和上一节唯一的区别仅仅在于,这里的输入是隐藏层来的,而不是我们输入的原始图片样本形成的矩阵。

需要我们定义的CNN模型参数也和上一节一样,这里我们需要定义卷积核的个数K,卷积核子矩阵的维度F,填充大小P以及步幅S。

CNN隐藏层前向传播到池化层

池化层的目的是对输入的矩阵进行缩小概括。比如输入的若干矩阵是NxN维的,而我们的池化大小是kxk的区域,则输出的矩阵都是 $\frac{N}{k} \times \frac{N}{k}$ 维的。

需要我们定义的CNN模型参数是:

  1. 池化区域的大小k
  2. 池化的方式,一般是MAX或者Average

隐藏层前向传播到全连接层

由于全连接层就是普通的DNN模型结构,因此我们可以直接使用DNN的前向传播算法逻辑,即:

$a^l = \sigma(z^l) = \sigma(W^la^{l-1} + b^l)$

这里的激活函数一般是sigmoid或者tanh。

经过了若干全连接层之后,最后的一层为Softmax输出层。

这里需要需要我们定义的CNN模型参数是:

  1. 全连接层的激活函数
  2. 全连接层各层神经元的个数

CNN前向传播算法小结

输入:1个图片样本,CNN模型的层数L和所有隐藏层的类型,对于卷积层,要定义卷积核的大小K,卷积核子矩阵的维度F,填充大小P,步幅S。对于池化层,要定义池化区域大小k和池化标准(MAX或Average),对于全连接层,要定义全连接层的激活函数(输出层除外)和各层的神经元个数。

输出:CNN模型的输出 $a^L$

    1)根据输入层的填充大小P,填充原始图片的边缘,得到输入张量 $a^1$。

    2)初始化所有隐藏层的参数W,b

    3)for l=2 to L−1:

      a) 如果第 l 层是卷积层,则输出为:

                             $ a^l= ReLU(z^l) = ReLU(a^{l-1}*W^l +b^l)$

        b) 如果第 l 层是池化层,则输出为: $ a^l= pool(a^{l-1})$ ,这里的pool指按照池化区域大小k和池化标准将输入张量缩小的过程。

        c) 如果第 l 层是全连接层,则输出为:

                             $ a^l= \sigma(z^l) = \sigma(W^la^{l-1} +b^l)$

    4)对于输出层第L层:

                      $ a^L= softmax(z^L) = softmax(W^La^{L-1} +b^L)$

 

关闭
感谢您的支持,我会继续努力!
扫码打赏,建议金额1-10元


提醒:打赏金额将直接进入对方账号,无法退款,请您谨慎操作。