相关专题:⭐ 李宏毅2020机器学习资料汇总
文章目录
4. CNN
Convolutional Neural Network(P17)
首先,李宏毅老师介绍了为什么要用CNN来处理图像。
Q:明明 DNN 也可以处理图像,那么为什么要用 CNN 呢?
A:普通的 DNN 用的是全连接层,参数数量特别多。因此,可以根据图像特征,将DNN 简化为CNN,基于以下几个观察(特性):
- 一些模式(pattern)远比整张图像小得多,一个神经元只需要发现这些模式,而不需要看整张图像。如:人脸识别中,一些负责识别眼睛,一些负责识别鼻子,一些负责识别嘴巴等等。将一些小区域与少量参数相关联。
- 同样的模式可能出现在图像的不同区域。如:人脸识别中,鼻子在图上的位置可能不同,可能在正中间,可能偏上,也可能偏下。用同一组的参数做几乎同样的事情。
- 对图片做下采样,不会改变图中的物体。下采样让图像变小,减少参数。
卷积层针对特性1和特性2,最大池化(Max Pooling)层针对特性3。
AlphaGO下围棋也用到了CNN,因为围棋棋盘也满足1和2这两个特性。
李宏毅老师先整体介绍了 CNN 的流程,然后分别介绍卷积操作和最大池化操作。
整体的 CNN 如下所示:
一张图像多次经过卷积层+池化层,然后展平,通过一个全连接的前向传播神经网络(分类器)来进行分类。
卷积(convolution)操作中有一些过滤器(filter),也被称为卷积核,相当于神经网络中的神经元,需要被学习。
过滤器就是一些矩阵,它负责提取图像中的特征,进行特征映射(feature map)
注:卷积操作听起来很复杂,实际上比矩阵乘法简单很多,就是两个大小为的矩阵中对应位置的元素相乘,再把乘积累加,建议看视频理解。
下图中
CNN 做卷积相当于 DNN 的全连接层去掉一些权重,比如: 的过滤器相当于它只连接了 9 个输入,而不是全连接。
因此,一个卷积核就是几个神经元的共享参数,使得 CNN 相比 DNN 来说,参数减少了。
最大池化层(Max Pooling)进行下采样。
如:上图划分 的区域进行下采样,选择每个 的区域中最大的值作为这个区域的值。
之后,李宏毅老师介绍了 Keras 中如何搭建CNN(因为这是之前的视频,所以用的是Keras,2020年的作业中用到的是PyTorch)以及输入的图像经过 CNN 的每一层后的大小。
虽然用到的工具不同,但是计算 CNN 中的参数以及图像经过 CNN 的每一层后的大小的方式相同。
例如:
- 输入图像大小为 (单通道的灰度图,长为28像素,宽为28像素)。
- 它经过第一个卷积层,卷积层有25个卷积核,每个卷积核大小为 ,那么输出的图像大小为 ,每个卷积核有 个参数,那么总共有 个参数。
- 它经过第一个最大池化层,输出的图像大小为 .
- 它经过第二个卷积层,卷积层有50个卷积核,每个卷积核大小为 ,那么输出的图像大小为 ,每个卷积核有 个参数,那么总共有 个参数。
- 它经过第二个最大池化层,输出的图像大小为 .
![]()
之后,李宏毅老师介绍了 CNN 每一层可能学到的东西(一些奇怪的模式),最后,介绍了 CNN 的一些应用,如:Deep Dream、Deep Style、AlphaGo、语音识别、文本处理等。
Graph Neural Network (1_2) (选学)(P18)
Graph Neural Network (2_2) (选学)(P19)
* 2020新增内容,由助教讲授
仍然讲得有点懵逼,就凑合着听听吧。