week1-2
我们之前在说面部识别介绍过,要识别面部,都是从细微的边缘入手,一层一层聚类,最终实现人脸的识别。神经网络由浅层到深层,分别可以检测出图片的边缘特征 、局部特征(例如眼睛、鼻子等)、整体面部轮廓。
我们就以边缘检测为例子,介绍卷积运算。
一个垂直边缘是一个3x3的区域, 左边有亮像素,中间无所谓,右边是暗像素
图片边缘有两种渐变方式,一种是由明变暗,另一种是由暗变明。以垂直边缘检测为例,下图展示了两种方式的区别。实际应用中,这两种渐变方式并不影响边缘检测结果,可以对输出图片取绝对值操作,得到同样的结果。
positive edge v.s. negative edge
除了上面提到的这种简单的Vertical、Horizontal滤波器之外,还有其它常用的filters,
sobel过滤器,它增加了中间一行的权重,使得结果的鲁棒性更强。还可以将权重再提高一些,scharr过滤器:
在深度学习中,如果我们想检测图片的各种边缘特征,而不仅限于垂直边缘和水平边缘,那么filter的数值一般需要通过模型训练得到,类似于标准神经网络中的权重W一样由梯度下降算法反复迭代求得。CNN的主要目的就是计算出这些filter的数值。确定得到了这些filter后,CNN浅层网络也就实现了对图片所有边缘特征的检测。
padding
两个问题:
-
卷积运算后,输出图片尺寸缩小
-
原始图片边缘信息对输出贡献得少,输出图片丢失边缘信息
根据是否进行填充,卷积方法可以分为两种,一种是valid convolution(不进行填充),另一种是same convolution(也就是保证图片在卷积前后的维度相同)。在后一种卷积方式中,为了保证卷积前后的维度不变,p值应该等于(f-1)/2,(filter尺寸为f x f,注意f一般为奇数,若为偶数,则会产生不对称填充。)
(另外一个原因,奇数维度的过滤器有一个中心点,便于指出过滤器的位置,会很方便。)
(这是计算机视觉的传统)
4、卷积神经网络-步长(strid)
前面的例子,卷积的步长为1,也就是过滤器在原始输入图片中,每一次移动一个方格。我们也可以设置不同的步长进行卷积。
⌊ ⋯ ⌋表示向下取整。若[(n+2p-f)/s + 1] 不为整数,则向下取整,这么处理的实际意义就在于,只有当过滤器完全覆盖了输入图片的像素点时,卷积才是有效的。
卷积和互相关:
在数学定义上,矩阵的卷积(convolution)操作为首先将卷积核同时在水平和垂直方向上进行翻转(沿对角线翻转),构成一个卷积核的镜像,然后使用该镜像再和前面的矩阵进行移动相乘求和操作。如下面例子所示:
在深度学习中,我们称为的卷积运算实则没有卷积核变换为镜像的这一步操作,因为 对卷积核翻转,会使卷积核保持结合率 A*(B*C)=(A*B)*C,这一性质对deep NN并不重要。深度学习的卷积操作在数学上准确度来说称为互相关(cross-correlation)。
在信号处理或其他数学分支领域 做翻转(flipping)
三维卷积
输入图像的通道数量与过滤器的通道数量必须相同,
结果的通道数则由过滤器的个数决定,
单层卷积网络
输入的图片经过两个过滤器,得到两个4*4的矩阵,相当于对输入图片的像素点做了线性操作(像素点的值和过滤器的权重进行点乘),然后对于4*4的矩阵的每个元素加上一个bias,再对结果进行非线性变化(Relu),经过堆叠之后,得到最终的4*4*2的结果。
整个过程与标准的神经网络单层结构非常类似:
我们发现,选定滤波器组后,参数数目与输入图片尺寸无关。所以,就不存在由于图片尺寸过大,造成参数过多的情况。
activations:激活值的维度也就是本层神经网络输出的图片的维度
A[i]:如果应用的是向量化实现vectorized implementation,或批量梯度下降
batch gradient descent进行训练的话,每次训练的样本有m个,则激活值要乘上m。
简单的深度卷积神经网络
到第三层,你把39x39x3的输入图像,计算出此图像的7x7x40 features
hyperparameter:filters size?stride?padding?filters数量?
多层卷积神经网络的趋势就是,随着层数的加深,图片的长和宽会减小,而channel数目会不断增加。
CNN通常有三种类型的layer:
-
Convolution层(CONV),CONV最为常见也最重要,
-
Pooling层(POOL)
-
Fully connected层(FC)
pooling
max pooling所做的其实是,如果在filter中任何地方检测到了这些特征、就保留最大的数值;但是 如果这个特征没有被检测到、于是 那些数值的最大值仍然相当小,这就是max pooling在卷积网络中效果很好的根本原因。
若输入的信道数量