【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记

Why CNN for image?

每一个neural代表一个最基本的分类器,使用全连接网络的话,100x100的图片,拉成向量是1001003个像素,但是图片要是30000x30000呢?这样的话,会需要很多很多的参数。。。

CNN的作用就是简化这个神经网络的结构,去掉一些用不到的weight。事实上,CNN模型比DNN还简单,把原来全连接网络中的layer里的一些参数去掉就得到CNN。
【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记

property1:对于整张图来说,一些局部是很小的

为什么可以像上面说的那么做呢
一个neural并不需要取观察整张图片,而是只需要观察一个小部分即可,所以,一个neural只需要连接到一个小块的区域就好,不需要连接到整张图,这样参数更少。
【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记

property2:相同的部分会出现在不同的图片中

下图中,由于侦测鸟嘴的事情是相同的,所以可以共用一套参数,减少用到的参数的量
【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记

property3:对一个图片二次抽样不会影响人对这个图片的理解

例如:去除奇数行偶数列的像素之后,图片大小变成了之前的十分之一大小,不会影响人对这个图片的理解。

所以我们可以把图片变小,用更少的参数来处理图片。
【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记

The whole CNN

【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记

三条性质及其对应的实现方法

【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记

CNN-Convolution

体现property1

每个filter中的值都是从训练数据中学出来的,而不是认为设计的。
【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记
将filter放在左上角,将image和filter做内积,并且不断按照stride步长移动,不断计算,直到移动到右下角。
【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记

体现property2

filter斜对角都是1,1,1,作用就是检测数据中有没有1,1,1。
不论是左上角还是右下角,只要用一个filter即可检测出来,体现property2。
【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记

用另外一个filter得到蓝色的矩阵,红色和蓝色的矩阵结合起来,叫做feature map,有几个filter就会有多少个image。

【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记

CNN - Colorful image

彩色图片,分成好几个矩阵叠加在一起,处理彩色图片的filter也得是立方体。
【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记

卷积的值大意味着和patten相似所以是feature

Convolution vs Fully Connected

Convolution 其实是Fully Connected layer拿掉一些weight 的结果
【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记

例如,下图例子有一个neutral的weight只连接到1,2,3,7,8,9,13,14,15,其他的weight都没有。而这几个weight恰好就是filter里的参数。
【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记

较少的参数!!!
【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记

局部感知+权值共享

本来在fully connected layer中,两个neural有着各自独立的weight,但是在做convolution的时候,首先把每个neural前面连接的weight减少了,切让两个neural共用同一组weight,weight的sharing
【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记

CNN - Max Pooling

【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记
保留最大的
【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记
【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记
重复多次,可以得到一个新image
这个新的image比原来的小,不断重复,,,
【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记

Flatten

【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记
拉直
【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记

CNN in Keras

【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记

这里的50要注意一下,就是25个channel分别和50个filter进行内积,然后再相加

【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记
【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记

What does CNN learn?

【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记

  • 每个滤波器学习出来的特征不同吧
  • 网络参数固定,去计算最优的输入图像
  • filter的参数都是学好的,然后最大化activation来找可以最大程度**filter的输入图案
  • 参数是不变的,只有改变输入的值

【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记

【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记

【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记

【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记

Deep Dream

CNN夸大他看到的东西
【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记
【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记

Deep Style

【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记
【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记
【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记

More Application: Playing Go

【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记
【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记
【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记
【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记

Why CNN for playing Go?

【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记

当把CNN用在一个新的application上的时候,要思考这个application的特性是什么,由此来设计CNN的结构

More Application: speech

Spectrogram:声谱图

在时间方向上移动的话意义不大,而是在频率方向上移动才有意义。
eg:男女说你好,可能pattern是一样的,只是频率不一样。

【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记

More Application:Text

input:word sequence
output:积极/中性/消极

filter沿着句子中词的方向移动,相当于在sentence/时间序列上移动,而不是在embedding dimension上移动,因为每一个dimension的含义是独立的。
【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记

To learn more

【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记
【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记