卷积神经⽹络(CNN)⼊门讲解
研究生考试网上报名卷积神经⽹络(CNN)⼊门讲解
)
转载:
微信公号:follow_bobo
机器学习(⾃动找Loss最⼩的函数)问题分类
回归:得到的output为数值。预测未来的数据
分类:⽅法RNN,CNN。
⽣成Generate:⽐如翻译⽂字,⽣成图⽚。
监督学习Supervid Learning:准备海量数据作为input+Labled Data(期待结果)
industrialization强化学习Reinforcement:不需要期待结果,让机器⾃⼰相互对弈,⾃⼰判断输出结果是否为理想答案
对于机器找到的函式⽤Loss损失函数来评估函数的好坏。
神经⽹络架构(Network Architecture)确定函式的搜寻范围
CNN
简化神经⽹络的架构
英文字典每个neutral只要连接到图⽚的⼀个很⼩的局部区域(⼀些patterns⽐整张图⽚⼩很多)—— Convolution处理
侦察同样pattern的neutral共⽤⼀组参数(同样的patterns出现在⼀张图⽚的不同区域)——Convolution处理
Subsampling the pixels(下采样) 抽取掉偶数和奇数的像素条使得图⽚缩⼩(Subsamling部分像素不会改变整张图⽚的特性)——Pooling处理
CNN结构
CNN主要由3种模块构成:
卷积层(Convolution)
采样层(Pooling)
全连接层
⼤致上可以理解为:
通过第⼀个卷积层提取最初特征,输出特征图(feature map)
通过第⼀个采样层对最初的特征图(feature map )进⾏特征选择,去除多余特征,重构新的特征图
第⼆个卷积层是对上⼀层的采样层的输出特征图(feature map)进⾏⼆次特征提取
第⼆个采样层也对上层输出进⾏⼆次特征选择
全连接层就是根据得到的特征进⾏分类
这个最简单的卷积神经⽹络说到底,终究是起到⼀个分类器的作⽤
卷积层负责提取特征,采样层负责特征选择,全连接层负责分类
卷积层
卷积核(滤波器Filter,convolution kernel)是可以⽤来提取特征的,图像和卷积核卷积,就可以得到特征值,就是destination value。卷积核放在神经⽹络⾥,就代表对应的权重(weight)
每⼀个FIlter都是⼀个Matrix,每个Matrix中的数值都是⽹络的参数,需要进⾏学习后得到。如下图3X3的卷积核相当于在侦察3X3的pattern,不看整张图
这⾥我想强调⼀下点乘,虽说我们称为卷积,实际上是位置⼀⼀对应的点乘,不是真正意义的卷积。点乘完所有结果加起来,实际上就是把所有作⽤效果叠加起来。
⽐如:通过对红®、绿(G)、蓝(B)三个颜⾊通道的变化以及它们相互之间的叠加来得到各式各样的颜⾊, 这三个颜⾊通道叠加之后,就是我们看到的RGB图⽚了。
每种颜⾊的对应分量代表原图中该⾊彩通道对应的像素值,对应的三个卷积核,⾥⾯的数字即相当于权重,与反向传播算法(backpropagation)有关。
假设我们已经知道对应分量以及卷积核:
我们知道输⼊,知道神经元的权值(weights)了,根据神经⽹络公式:
=
Output Array
我们实现卷积运算最后的⽅式,就是先从左到右,每隔x列Pixel,向右移动⼀次卷积核进⾏卷积(x可以⾃⼰定义),如下图黄—蓝---紫,就是卷积核移动的顺序,这⾥x =1(这⾥的x我们叫作stride,就是步长的意思,如果我们x = 2, 就是相当每隔两⾏或者两列进⾏卷积,当已经到最右),再从上到下,每隔X⾏pixel,向下移动⼀次卷积核,移动完成,再继续如上所述,从左到右进⾏。
西安会计培训
这⾥出现了⼀个问题,如果按照下⾯的这种卷积⽅式,以上⾯的例⼦,第⼀层卷积输⼊的特征图是5X5,但输出的会变成3X3,如果第⼆层
重庆学日语
卷积层的卷积核仍然是3x3, 那么第⼆层卷积层输出的特征图就是1x1,CNN的特征提取就这么结束了。
因此,我们需要zero-padding Array
同样是stride x=1 的情况下,补0⽐原来没有添0 的情况下进⾏卷积,从左到右,从上到下都多赚了2
少儿英语字母教学次卷积,这样第⼀层卷积层输出的特征图(feature map)仍然为5x5,和输⼊图⽚的⼤⼩⼀致。⽽没有添0的第⼀层卷积层输出特征图⼤⼩为3x3
这样有什么好处呢
(1)我们获得的更多更细致的特征信息,上⾯那个例⼦我们就可以获得更多的图像边缘信息
(2)我们可以控制卷积层输出的特征图的size,从⽽可以达到控制⽹络结构的作⽤,还是以上⾯的例⼦,如果没有做zero-padding以及第⼆层卷积层的卷积核仍然是3x3, 那么第⼆层卷积层输出的特征图就是1x1,CNN的特征提取就这么结束了。同样的情况下加了zero-padding的第⼆层卷积层输出特征图仍然为5x5,这样我们可以再增加⼀层卷积层提取更深层次的特征。
采样
采样(pooling/subsample)层实际上就是⼀个特征选择的过程。
假设我们⽤边缘滤波器去卷积输⼊图⽚,得到的特征值矩阵如下:
采样层(pooling)⾮常好理解,我们这⾥特指maxpooling,在四个⽅格⾥选最⼤的那个,对,就是9我只在乎你日语歌词
这个矩阵就是特征图,数字的含义,你可以理解为能代表这个特征的程度。⽐如上⼀层卷积层的卷积核或者说过滤器是边缘过滤器。9的意思就代表在这个区域,这⼀块部位最符合边缘特征。
Maxpooling
Maxpooling 就是在这个区域内选出最能代表边缘的值,也就是9,然后丢掉那些没多⼤⽤的信息
可以理解成每2X2的⼤正⽅形(包含四个最⼩正⽅形)为⼀个单位,在每个单位的四个⼩⽅块中选⼀个最⼤值作为这个单位的代表。共同组成池化后的结果。
池化层还有什么性质
它可以⼀定程度提⾼空间不变性,⽐如说平移不变性,尺度不变性,形变不变性。单独区域的特征,以及特征之间的相对位置(⽽不是绝对位置)不发⽣改变。
以平移不变性(translation invariant)为例,意思就是图像经过⼀个⼩⼩的平移之后,依然产⽣相同的池化特征。这个⼩⼩的平移要注意了,这个平移是在你的池化矩阵的范围,对于单个像素,有8个变换的⽅向(上、下、左、右、左上、左下、右上、右下),如果最⼤层是在2*2的窗⼝上⾯实现,这8个可能的配置中,有3个可以准确的产⽣和平移前相同的结果(filter size 2x2)【右,下,右下】
池化层提⾼空间不变性的重要性在于当像素位置发⽣变化时,我们仍然希望分类器可以识别。⽐如下图中的数字2,虽然位置发⽣了变化,但分类器仍然可以识别。
暑假训练营
Pooling 层说到底还是⼀个特征选择,信息过滤的过程,也就是说我们损失了⼀部分信息,这是⼀个
和计算性能的⼀个妥协,随着运算速度的不断提⾼,我觉得这个妥协会越来越⼩。现在有些⽹络都开始少⽤或者不⽤pooling层了。
average pooling
实际上就是把filter ⾥⾯的所以值求⼀个平均值
特征提取的误差主要来⾃两个⽅⾯:
(1)邻域⼤⼩受限;
(2)卷积层权值参数误差。
⽬前主流上对于average pooling 和max-pooling 的主要区别在于
average -pooling能减⼩第⼀种误差,更多的保留图像的背景信upgrade什么意思
max-pooling能减⼩第⼆种误差,更多的保留纹理信息
激活函数
在讨论激活函数之前,我们先来看⼀个普通的神经⽹络,有多普通
这个神经⽹络,可以轻松解决普通的线性⼆分类问题。
可是现实⽣活中,更多的是复杂的⼆分类。你会发现,⼀个普通的线性神经⽹络⽆论怎么移动和反转,都⽆法将上图分类,因为给出的样本点就不是线性可分的。
釜山英文
也就是说,现在的神经⽹络学习能⼒⾮常有限,⽆法去解决⾮线性问题。
其实⼤数早已经教过我们,线性函数具有可加性和齐次性,任意线性函数连接都可以等价为⼀个单⼀线性函数,即叠加简单神经⽹络解决不了⾮线性分类问题
因为我们最终要解决⼀个分类问题(classification)