一、为什么需要卷积神经网络?
在之前的全连接神经网络中,一张28*28的图片被拉直成784个像素,作为独立特征输入。如果像素过多,会导致参数爆炸,无法训练;而且把像素拉平后,原本相邻的像素在向量中可能相隔很远,神经网络很难学到局部相关性。
CNN的核心思想:既然图像具有局部相关性,我们就不必让每个神经元连接所有像素,而是只连接局部区域, 并且共享参数。
二、CNN的四大核心操作
一个标准的CNN通常由这四种层交替组成。
2.1、卷积层------特征提取器
它通过一个叫做卷积核 的小窗口在图像上滑动,做点积运算。
局部连接 :与全连接不同,卷积核只关注视野内的的像素(如3*3),忽略远处的像素,这会强行让神经网络去学习局部特征。但随着网络层数的加深,叠加的卷积操作会逐步扩大感受野,最终让深层网络能够整合全局信息,从而实现从局部到整体的识别。
参数共享::在卷积神经网络中,同一个卷积核的权重数值,在整张图片上滑动扫描时,始终保持不变。
输出特征图:一个卷积核只能提取一种特征。为了提取多种特征,我们会使用多个卷积核。比如一个卷积神经网络用了64个卷积核,输入一张照片,输出就是64张特征图。
2.2、激活函数
通常用ReLU,它的作用是把卷积结构中的负数全部归零,保留正数。把这堆实数进行非线性映射,再送人下一层。
2.3、池化层
池化层是一种"下采样"操作,简单来说就是把一张图片切成若干个2*2的小块,只保留每个小块里最大的那个数,其他3个扔掉。
作用:特征图的尺寸减半,大幅减少后续计数。
只要最大的特征出现在这个2x2框里的任何一个位置,池化后都会被提取出来。这意味着即使图片中的物体稍微左右偏移了1个像素,网络依然能识别出来。
2.4、全连接层
在经过多层卷积和池化后,原始图像已经被抽象成了高维、深层、小尺寸的特征图。此时,我们再把这些特征展平成一个长向量,输入到传统的全连接网络中。
三、CNN是如何看到图像
CNN最大的魅力在于,它通过层层堆叠,自动形成了从局部到全局、从具体到抽象的特征金字塔:
**浅层卷积:**只负责识别最基础的几何单元,比如各种角度的边缘、颜色斑点等,此时的视野很小。
中层卷积:将简单的边缘组合起来成中级部件,比如物体的拐角、圆圈、圆弧、纹理图案等。
深层卷积:将中级部件组合起来成高级部件,比如完整的眼睛、轮子等,此时视野变大。
全连接层:根据这些高级部件是否存在,做出最终分类判断。
四、核心数学公式
输出尺寸=(输入尺寸-卷积核大小+2\*填充)/步长+1
填充:为了不让图像越卷越小,通常会在图像外围补一圈0。
步长:卷积核每次滑动几步。