一、卷积
本来想自己写一点,发现了很不错的一篇博客,就不班门弄斧了。
一句话概括:某一时刻,某点的能量(或值)等于多个其他点的叠加。
二、卷积神经网络基础
CNN的核心思想
如果简单采用全连接的方式去训练模型,参数量过多难以训练,训练结束后也很容易导致过拟合,CNN能够有效的解决这一问题,其核心思想包括两点:
(1)局部连接:视觉是具有局部性的,相邻的部分点可能就构成了一个完整的物体,距离越远的点可能联系就越弱。因此因当充分考虑邻域信息,对局部的点进行稠密连接即可。
(2)权重共享:CNN中使用一组卷积核对于不同位置进行卷积,原理是每一组权重抽取图像的一种特征,例如,在抽取形状特征时可以在图像的不同位置使用同一组权重。
基于这两个关键点,CNN可以大幅减少处理图像时所需的参数量,从而减少过拟合。
感受野
一句话:特征图上的一个点对应输入图上的区域。
如下图所示:
卷积神经网络结构:
- 卷积层+激活函数(Conv+ReLU)
- 池化层(Pololing)
- 全连接层(FC)
2.1 卷积层
2.1.1 卷积运算
一共四步:反转、移动、乘积、求和。
在神经网络中无需反转操作,只有三步。
如下图所示输入矩阵I与卷积核K对应相乘,乘完后相加得到一块的值,移动步长1继续相乘相加最终得到输出矩阵。
此处可以看到的是一个3X4的矩阵做完卷积后变成了2X3的矩阵,在图像处理中即为输入图像与卷积核进行卷积后的结果中损失了部分值,输入图像的边缘被“修剪”掉了(边缘处只检测了部分像素点,丢失了图片边界处的众多信息)。这是因为边缘上的像素永远不会位于卷积核中心,而卷积核也没法扩展到边缘区域以外。
这个结果我们是不能接受的,有时我们还希望输入和输出的大小应该保持一致。为解决这个问题,可以在进行卷积操作前,对原矩阵进行边界填充(Padding),也就是在矩阵的边界上填充一些值,以增加矩阵的大小,通常都用0来进行填充的。
如下图所示,输入5X5,输出仍然为5X5。