机器学习从零单排(白银五)——CNN

机器学习的课程已经过半,中间凸优化,对偶问题占了很大一部分。由于数学公式的繁琐和我掌握的不够透彻,就不写成blog了。这一篇写一下CNN(卷积神经网络),在CNN之前老师讲了DNN,实际上和之前自己学习的BP神经网络大同小异,主要内容都是反向传播,权重网络结构等等,就先不写了!这篇是用来复习周一的小测,刚得知作业的DDL 并不是周一而是明天周六,感到悲伤。之后作业也写在这篇里。

CNN

CNN 为卷积神经网络,CNN要做的事情举例来讲,给定一张图片,如果是狗,那么要提取出狗的特征,为什么是狗。我的理解就是人类看到狗的时候会看到狗有耳朵有鼻子有嘴有他们的位置等这些特征,而卷积神经网络也是同样提取出这些特征。


image.png

图像处理的一些算子

卷积与信号

在图像处理之前,首先回忆一下卷积处理是一个什么东西。(忘了)
不急,先回忆一下信号与系统。
用不同的函数的线性组合,表示原信号。

傅里叶分析用的是不同的正弦函数的线性组合;

而卷积,用的是h[n]移位不同的k得到的一系列h[n-k]的线性组合。

天哪,连信号也有点忘了。想起来以前一个非常优秀的解释。
以下为转载
作者:鱼腻
链接:https://www.zhihu.com/question/22298352/answer/91131073
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

关于卷积的一个血腥的讲解比如说你的老板命令你干活,你却到楼下打台球去了,后来被老板发现,他非常气愤,扇了你一巴掌(注意,这就是输入信号,脉冲),于是你的脸上会渐渐地(贱贱地)鼓起来一个包,你的脸就是一个系统,而鼓起来的包就是你的脸对巴掌的响应,好,这样就和信号系统建立起来意义对应的联系。下面还需要一些假设来保证论证的严谨:假定你的脸是线性时不变系统,也就是说,无论什么时候老板打你一巴掌,打在你脸的同一位置(这似乎要求你的脸足够光滑,如果你说你长了很多青春痘,甚至整个脸皮处处连续处处不可导,那难度太大了,我就无话可说了哈哈),你的脸上总是会在相同的时间间隔内鼓起来一个相同高度的包来,并且假定以鼓起来的包的大小作为系统输出。好了,那么,下面可以进入核心内容——卷积了!如果你每天都到地下去打台球,那么老板每天都要扇你一巴掌,不过当老板打你一巴掌后,你5分钟就消肿了,所以时间长了,你甚至就适应这种生活了……如果有一天,老板忍无可忍,以0.5秒的间隔开始不间断的扇你的过程,这样问题就来了,第一次扇你鼓起来的包还没消肿,第二个巴掌就来了,你脸上的包就可能鼓起来两倍高,老板不断扇你,脉冲不断作用在你脸上,效果不断叠加了,这样这些效果就可以求和了,结果就是你脸上的包的高度随时间变化的一个函数了(注意理解);如果老板再狠一点,频率越来越高,以至于你都辨别不清时间间隔了,那么,求和就变成积分了。可以这样理解,在这个过程中的某一固定的时刻,你的脸上的包的鼓起程度和什么有关呢?和之前每次打你都有关!但是各次的贡献是不一样的,越早打的巴掌,贡献越小,所以这就是说,某一时刻的输出是之前很多次输入乘以各自的衰减系数之后的叠加而形成某一点的输出,然后再把不同时刻的输出点放在一起,形成一个函数,这就是卷积,卷积之后的函数就是你脸上的包的大小随时间变化的函数。本来你的包几分钟就可以消肿,可是如果连续打,几个小时也消不了肿了,这难道不是一种平滑过程么?反映到剑桥大学的公式上,f(a)就是第a个巴掌,g(x-a)就是第a个巴掌在x时刻的作用程度,乘起来再叠加就ok了,大家说是不是这个道理呢?

ok看到这里大致回忆起来卷积的事情了。

Hand-crafted features

这是提取特征的第一种方式

Sobel Operator

image.png

Robinson Compass Mask

image.png

以上两个是矩阵和图像进行卷积得到的结果。将原来的图像转化为二维像素矩阵,再和算子进行卷积操作。

那么矩阵的卷积是怎么实现的呢??

https://mlnotebook.github.io/post/CNN1/
人家的动图画的已经非常好了

Histogram Of Gradient(HOG)梯度方向直方图

https://www.learnopencv.com/histogram-of-oriented-gradients/
老师PPT原文链接在此
以下是一篇不错的翻译
讲的超级清楚
https://www.leiphone.com/news/201708/ZKsGd2JRKr766wEd.html

SIFT

这一部分感觉不是这门课程的重点,先放wiki,和算法的主页,日后再详细学习。
https://en.wikipedia.org/wiki/Scale-invariant_feature_transform
http://weitz.de/sift/

Learned Feature

image.png

特征学习这种方法就是自动识别出来狗的耳朵,狗的鼻子,狗的眼睛这样不同的特征。当然可以是局部

逐层分析CNN

首先先上一张图


image.png

从这张图开始进行逐层的分析,其实可以看出,无非就是卷积,取样,卷积,取样····最后得到这样的神经网络。
分析第一步


image.png

重点是每一个filter代表一个特征。
当我有好多个filter的时候我就可以得到很多的feature maps

image.png

Pooling Layer

研究第二个层,subsampling。实际上叫池化层。准确的说就是缩小参数矩阵的大小。当然有很多种不同的池化的方法。


image.png

没有去上课的我对池化这个过程感到怀疑,觉得实际应用效果不一定好呀。

Fully Connected Layer

image.png

最后这一步就很好理解了。将反复卷积求得的特征矩阵扁平化,然后就变成数了,然后就和最简单的神经网络是一样的了。


image.png

未完待续。。

你可能感兴趣的:(机器学习从零单排(白银五)——CNN)