边缘检测
对于一个没有RGB通道的图像来说,可以构造一个过滤器/卷积核,用于图像的边缘检测功能。例如,对于一个6X6的矩阵可以构建一个3X3的卷积核,卷积核中各元素的取值如图所示。我们将会得到一个4X4的矩阵中作为结果。注意,“*”特指在数学中特指卷积操作。结果如下:
为什么它能实现边缘检测的功能?对于下面的例子,就一目了然了。经过卷积之后的结果如果非常亮或非常暗,那么此处就对应图像的边缘部分。

既然有识别垂直边界的过滤器,那么显然也应该有识别横向边界的过滤器。如下图中的例子,使用过滤器识别一幅对角线为深色的图片时,30与-30的结果表明过滤器检测到了强边界。10与-10的值来源于中心处的过渡边界,当图片足够大时,过渡边界的影响可以忽略不计。
卷积核中的9个权重可以取很多不同的值,而且实际上这些值都是可以学习的。除去90度边界,卷积核还可以学习到45度、70度等其他边界的过滤方法。
填充(Padding)
一个的图像,用一个
的过滤器过滤时,得到的结果应该是:
维。卷积操作有几个缺陷:一是每做一次卷积,图像的像素就会缩小,直到最后可能会变成1维或是什么;再者,图像的边角通常只能被用到寥寥数次,顶点元素甚至只能被用到一次,相比之下图像的中间像素则会被用到很多次,所以说很多边界的信息可能会被遗失。所以说,在每次卷积操作前最好先对图片进行填充。如下图所示,padding=1,则相当于在图像周围填充了一圈0,这样得到的矩阵仍然是
维,而且边缘信息也不会遗漏。

若要保持卷积计算后矩阵维数不变,则填充padding应为:
一般来说,过滤器f维数基本都取奇数。
卷积步长
步长代表进行卷积操作时卷积核一次移动多少步,以s表示。可以计算得出,结果矩阵的维数大小是:
往往,在进行卷积操作前我们需要将卷积核旋转180度。但通常在机器学习中,我们会忽略掉翻转的操作,因此我们实际进行的操作最好称之为交叉相关(无所谓)。
三维卷积
RGB图像有三条通道,对应三种不同的颜色。因此,RGB图像相当于三张非RGB图像的叠加。同理,我们需要将卷积核也变为三维(层数必须与RGB图像的通道数相符)。但是,输出的图像不再是三维,而是一维。
计算过程其实很简单,每层的卷积运算与之前相同,只不过现在需要把三层运算所得到的结果加在一起而已。卷积核的不同层可以设定不同的参数,用于检测不同颜色的边缘。若将三层卷积核都设定为有效的权重,则可以检测所有颜色的边界。
如果不想只检测垂直边缘,同时也想检测水平边缘呢?我们可以构造两个三维卷积核,一个用于检测垂直边缘,一个用于检测水平边缘,那么最后得到的结果也是三维的,如图所示,是一个的立方体,最后一个下标用于表示通道的数量。

单层卷积网络
下面我们需要将卷积运算应用到神经网络中。首先,我们需要将一张RGB图像设定为输入值,将横向、纵向两个卷积核类比原先的w参数,在计算得出结果后,加上偏置项b。同样,计算所得z值还需要通过ReLU激活函数,最后得出该层的输出值a。
各参数的维度:
简单卷积网络
1个例子:
要注意的是,最后一个隐藏层输出的所有1960个属性值都要应用到softmax/logistic的输出中,最终分类得到最终结果。
池化层
max pooling:例如对一个矩阵,它的输出结果可以是一个
矩阵。那么超参数f=2,步长s=2。这样就可以提取图像四个角上的特征。实际上,max pooling所做的就是检测所有地方的特征。max pooling方法没有任何的参数可供学习,一旦确定了f与s的值结果就不会发生改变。与卷积相似,若图像为三维RGB,那么显然结果也为三维。

average pooling:
池化层的一个重要特征就是没有可供学习的参数
池化层卷积神经网络
对于下图所示的卷积网络,大致可以分为三大层:第一层包含一个卷积层和一个max pooling池化层;第二层包含使用不同的卷积核得到的另一个卷积层和一个max pooling池化层;第三层是全连接层,与我们之前学过的全连接神经网络完全一样。
可以看到,全连接层的参数是最多的。注意一下每一层中an值的个数,注意不要下降的太快,否则可能会影响结果。
