Convolutional Neural Network(CNN)

卷积神经网络(CNN)

图片的分类也可以理解为Regression,输出一个值

Convolutional Neural Network(CNN)_第1张图片

把RGB三通道的图片变成一个向量,直觉的方法是直接拉直它,输入网络中

Convolutional Neural Network(CNN)_第2张图片

要是这么输入的话,每层的权重会很大

Convolutional Neural Network(CNN)_第3张图片

模型的弹性越大,其overfitting的可能性越大

所以要通过观察进行改进,进行简化

 

简化的方法有三

一、

人类通常观察一个物体的几个特征来辨识,如鸟:喙、眼、爪子

Convolutional Neural Network(CNN)_第4张图片

也许只把图片中的一小部分输入,来侦测某些关键的pattern就可以

Convolutional Neural Network(CNN)_第5张图片

每一个Neuron都只考虑自己特定的区域(Receptive field),然后输入

Convolutional Neural Network(CNN)_第6张图片

Receptive filed之间是可以彼此重叠的

问:

①不同的Neuron可以有不同的大小侦测特定的区域吗?

②仅仅考虑一个通道?

③特定区域可不可以是长方形的?

 答:都是可以的

Convolutional Neural Network(CNN)_第7张图片

经典的设置有

每一个Receptive field 会有好多Neuron去观察,这个范围往后移动就会有新的field,这个步长就等于2,一般设置为1或2,保证两个field的交界处的pattern被检测到,超出的范围就要padding,就是补0(或者其他数字),水平运动和垂直运动,这样图片上的每一个位置都是能被Neuron侦测到的

Convolutional Neural Network(CNN)_第8张图片

二、

相同的pattern会出现在图像的不同位置

这些侦测鸟嘴的Neuron,它们做的事情都是一样的,只是它们守备的范围是不一样的,既然它们做的事情一样,守备范围是不一样的,每一个守备范围真的需要一个侦测鸟嘴的Neuron吗?

Convolutional Neural Network(CNN)_第9张图片

能不能不同Receptive Field的Neuron它们共享参数,也就是做Parameter Sharing。意思就是两个Neuron,它们守备的field不一样,但是它们的参数是一样的,因为输入是不一样的,虽然它们共享参数,所以它们的输出不一样Convolutional Neural Network(CNN)_第10张图片

常见的共享的方法怎么设定的?

这个Receptive Field的一个Neuron共用一组参数,这组参数就叫Filter1

Convolutional Neural Network(CNN)_第11张图片

意思就是每个receptive field都有几个Neuron来守备,相同的Neuron对于不同的field其参数相同,这叫做Filter

总结一下

Convolutional Neural Network(CNN)_第12张图片

换种方式理解CNN

Convolutional Neural Network(CNN)_第13张图片

Convolutional Neural Network(CNN)_第14张图片

Convolutional Neural Network(CNN)_第15张图片

Convolutional Neural Network(CNN)_第16张图片

多少个filters就会产生多少个feature map

Convolutional Neural Network(CNN)_第17张图片

第二层的Filter的高度应与第一层输出的维度保持一致,如64个Filter,产生64个Feature Map,就有64个通道,下一层需要64维的Filter

Neuron越深侦测的范围就越大

Convolutional Neural Network(CNN)_第18张图片

第一个版本中共用的参数就是这个Filter

Convolutional Neural Network(CNN)_第19张图片

Filter扫过receptive field的过程就是Convolution

Convolutional Neural Network(CNN)_第20张图片

Convolutional Neural Network(CNN)_第21张图片

三、

抽掉偶数行和列不会影响辨识

Convolutional Neural Network(CNN)_第22张图片

池化操作

Convolutional Neural Network(CNN)_第23张图片

现在展示的是最大池化

Convolutional Neural Network(CNN)_第24张图片

Pooling做的事情就是把图片变得更小,减少运算

Convolutional Neural Network(CNN)_第25张图片

Pooling主要就是减少运算量,但是会有一些信息的损失,近些年的网络开始去掉Pooling,原因之一就是现在计算的速度变快

整个网络如下

Convolutional Neural Network(CNN)_第26张图片

举个例子

Convolutional Neural Network(CNN)_第27张图片

Convolutional Neural Network(CNN)_第28张图片

Convolutional Neural Network(CNN)_第29张图片

不同的应用上,Filter和权值共享的方法不同

Convolutional Neural Network(CNN)_第30张图片

Convolutional Neural Network(CNN)_第31张图片

你可能感兴趣的:(李宏毅机器学习笔记,人工智能,机器学习)