Lecture10 Convolutional Neural Network

为什么CNN常用在影像处理上?如果我们用Fully Network来做影像处理的话,每一个Neuron实际上就代表一个Classifier,举例来说,第一层的Neuron做的事情就是有没有绿色出现,有没有红色出现,有没有条纹出现,第二层的Neuron做的事情就是相比第一层更加复杂,在第一层Layer的Output基础上,如果看到直线横线,那么可能就是框框的一部分,如果看到棕色直条纹就是木纹,看到斜条纹就可能是轮胎等等,第三层再在第二层Layer的Output基础上再次做更加复杂的Classify。假设我们输入的是一张解析度100*100的彩色图片,如果把它转换成Vector将会有100 * 100 * 3=30000维,如果第一层Layer有1000个Neuron,那么第一层Layer的参数就有30000 * 1000个,实在是太多了,所以就需要简化这个网络的架构,根据我们之前掌握的知识,就可以判断出某些参数是用不上的,一开始就把这些参数过滤掉,所以CNN是比一般的DNN更简单的架构。

image.png

为什么我们有可能把一些参数拿掉?有如下几个原因:
1.在影像处理中,如果我们说第一层Layer中的Neuron做的事情就是侦测有没有某一种Pattern出现,但是大部分Pattern是比整张Image还要小的,所以对于一个Neuron来说它不需要看整张Image。现在我们有一张图片,假设某个Neuron的功能是侦测有没有鸟嘴的出现,只需给Neuron看红色框框的部分它就可以决定出结果。

image.png

2.同样的Pattern可能会出现在Image中不同的位置,但只需要用同一种Neuron就可以侦测出来。


image.png

3.我们可以将一个Image做一个Subsampling,分别把它的奇数行偶数列拿掉,所小为原来的1/10,对于识别结果不会产生影响。
image.png

整个CNN的结构如下:


image.png

对于图像处理的三个特性,1跟2是通过Convolution来处理,3是通过Max Pooling来处理。


image.png

接下来介绍Convolution Layer的工作流程:假设现在我们Network的输入是一张6 * 6的黑白Image,在Convolition Layer里面有一组Filter(就等于Fully Connecter Network中的一个Neuron),每一个Filter就是一个矩阵,每个矩阵中的值就是Network的Parameter(等同于Neuron的Weight和Bias),每个Filter里的参数是自动被学出来的。如果Filter是3 * 3的矩阵,那么它的功能就是侦测Image里3 * 3范围有没有某一个Pattern,将输入的矩阵与每个Filter相乘,就会得到一组结果矩阵,称为Feature Map。

image.png

如果我们的输入是一张彩色的Image呢?彩色由RGB三种组成,所以我们的输入矩阵其实不是跟黑白Image一样只是一张,而是三张,所以我们每个Filter也是三张矩阵。需要注意的是对于每种颜色的矩阵不是分开来算,而是每一个Filter都考虑到了三种颜色的矩阵,对于每个Filter其中的一张矩阵,分别与Image的三张矩阵做内积,结果组合在一起。


image.png

那么Convolution跟Fully Connecter有什么关系呢?可以这么理解,Convolution其实就是Fully Connected Network中的一层Layer把某些Weight拿掉而已。通过Filter后的输出也就是FeatureMap其实就可以当作Fully Network中一层Layer的输出。

image.png

现在来分析一下Convolution中Filter的工作过程,当一个3 * 3的Filter与Image的输入矩阵做内积时,实际上可以把Image的输入矩阵拉直,拉成一个一维的向量,如下图所示,内积后得到一个结果,也就是Layer中某个Neuron的输出,而这个Neuron的Weight(也就是Filter中矩阵的参数)只连接到输入的一维向量的第1,2,3,8,9,10,13,14,15个位置的Input。而对于Fully Connected Network中,每一个Neuron的Weight是要连接到所有Input的。现在我们将Input的矩阵移动一格,再与Filter做内积,得到一个结果-1,那么输出这个结果的Neuron的Weight只连接到Image的第2,3,4,8,9,10,14,15,16个的输入,而这个Neuron的Weight参数是与输出3的Neuron的参数是相同的,所以这两个Neuron做到了Share Weights(方法是我们强迫一些Neuron之间必须用相同的Weight),对于Fully Connected,每个Neuron都有一组自己的Weight,那么相比来看,Convolution又大大减少了参数的数量。

image.png

Convolution做完后接下来做MaxPooling,相比Convolution来说,MaxPooling的工作就简单许多。根据Filter1与输入矩阵的内积得到FeatureMap1,Filter2与输入矩阵的内积得到FeatureMap2,接下来把输出都分为四个一组,每组可以选平均值或者最大值或者其他方法,目的就是把原来四个值合成一个值。


image.png

所以当一张6 * 6的Image做完一次Convolution和一次MaxPooling后,它就变成了一张新的2 * 2的Image。


image.png

Flatten的做法就是将FeatureMap拉直,丢到FullyConnectedNetwork中。


image.png

如何判断一个Filter做的是什么工作?(这部分有点没听明白)将FeatureMap第K层的结果加起来作为第K个卷积核的激活程度。现在我们的任务就是找到一个x使这个激活程度最大。(通俗的说就是找一张图案使得某个Filter的FeatureMap取得最大值,也就是这个Filter主要是用来识别这种图案特征的。)

image.png

如下列举了12个能够使前12个Filter的FeatureMap值最大的Image。对于每个FIlter来说,它考虑的都是图上一个小小的范围而已,如果图片上出现了某种条纹,那么这个Filter的输出就会很大。

image.png

接下来分析Fully Connected中的Layer。如何弄清楚Fully Connected中的每个Neuron的功能呢?如法炮制,我们定义某一层Layer中第j个Neuron的输出为aj,接下来要做的事情就是找一张Image输入,使得aj取得最大值。需要注意的是,此时每个Neuron不再只是针对Image中的一个小小的范围,而是整张Image。

image.png

那么同理再观察最终的输出层Neuron,假设在做数字识别,输出层有10个Neuron,代表数字0~9,那么根据之前对Convolution中FIlter以及FullyConnected中Neuron的观察经验,是否输出层每个Neuron的输出就大致像某个数字?其实不是,结果如下,每个都像黑白电视一样,是出错了吗?并不是,只是CNN学到的东西跟人类想象中的不太一样,但它确实是能够分辨手写数字。


image.png

我们有没有办法让这些图看起来更像数字呢?可以根据人类的先验知识,来加一些限制条件。比如说,一张图片如果是手写数字的话,那么整张图片不可能大部分都是被涂色的(图片中白色表示有墨水),用xij表示图片输入矩阵的第i行第j列的值,将所有的xij值取绝对值加起来,再用yi减去,这个公式的意思就是找到一张Image,能够使y输出最大的情况下图片中大部分的地方是没有涂色的,结果比不加限制条件时更加像一个数字。

image.png

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354

推荐阅读更多精彩内容