卷积神经网络——传统卷积网络和残差网络

这是吴恩达老师的第二部分视频的学习笔记

1 概述问题

1.1带着这样的问题来看笔记

  1. 传统的卷积神经网络的构成
  2. 残差网络和普通网络的区别
  3. 1 x 1卷积的作用

1. 2上面问题的答案

  1. 传统的CNN网络由卷积层、池化层、全连接层和判别层softmax层组成。
  2. 残差网络中有残差块的概念,残差块就是shorcut connection包含的那些层。
  3. 1 x 1卷积相当于是将同一位置的多个信道元素加权相加之和通过一个非线性函数,增加其非线性能力。1 x 1信道可以实现压缩或者增加信道且不改变长宽值。在Inception网络中,1 x 1网络还可以通过构建瓶颈层来减小计算量。

2.1 概述

大致讲解了在神经网络的发展历史上,出现过lenet,alexnet,VGG,ResNet,Inception这些网络。我们在实现自己的网络架构的时候,尽量不要瞎想,而是要参考前人的网络架构。

2.2 历史回顾

首先介绍了LeNet的网络架构。当时使用了averge_pooling,现在更常使用的是max_pooling。当时使用的非线性函数主要是sigmoid和tanh以及relu,现在使用softmax也比较多(这里不是很确定)。当时的计算机计算速度并没有很快,因此在Lenet的论文中提到了很多精妙的优化速度的手段,但是现在基本不用了。因此再读那篇论文的时候,应该精读第二部分,泛泛的读第三部分即可。


LeNet

AlexNet的网络结构如下图所示,和lenet类似,但是这里的参数数量有6000万之多。AlexNet的性能要比LeNet好,原因是这里使用了更多的参数更加复杂的网络,同时使用了ReLu作为激活函数。在Alexnet的论文中,还提到了Local Response Normalization,这个操作的含义是将贯穿不同信道同一位置的节点们归一化处理,据原论文说这样可以减少高激活神经元,但是后来的研究发现这样做并没有什么特别大的好处。


AlexNet

VGG网络优秀的在于真正简化了神经网络的结构,虽然VGG-16有16层,还是比较深的网络,参数也有13600万之多。但是这个网络优美的表现出了“长宽缩减的比例和信道增加的比列”相关的信念。在这个网络中,始终使用3*3的filter,每次使用same conv的模式;输入每经过一轮(一轮可能是2-3个卷积层)过滤器,channel数量增加一倍。池化层始终使用max pooling,且每经过一次池化层,长宽缩小一半。最后使用了两个全连接层和一个最终输出层。


VGG.png

吴恩达老师推荐我们看论文的顺序是先AlexNet,然后VGG,最后LeNet。LeNet的内容比较晦涩难懂。

1.3&1.4 残差网络

普通的神经网络,随着网络的深度增加会存在梯度爆炸和梯度消失等问题,变得越来越难以训练。残差网络的提出使得训练深度网络变得更加容易。他的原理是在某一层的线性模块之后,非线性模块之前增加前面某曾的输出,(这种操作又被称为skip connection),使得该层的非线性层a^(l+1) =g(z^l +a^(l-n)).这样的n个块被称为一个残差块。如下图所示的网络中一共有5个残差块。


残差网络示意图

网络只有在训练集上训练好才能在hold-out 交叉验证集上效果好。从经验来看,传统的网络存在随着深度的加深,学习的效率会逐步下降的缺点。但是对于残差网络来说,增加两层之后的恒等函数很容易学习。参考阅读这篇博客,暂时还没有看懂,希望下次巩固的时候可以看懂。

一般情况下,a^(l+2) 和 a^l 的维度是一致的,因为残差网络中一般使用same的卷积,偶尔会使用池化层。当a^(l+2) 和 a^l 的维度不一致时(池化层),可在a^l前面乘以一个W矩阵,保持维度的一致性。

1.5 1 * 1卷积(network in network)

1 * 1卷积对于单信道输入来说,只是将对应位置乘以对应的值而已。但是对于多信道输入而言,一个1 * 1卷积过滤器相当于将同一位置多个信道的元素加权相加,相当于一个全连接操作,之后会通过一个非线性函数操作,也就是相当于组合了同一位置的所有信道的元素,使其增加了非线性能力。

当输入的信道数量太多时,可以通过1 * 1卷积进行压缩信道(当然也可以增加信道,通过控制过滤器的数量),并且不改变height和weight(改变这两个参数的方式是池化层).这个1 * 1卷积的思想对于Inception网络很有用。


1*1卷积

1.6 Inception网络——Inception的思想、1 * 1卷积在其中的作用、Inception网络框架

