美文网首页
卷积层(Convolution Layer)

卷积层(Convolution Layer)

作者: Wangcy | 来源:发表于2016-12-08 19:30 被阅读0次

    卷积神经网络(Convolutional Neural Networks,CNN)是一种前馈神经网络。卷积神经网络是受生物学上感受野(Receptive Field)的机制而提出的。感受野主要是指听觉系统、本体感觉系统和视觉系统中神经元的一些性质。比如在视觉神经系统中,一个神经元的感受野是指视网膜上的特定区域,只有这个区域内的刺激才能够激活该神经元。

    卷积神经网络有三个结构上的特性:局部连接权重共享以及空间或时间上的次采样。详细介绍请见卷积神经网络

    本文主要介绍卷积层(Convolution Layer)的前向传播和后向传播。

    1.二维卷积运算

    二维图像卷积

    2.前向传播

    假设数据矩阵D如下3*3大小,是单通道的,我们首先需要补0将它扩充到(3+2*(floor(3/2)))* (3+2*(floor(3/2))) = 5*5大小的矩阵操作如下:

    补0操作

    接下需要将D_pad_zero与卷积核kernel做卷积运算,kernel size =3,pad = 1,stride =1,则可得出输出(3+2*1-3)/1+1 = 3;下图只是给出了一个卷积核,一个卷积核生成一个特征图(feature map),而在实际应用中,为了增强卷积层的表示能力,会使用很多个卷积核从而得到多个特征图。

    卷积

    从上图不同颜色框框给出,从数据矩阵中依次提取出和卷积核一样大小的块数据,这里其实就是开篇所说的局部连接。为了提高该操作运算效率,需要进行im2col操作,即把这些不同颜色框框内的数据向量化,总共有3*3个向量,最后得到9*9这样的数据矩阵,具体操作如下

    im2col

    接下来就是矩阵相乘操作,具体操作如下:

    矩阵相乘

    上述矩阵相乘结果如下,最好还需要col2im,把向量转换成矩阵形式。

    col2im

    上述整个过程只是使用一个卷积核,实际应用中,卷积核有很多,只要把这些卷积核按行排列,再做kernel*D_im2col操作,会一次得出所有的feature map。

    3.反向传播

    假设第l层输入数据大小为5*5,通道为3,卷积核有64个,每个大小为3*3*3,卷积操作为pad=1,stride=1,经过im2col输入数据为27*25(记作X),其中每个列向量为3*3*3的输入小块。权值矩阵W大小为64*27,偏置向量b为1*64,则可得该卷积层输出:

    Q = f(z) = f(w*x+b)

    其中f(*)为激活函数,以下以sigmoid函数为例,其导数为sigmoid*(1-sigmoid);

    由以上公式可得,该卷积层输出Q大小为64*25。

    假设由该卷积层上一层反向传播到该层输出矩阵delta,则该矩阵大小和Q大小一致,为64*25,根据链式求导法则;


    损失函数对该层权值W求偏导 损失函数对该层偏置b求偏导 损失函数对该层的前一层求偏导 损失函数对该层求偏导,大小为64*25 Q对Z求偏导,大小为64*25 Z对b求偏导,大小为64维向量 Z对W求偏导,大小为25*27 Z对X求偏导,大小为27*64

    相关文章

      网友评论

          本文标题:卷积层(Convolution Layer)

          本文链接:https://www.haomeiwen.com/subject/ozpsmttx.html