卷积神经网络学习记录

288 阅读3分钟

介绍

CNN英文全称(Convolutional Neural Networks),现被用于各个领域,尤其在图像分割中表现尤为突出。

它主要有如下几个过程:

1、卷积运算
2、非线性激活
3、池化层
4、全连接层

卷积运算

卷积神经网络和信号处理中的卷积运算有一定的关系,公式截图如下:

接下来就是对应相乘:假设我们用一个特征,首先找到特征(feature),然后取特征图里面的像素值和原图片进行相乘,最后得出结果填入新的图中:

对应相乘结束后就是如下图所示:

对图中九个值求平均,得到一个均值将其填入另一张新图(称之为特征图(feature map))。
卷积运算完了之后得到一张完整的特征图:
因为特征是从原始图像中提取出来的,因此在特征图中越是接近1的值表示对应位置与特征的匹配越好。同理,越是接近-1,表示对应位置和特征的反面匹配越完整。而越是接近0,则表示对应位置与特征没有匹配上。另一方面,在进行卷积对应相乘运算并算得均值之后,滑动窗口会进行移动,而移动的距离由我们决定。比如设置步长(stride = 1),那么窗口会向右移动一个像素,如下。

非线性激活

为什么要进行非线性激活呢?如果使用线性的激励函数,那么输出就是乘上一个大的矩阵,没有体现出隐层的作用,并且激活函数可以把当前特征空间通过一定的线性映射到另一个空间,让数据能够更好的被分类。比如非线性激活函数-Relu函数,公式为:f(x)=max(0,x)即,保留大于等于0的值,小于0的数改写为0。非线性激活函数作用后的结果:

池化层(pooling)

为什么要有池化层呢?那是因为进过卷积操作之后,得到了许多张有着不同值得特征图。而池化的目的就是减少数据量。池化分为最大池化(Max Pooling)、平均池化(Average Pooling),最大池化就是取最大值,平均池化就是取平均值。接下来我们拿最大池化举例:选择池化尺寸为2X2的窗口。

向右根据步长活动窗口。
最终得到池化后的特征图。可明显发现数据量减少了很多。

全连接层

全连接层要做的事情就是对之前所有的操作进行一个总结,来得到每个分类类别对应的概率值,最后输出一个结果。

原图片尺寸为9X9,经过一系列的卷积、Relu(非线性激活)、池化后,得到尺寸压缩为2X2的三张特征图。(为什么是三张呢?因为原图像为RGB图像,上述过程省略了一部分)

得到2X2的特征图之后,对其应用全连接网络,在全连接层中有一个非常重要的非线性函数-Softmax,它是一个分类函数,输出的是每个对应类别的概率值。
以上就是在学习CNN过程中所做的笔记,附上原文链接。

原文链接

1、zhuanlan.zhihu.com/p/27908027

2、zhuanlan.zhihu.com/p/28173972