0
点赞
收藏
分享

微信扫一扫

【李宏毅2020 ML/DL】P17 Convolutional Neural Network



我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的、自己不知道的东西。


已经有人记了笔记(很用心,强烈推荐):

https://github.com/Sakura-gh/ML-notes

本节对应笔记:

  • https://sakura-gh.github.io/ML-notes/ML-notes-html/11_Convolutional-Neural-Network-part1.html
  • https://sakura-gh.github.io/ML-notes/ML-notes-html/12_Convolutional-Neural-Network-part2.html

本节内容综述

  1. 引出 CNN ,为什么不用正常的全连接网络?因为如果输入图片后,紧跟全连接层,那么​​参数过多​​。引出,一开始要做一些“简化”,这就是CNN的引出。
  2. Why CNN for Image?​​Some pattern are much smaller than the whole image​​,举了一个例子,见[小细节](#A Neuron see small region with less parameters)。
  3. 接着介绍了CNN的架构:​​Convolution​​​,​​Max Pooling​​​,​​Convolution​​​,​​Max Pooling​​​,…,​​Flatten​​, 全连接层;
  4. 开始介绍了​​Convolution​​​,见小细节;
  5. Convolution v.s. Fully Connected,实际上卷积层就是全连接层的简化,见[小细节](#Convolution v.s. Fully Connected);
  6. Max Pooling,见[小细节](#Max Pooling)
  7. CNN in Keras,讲解如何用​​Keras​​声明一个CNN,涉及到参数的意义,以及前后卷积层的对接,了解了原理后,工程内容不予记录;
  8. 接着老师讨论了​​What does CNN learn?​
  9. 接下来的内容在“小细节”最后一个部分详细讨论(包括:用DeepDream举例卷积神经网络“看到”了什么;卷积神经网络的其他应用如围棋等)。

小细节

A Neuron see small region with less parameters

【李宏毅2020 ML/DL】P17 Convolutional Neural Network_深度学习

相比全连接层,CNN中每个神经元只连接了图片中的一小部分,减少了参数,但是具有实际意义。

【李宏毅2020 ML/DL】P17 Convolutional Neural Network_神经网络_02

此外,对于不同的区域,可能要做相同的判断(如鸟嘴出现在了不同区域);不需要训练两个神经元,只需要共享参数即可。

CNN-Convolution

【李宏毅2020 ML/DL】P17 Convolutional Neural Network_神经网络_03

在卷积中有一个比整张图片小的​​Filter​​,其参数也是学习得到的;接着按照滑窗​​stride​​,进行“卷积”,得到新矩阵。

【李宏毅2020 ML/DL】P17 Convolutional Neural Network_人工智能_04

对于彩色的图片,那么我们的​​Filter​​也是对应的多通道的。

Convolution v.s. Fully Connected

【李宏毅2020 ML/DL】P17 Convolutional Neural Network_人工智能_05

如上图,对于一次“卷积运算”,其只相当于用了输入层的9个输入,并没有全连接。

【李宏毅2020 ML/DL】P17 Convolutional Neural Network_卷积_06

滑窗进行一次移动,可以看出输入进行了“滑动”。

注意到权重间存在共享,​​参数更加少了​​!

Max Pooling

【李宏毅2020 ML/DL】P17 Convolutional Neural Network_神经网络_07

假设如上,根据​​Filter​​得到一个4块乘4块的矩阵,那么对于每个“块”,只保留其中最大值 / 平均值。

那么这里会有疑问:如何微分?后面章节会讲​​Maxout network​​。

可见,经过多次 Convolution + Max Pooling 后,实际上是将数据浓缩了。

What does CNN learn?

【李宏毅2020 ML/DL】P17 Convolutional Neural Network_深度学习_08

将思路反过来:把输入的图片 x x x当初参数,对于任何一个​​Filter​​,其就是在寻找让数据这个“参数”最大的过程。

【李宏毅2020 ML/DL】P17 Convolutional Neural Network_神经网络_09

可以看出,如上,不同的​​Filter​​其提取的数据特征是不同的。

之后查看全连接的输出,可以看到其最终输出为下图。

【李宏毅2020 ML/DL】P17 Convolutional Neural Network_深度学习_10

【李宏毅2020 ML/DL】P17 Convolutional Neural Network_人工智能_11

可以看出,CNN学到的东西与人类的认知是不同的。

有没有可能更好地观察机器输出了什么吗?比较简单的方法是 x ∗ = a r g max ⁡ x ( y i − ∑ i , j ∣ x i , j ∣ ) x^* = arg \max_x (y^i - \sum_{i,j}|x_{i,j}|) x∗=argmaxx(yi−∑i,j∣xi,j∣),意义为找一个图片,其另y最大,但是让大部分的像素和最小,以突出“有墨水”的地方。(下图中公式有笔误,一个是减号而非加号)

【李宏毅2020 ML/DL】P17 Convolutional Neural Network_全连接_12

Deep Dream

Given a photo, machine adds what it sees…

【李宏毅2020 ML/DL】P17 Convolutional Neural Network_全连接_13

输入一张李老师的正常图片,通过调整某一个hidden层的几个参数,CNN夸大化其所看到的东西——生成如下的图片。

【李宏毅2020 ML/DL】P17 Convolutional Neural Network_神经网络_14

Deep Style

Given a photo, make its style like famous paintings.

【李宏毅2020 ML/DL】P17 Convolutional Neural Network_人工智能_15

如图,进行了风格迁移。

【李宏毅2020 ML/DL】P17 Convolutional Neural Network_卷积_16

其大概原理如下图。

【李宏毅2020 ML/DL】P17 Convolutional Neural Network_神经网络_17

More Application: Playing Go

【李宏毅2020 ML/DL】P17 Convolutional Neural Network_全连接_18

如上图,将棋盘视为一个矩阵输入,但是可以通过CNN处理棋盘,让参数减少,信息浓缩。

这是因为,围棋有些特性与图片相似:

  • Some patterns are much smaller than the whole image(Alpha Go uses 5 × 5 for first layer)
  • The same patterns appear in different regions
  • Subsampling the pixels will not change the object(但是这一点让李老师一开始想不通,不符合常理,下面展开讨论)

Why CNN for playing Go?

【李宏毅2020 ML/DL】P17 Convolutional Neural Network_卷积_19

实际上,​​Alpha Go​​​的文章附录中讲明了…没有使用​​Max Pooling​​。

More Application: Speech

【李宏毅2020 ML/DL】P17 Convolutional Neural Network_人工智能_20

如上,有经验的人可以大概识别这个​​Spectrogram​​图片的内容;对于CNN,则将一段时间视为一个“图片”,并且通常来讲,CNN只做竖向移动。

More Application: Text

【李宏毅2020 ML/DL】P17 Convolutional Neural Network_人工智能_21

对于由’word embeddiing’连成的句子,同样可以使用 CNN 进行处理。



举报

相关推荐

0 条评论