Inception网络可以让我们避免自己去人工构建卷积层或者池化层。而是自己去学习到底使用什么卷积层或者是池化层。

其实现的原理就是把1 * 1卷积、3 * 3卷积、5 * 5卷积以及池化层的结果都叠加在一起共同作为这一层的输出,然后让网络自行去学习参数。(注意思考为什么图中的最大池化层的输出channel数量是32?我还没有理解,按理来说池化层的输出channel数量应该保持不变才对)

可以想象,这样的网络计算成本非常大 。以其中一个 5 * 5卷积来说。为了构建一个 28 * 28 *32的输出层,需要进行的乘法操作如下:对于每个输出的元素都需要进行 5 * 5 *192的乘法操作。这样的乘法操作数量达到了120Million次。


Inception网络思想一

因此Inception使用1 * 1卷积构建一个瓶颈层来减少计算量(可以将计算量减小为曾经的十分之一)。通过合理的构建一个中间层。


Inception网络思想二

通过上面提到的两个思想,可以构建Inception模块。Inception模块中既使用了 1 * 1卷积构建瓶颈层来减小计算量,又使用了多种卷积方式让其自我学习。


Inception模块

注意到最后的池化层实际上是一个池化层加上一个1 * 1的卷积层来控制channel数量的。

一个Inception网络就是由众多Inception模块构成的。其中的红色模块是池化层,用于减少长宽。底部有一些分支,这些分支实际上是使用隐藏层来做全连接、最后实现softmax预测。这意味着即使是中间的隐藏层也可以做预测,这些模块起到了一个调整的作用,避免整个网络过拟合。


Inception网络

上面这张图也被称为Googlenet,为了致敬LeNet网络。

1.7迁移学习

自己训练网络是一件耗时耗CPU的痛苦的经历。github上有很多公共的神经网络代码以及设计好的网络架构和权重,我们可以利用这些网络来初始化我们的专用需求。

当我们自己只有少量的数据时,我们可以固定他人网络的所有隐藏层,只修改softmax层来适应自己的需求。为了减少计算量,来可以将自己的数据运行到softmax层之前的都保存起来当做input,只经过softmax,这样训练的速度就很快。

当我们的数据量不那么少的时候,可以固定前面的隐藏层,留下一两个隐藏层以及softmax层做训练。

当我们的数据量比较多的时候,可以将他人网络的权重作为初始值,然后训练整个网络。

一般的网络框架都会有可以固定前面隐藏层的参数的。


迁移学习

1.8 数据增强

计算机视觉神经网络面对的一个大问题是数据不充足。常见的数据增强的方式有

  1. 镜像变化、随机剪裁(效果不错),旋转,扭动
  2. 颜色偏移,一般对RGB三信道的数值按照某种分布做微小的调整得到不同的图片。这种变化是基于有时候光线的变化不应该对最终的标签有影响。这种变换可以增加对光线的鲁棒性。
    当我们的数据量比较多的时候,通常会这样实现数据增强。使用一个或者多个线程来持续读取并转换数据(将数据通过不同的方式转换),构成一个batch的图片集合,然后输入另一个训练线程。图片增强和训练的过程可以并行执行。


    数据增强

    数据增强的过程同样有很多的超参数,比如颜色变化的分布参数等。因此我们也可以使用别人的开源实现。

1.9 计算机视觉的发展现状

当我们在计算机视觉使用神经网络的时候,我们的目的有两个1. 参加比赛获得好的名次; 2.实际应用部署赚钱。

对于第一个目标,建议有两个:

  1. 使用emsembling的方式训练多个神经网络,最后平均得到输出。
  2. 使用n-crops的方式训练一个网络,但是数据集会有很多。

对于第二个目标的建议就是使用别人以后的网络作为初始化。因为别人可能把比较困难的痛苦细节都帮你完善好了。


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

推荐阅读更多精彩内容

  • 全副武装出门了 原本以为要去大公园,没想到就在楼下这小小的地方找全了所有我们可以用到的素材。每天经过从来没抬头看过...
    jrsjrb阅读 277评论 0 0
  • 我变成了那个原以为堕落的人。 年青时的自己,有几年特别想学点东西,哪怕是不赚钱也想去争取一些机会,但现在不这样想了...
    静木之阅读 131评论 0 0
  • 先生一生痴爱画画,一直向往去林州太行山写生基地住一段时间。 太行山写生基地位于石板岩镇,此地南有王相岩、猪叫石,东...
    广寒清影阅读 388评论 0 0
  • 俗话说得好,读万卷书不如行万里路,行万里路不如阅人无数,阅人无数不如名师指路。今天来聊聊如何得到名师指路。 一、 ...
    永不止步的学习家何平阅读 1,175评论 5 8