【机器学习】 卷积神经网络 (CNN)
文章目录
- 1. 为什么需要 CNN
- 2. CNN 的架构
- 3. 卷积层
- 4. 池化层
- 5. CNN 的应用
1. 为什么需要 CNN
- 前提:利用前置知识,去掉全连接神经网络中的部分参数,提升学习效率。
- 本质:在 DNN 之前加上 CNN,先去除不必要的参数,再进入 DNN。
- 常用于图片识别:
- 对图像特征的局部性(稀疏连接)和平移不变性(参数共享)进行处理。
- 分层特征提取:从低级到高级,捕获图片中的复杂结构。
- 池化层:降维,减少参数量。
2. CNN 的架构
-
特征1(卷积层)
- 检测局部图案,不需要查看整张图。
- 满足稀疏连接特性。
-
特征2(卷积层)
- 对不同位置相同的图案,使用相同的参数(Filter)。
- 满足参数共享特性。
-
特征3(池化层)
- 通过抽样将图片缩小,保留最重要的特征,且不影响最终结构。
3. 卷积层
- 总体功能:卷积层用于特征提取,通过稀疏连接和权值共享,将输入图像与滤波器进行卷积操作,得到多个特征图
卷积核
-
特点:过滤器,相当于 DNN 中的神经元,卷积核就是 CNN 中的神经元。
-
作用:检查图像中是否存在某些图案。
-
优点:
- 满足特征1:可以只检测局部区域。
- 满足特征2:不同位置的图案共享同一卷积核。
-
注意:卷积核的尺寸会根据输入图像的维度进行调整。
- 例如:若输入图像维度为 1,卷积核为 3×3,若图像维度为 25,卷积核变为 25×3×3。
-
通常情况下,多个不同的卷积核被用于构建过滤器,每个卷积核提取不同的特征。
特征映射
- 过程:卷积核滑动并与图像局部进行卷积操作,得到特征图。
- 注:卷积后的特征映射维度与卷积核的数量相关,而与当前图像维度无关。
- 示例:输入 28×28×3,卷积核 3×3×3,核数为 5,步幅 1 → 输出为 26×26×5。
改进
- 问题:同一个卷积核处理不同大小的图案较为困难。
- 解决方案:在 CNN 前加一层进行图像加工(如缩小、旋转等处理)。
4. 池化层
功能
- 池化层将卷积层输出划分为多个区域,从每个区域中提取最大值或平均值,从而减少图像尺寸,同时保持图像特性。
- 保持平移、伸缩、旋转不变性。
- 减少参数量,提升模型的泛化能力。
Flatten
- 过程:池化层操作后,将提取到的特征平铺,输入到 DNN 层进行深度学习。
池化类型
- 平均池化:对每个区域取平均值,保留整体信息。
- 最大池化:对每个区域取最大值,提取最显著的特征。
5. CNN 的应用
-
AlphaGo
- 只使用了卷积层,不使用池化层。
-
语音识别
- 将语音转为频谱图,卷积核仅在纵坐标(频率)方向上移动,而不在时间序列方向上移动。其他模型用于处理时间序列部分。
-
文字处理
- 卷积网络的核心是捕捉局部特征。在文本处理中,若干单词组成的滑动窗口就构成了局部特征。
- 对特征进行组合和筛选,获取不同层次的语义信息。
- 只在时间方向上使用卷积,因为不同维度的文字意义是相互独立的。