卷积神经网络的整体架构一般分为四层:1.输入层,2.卷积层(提取特征),3.池化层(压缩特征),4.全连接层(把输入层和隐藏层连接到一起)。这里面最注重学的是卷积层,也就是提取特征的部分。
计算公式为:内积(对应位置相乘)相加+b=最终结果,如上图所示。细看一下,卷积层里面设计的参数有:1.滑动窗口步长(自己设置),2.卷积核尺寸(一般为3*3),3.边缘填充(paid),4.卷积核个数。滑动窗口步长意思就是每次提取特征是滑动的个数,如上图中步长为2。卷积核尺寸意思是每次提取特称时的像素点数,上图中为3*3。边缘填充的再上图中的表现形式是周围的一圈0,在提取特征过程中,滑动窗口滑动时,越是中间的数据,参加计算的次数越多,对结果的影响占比越大,导致边缘数据被利用程度降低,为了改善这种情况,可以通过在边缘加一圈0,将原本的数据中心化,达到平衡边缘的作用。卷积核个数就是W的个数,也叫做特征图(feature map)。在卷积层中,还存在两个计算公式,一个是长度计算公式:
另一个是宽度计算公式:
其中H表示原长,P表示Paid,S表示步长,二式同理。
在同一次卷积测试中,卷积核可以相同利用,权重参数就是调用时出现的数的个数。
---------------------------------------------------------------------------------------------------------------------------------
卷积层将特征提取出来之后,需要进一步对特征进行压缩,下采样。例如将224*224*64变为112*112*64。在压缩过程中,变换的是图像大小,层数不变。在压缩过程中有两种方法,一种叫做MAX POOLNG,即最大池化:
原理就是从每个单位中,取最大的数值来代表此单位。另一种方法叫做EVERY POOLING,即平均池化,根据字面意思可以知道取每个单元的平均值来代表次单元,但是由于每个单位中不是每个数值都是有利于结果优化的,因此平均池化中的最终结果会受到影响,效果自然不如最大池化。
Ps:在此过程中,没有涉及到任何矩阵计算,这句话与后面层数网络层数计算有关。
---------------------------------------------------------------------------------------------------------------------------------
由上面内容可以得知,卷积神经网络的整体架构基本为:
特征图变化如下:
在整个网络中,带参数计算的称为一层,并且只有卷积层和全连接层带参数计算。
---------------------------------------------------------------------------------------------------------------------------------
以上是基本知识点,下面内容是介绍几个简单的经典网络:1.Alexnet(2012),2.VGG(2014),3.Resnet。
Alexnet是相对较早的一个神经网络,它是一个8层的神经网络,采用的是11*11的一个卷积核,步长为4,且边缘填充Paid为0,这种大刀阔斧的提取特征虽然计算速度很快,但也会导致误差偏大。
VGG是2014年的神经网络,它有很多版本,最常用的是D版本,它是一个16层或者19层的神经网络,在VGG神经网络中,由于POOLING后损失信息,VGG会使层数得到相应的增加来补充这部分信息,虽然结果更加优化,但是计算时间增长。
在此之前,由于随着层数的增加,过拟合影响越来越大,得出的结果的效果呈下降的趋势,神经网络层数被限制在了20以下。
为了改变这种情况,出现了残差神经网络,也就是Resnet神经网络,有效的解决了层数越多,效果反而不好的问题。基本原理如下:
大致意思为设计了两条路径,如果正常卷积之后的效果不如上次,就直接略过此次卷积,从下一次开始。
--------------------------------------------------------------------------------------------------------------------------------
最后补充一个东西,感受野。
在图中过程中,可以知道第二张图由第一张图计算而来,第三张图由第二张图计算而来,因此我们可以说第三张图由第一张图计算而来,而利用第三章图去反推第一张图的这个过程叫做感受野。感受野越大,细节也就越紧凑。
在感受野这里存在下面一个问题:
答案是他们的感受野虽然相同,但是3*3的参数更少,过拟合风险也就越低,VGG中使用的3*3,也证明了其效果更好,且3*3非线性变化多,卷积过程多,特征提取更细致。