第4章 卷积神经网络
定义:卷积神经网络(CNN)是一种非常典型的网络架构,常用于图像分类等任务。通过卷积神经网络,我们可以知道网络架构如何设计,以及为 什么合理的网络架构可以优化网络的表现。
- 图像描述:图像可以描述为三维张量(宽×高×通道数)。一张图像是一个三维的张量,其中一维代表图像的 宽,另外一维代表图像的高,还有一维代表图像的通道(channel)的数目。
- 通道:彩色图像的每个像素由红色(R)、绿色(G)、蓝色(B)三个颜色通道组成,称为RGB色彩模型。
- 输入处理:将三维张量“拉直”成一个大向量,作为网络输入。
- 图像尺寸:默认输入图像尺寸为100像素×100像素。
全连接网络
- 特征向量长度:对于100×100×3的图像,特征向量长度为100×100×3。
- 权重数量:若第一层有1000个神经元,则权重数量为1000×100×100×3=3×10^7,导致过拟合风险增加。
4.1 观察1:检测模式不需要整张图像
- 检测图像里面有没有出现一些特别重要的模式(pattern)(如鸟嘴、眼睛等),而不需要看整张图像。
- 这些神经元不需要把整张图像当作输入, 只需要把图像的一小部分当作输入,就足以让它们检测某些特别关键的模式是否出现,这是 第1个观察
4.2 简化1:感受野
- 定义:卷积神经网络会设定一个区域,即感受野(receptive f ield),每个神经元都只关心自己的感受野里面发生的事情,感受野是由我们自己决定的。
- 设计:感受野可以有大有小(如3×3、11×11),且可以只考虑部分通道。
- 感受野的范围不一定要相连,理论上可以有一个神经元的感受野就是图像的左上角 跟右上角。
- 步幅(Stride):感受野移动的量,通常设为1或2以保证重叠。
- 假设感受野完全没有重叠,如果有一个模式正好出现在两个感受野的交界上面, 就没有任何神经元去检测它,这个模式可能会丢失,所以希望感受野彼此之间有高度 的重叠。如令步幅=2,感受野就会重叠
- 填充(Padding):处理边界问题,常用零填充。如果感受野有一部分超出图像的范围 之外,就当做那个里面的值都是0。其实也有别的补值的方法,比如补整张图像里面所有值的 平均值或者把边界的这些数字拿出来补没有值的地方
4.3 观察2:同样的模式可能会出现在图像的不同区域
- 同样的模式可能出现在图像的不同位置,无需每个位置都设置检测器。
4.4 简化2:共享参数
- 参数共享:不同感受野的神经元可以共享相同的权重,减少参数量。
- 滤波器(Filter):一组共享参数的神经元称为一个滤波器。
4.5 简化 1 和2的总结
全连接网络是弹性最 大的。全连接网络可以决定它看整张图像还是只看一个范围,如果它只想看一个范围,可以 把很多权重设成0。
加上感受野的概念以后,只能看一个小范围,网络的弹性是变小的。
参数共享 又进一步限制了网络的弹性。
感受野加上参数共享就是卷积层 (convolutional layer),用到卷积层的网络就叫卷积神经网络
1. 感受野(Receptive Field)
- 感受野是指每个神经元处理的图像区域。
- 通过限制每个神经元的视野,网络只能看到图像的一小部分,增加了网络的局部性。
2. 参数共享(Parameter Sharing)
- 同一感受野内的神经元共享相同的参数(权重和偏置)。
- 这减少了模型的参数数量,提高了计算效率。
- 共享参数通过滤波器(filter)实现,每个滤波器检测图像中的特定模式。
- 滤波器:
- 滤波器是一个3×3×通道的张量,其中的数值是模型中的参数,通过训练得到。
- 滤波器在输入图像上滑动,通过内积运算检测特定模式,生成特征映射。
- 特征映射:
- 每个滤波器生成一个特征映射,特征映射的大小由输入图像的大小、滤波器的大小和步幅决定。
- 特征映射可以看作是输入图像经过滤波器处理后的新图像,只是通道数增加,每个通道对应一个滤波器。
4.6 观察3:下采样不影响模式检测
- 下采样(Downsampling)通过减少图像的尺寸来降低计算量。
- 尽管图像尺寸减小,但图像中的关键模式(如形状、纹理)仍然可以被识别。
4.7 简化3:汇聚(Pooling)
- 汇聚是一种减少特征映射维度的技术,没有可学习的参数。
- 常见的汇聚方式有最大汇聚(Max Pooling)和平均汇聚(Mean Pooling)。
最大汇聚在每一组里面选一个代表, 选的代表就是最大的一个
平均汇聚是取每一组的平均值。
- 汇聚层通常与卷积层交替使用,以减少计算量和避免过拟合。
4.8 卷积神经网络的应用
1. 图像识别
- 卷积神经网络在图像识别任务中表现出色。
- 通过堆叠多个卷积层和汇聚层,可以提取图像的高级特征。
- 最终通过全连接层和softmax层进行分类。
2. 下围棋(以AlphaGo为例)
- 下围棋可以看作是一个分类问题,网络输入是棋盘状态,输出是下一步的落子位置。
- 棋盘可以看作是一个分辨率为19x19的图像,每个位置用多个通道描述。
- AlphaGo使用卷积神经网络来识别棋盘上的重要模式,并通过多层网络进行决策。