本文简单介绍一下卷积神经网络,主要从层的概念来描述,每一层都有其他层作为它的输入层,然后有自己的输出作为其他层的输出层。总的来说,主要有这么几个层:输入层,卷积层,采样层,全连接层。
1 输入层
输入:若干个特征图,比如一张图片,可以是3个二维数组,分别为RGB的像素值。
正向传播:该层不用处理,直接把输入值当作输出值输出给下一层,下一层一般是卷积层。
反向传播:该层作为最原始的“输入层”,没有输入层,不用传播。
2 卷积层
输入:n个特征图,比如n个二维数组。
正向传播:从n个特征图中抽取m个(当然n>m),用同一个卷积核对这m个特征图做卷积运算,产生一个新的特征图。如此重复,输出k个特征图。
反向传播:
卷积核调整(其实就是权值调整):根据误差项和输入值调整卷积核,其中误差项是下一层(该层输出的那一层,比如可能是采样层)传播过来的。
误差项的传播:根据该层误差项和卷积核,算出一个新的误差项,传播给该层的上一层(给该层输入的那一层,比如可能是输入层),作为那一层的误差项。一个特征图对应一个误差项。比如这一层有k个特征图,其中第一个特征图有一个误差项,这个误差项传播到上一层的跟这个特征图相关的特征图(请注意该层的一个特征图是有上一层的某几个特征图产生的)。
3采样层
输入:若干个特征图,比如若干个二维数组。
正向传播:一个输入的特征图,通过采样(缩放效果)操作,产生一个新的特征图。这个采样操作,有不同的实现方法,比如可以是4个点算加权平均,也可以是找最大值乘以一个权值。
如此重复,产生若干个特征图。
反向传播:
权值调整:根据误差项和输入值调整权值。
误差项传播:跟卷积层的差不多。
4 全连接层
输入:n个特征图,比如n个二维数组
正向传播:有m个很大的卷积核,每一个卷积核都跟n个特征图的每个点全连接。n个特征图跟一个卷积核做卷积运算,得出一个新的特征值。如此重复,得出m个特征值。
反向传播:跟卷积层和采样层差不多。
想象一个极简单的卷积网络,输入层->卷积层->采样层->全连接层。
输入层:一张图片的rgb通道的像素,即3个二维数组
卷积层:将rgb两两搭配,总共3个组合,rg,rb,gb,分别对应一个卷积核。每种组合跟一个卷积核卷积运算,得出新的特征图。3个组合,共得出3个特征图。
采样层:将上面的3个特征图做缩放操作,当然是有权值的缩放。产出3个新的特征图。
全连接层:m个卷积核。一个卷积核跟3个特征图做卷积运算,得出新的特征值。共得出m个特征值,m的数量就是分类的种类数量。