Convolutional Neural network(卷积神经网络)

目录

Why CNN for Image?

The whole CNN structure

 Convolution(卷积)

Max Pooling

Flatten

 CNN in Keras

 What does CNN learn?

what does filter do

what does neuron do

 what about output

 Deep Dream

Application

Playing Go

Speech

 Text


Why CNN for Image?

当我们直接用一般的fully connected的feedforward network来做图像处理的时候,往往会需要太多的参数;用CNN来做,就可以简化neural network的架构,我们根据自己的知识和对图像处理的理解,一开始就把某些实际上用不到的参数给过滤掉。

  • 对一个神经元来说,想要侦测有没有某一个pattern出现,它其实并不需要看整张image,只需要看这张image的一小部分,就可以决定这件事情了。

Convolutional Neural network(卷积神经网络)_第1张图片

  • 相同的pattern在不同区域时,神经元就可以使用相同的参数来学习不同位置的pattern。

Convolutional Neural network(卷积神经网络)_第2张图片

  • 我们可以对一张image做subsampling(二次抽样),对图像辨识来说,是没有太大的影响的。

Convolutional Neural network(卷积神经网络)_第3张图片

The whole CNN structure

下图展示了CNN的整体流程。

Convolutional Neural network(卷积神经网络)_第4张图片

Convolutional Neural network(卷积神经网络)_第5张图片

convolution主要做两件事,第一件事检测某个pattern不需要看整张image,然后第二件事是同一个pattern会出现在图片的不同区域。Max Pooling主要做缩放图片。

 Convolution(卷积)

  • Property 1

每一个Filter都是通过Training data学出来的,而不是人为设计的。当它侦测的时候,并不会去看整张image,它只看一个3*3范围内的pixel,就可以判断某一个pattern有没有出现,这就考虑了property 1。

Convolutional Neural network(卷积神经网络)_第6张图片

  • Property 2

同一个pattern出现在image左上角的位置和左下角的位置,并不需要用到不同的filter,我们用filter1就可以侦测出来,这就考虑了property 2

Convolutional Neural network(卷积神经网络)_第7张图片

  • Feature Map(特征映射)

我们用不同的filter去做convolution得到的结果就叫Feature Map(特征映射),有多少个filter,对应就有多少个映射后的image。

Convolutional Neural network(卷积神经网络)_第8张图片

  • Convolution V.s. Fully connected

每一个filter就相当于一个神经元。如下图,我们将36个特征值排成一列,而filter1就相当于是9个w。下图用不同的颜色代表不同的w,卷积的时候并没有将所有的特征值与filter做内积,这也减少了参数的使用。

Max Pooling

现在,我们将每个feature map划分成四等分,取每一份里最大的。

Convolutional Neural network(卷积神经网络)_第9张图片

这时feature map变成了2x2的矩阵了,再次减少了特征。

Convolutional Neural network(卷积神经网络)_第10张图片

Flatten

Flatten就是,把左边的feature map拉直,然后把它丢进一个Fully connected Feedforward network。

Convolutional Neural network(卷积神经网络)_第11张图片

 CNN in Keras

Convolutional Neural network(卷积神经网络)_第12张图片

 What does CNN learn?

我们任取一个filter,我们用来表示该filter每一个参数的和,这个和表示该filter被激活(被训练)的程度。这时我们要找一个输入x,这个x可以让这个和最大,当这个和最大的时候,被激活的程度也就越大。这时,我们使用梯度上升的方法去寻找使最大的x*。

Convolutional Neural network(卷积神经网络)_第13张图片

what does filter do

假设说我在50个filter里任取12个filter,然后来分别看这12个filter找的x*,我们发现每个filter找的x都比较有特点,也就是说每一个filter可以识别一张图的某一类特点。

Convolutional Neural network(卷积神经网络)_第14张图片

what does neuron do

然后我们将经过CNN的image在flatten后传入fully connect network。然后任取一个神经元记为aj,我要找到使aj最大的x。

每一个neuron不再是只看整张图的一小部分,它现在的工作是看整张图。

Convolutional Neural network(卷积神经网络)_第15张图片

 what about output

然后我们来找令output最大的x*,结果如下,我们发现这就张图我们是看不懂的。但是是机器可以识别它们分别代表哪一个数字。那么我们对它进行处理,L1正则化,这时的识别效果会好很多。

Convolutional Neural network(卷积神经网络)_第16张图片

 Deep Dream

Deep Dream是,如果你给machine一张image,它会在这个image里面加上它看到的东西。

Convolutional Neural network(卷积神经网络)_第17张图片

Convolutional Neural network(卷积神经网络)_第18张图片

  • Deep Style

如果今天你input一张image,Deep Style做的事情就是让machine去修改这张图,让它有另外一张图的风格,如下所示。

Convolutional Neural network(卷积神经网络)_第19张图片

Application

  • Playing Go

对于CNN来说,就是直接把它当成一个image来看待,然后再output下一步要落子的位置。

Convolutional Neural network(卷积神经网络)_第20张图片

Convolutional Neural network(卷积神经网络)_第21张图片

Speech

filter只在Frequency即纵坐标的方向上移动,而不在时间的序列上移动。

Convolutional Neural network(卷积神经网络)_第22张图片

 Text

首你把这个word sequence里面的每一个word都用一个vector来表示,vector代表的这个word本身的semantic (语义),那如果两个word本身含义越接近的话,它们的vector在高维的空间上就越接近,这个东西就叫做word embedding。

Convolutional Neural network(卷积神经网络)_第23张图片

你可能感兴趣的:(李宏毅机器学习,cnn,深度学习,计算机视觉)