吴恩达深度学习 第三课 残差网络 谷歌Inception模型 迁移学习

残差网络

非常深的神经网络是很难训练的,因为存在梯度消失和梯度爆炸的问题。跳跃连接(skip connection),可以从一层神经网络获取激活,然后迅速反馈给更深的神经网络,我们可以利用跳跃连接来构建深层的网络。
ResNets是由残差块(Residual block)构建的,如图所示,在一个两层的神经网络中, a [ l ] a^{[l]} a[l]会以复制的形式传递给第二层的激活层前,第二个激活层的公式由 a [ l + 2 ] = g ( z [ l + 2 ] ) a^{[l+2]}=g(z^{[l+2]}) a[l+2]=g(z[l+2])变为 a [ l + 2 ] = g ( z [ l + 2 ] + a [ l ] ) a^{[l+2]}=g(z^{[l+2]}+a^{[l]}) a[l+2]=g(z[l+2]+a[l]),也就是加上的 a [ l ] a^{[l]} a[l]产生的残差块

残差网络可以训练更深的网络,有助于解决梯度爆炸和梯度消失问题。

残差网络为什么有用

关于残差网络吴恩达有两点理解:
a [ l + 2 ] = g ( w [ l + 2 ] a [ l + 1 ] + a [ l ] ) a^{[l+2]}=g(w^{[l+2]}a^{[l+1]}+a^{[l]}) a[l+2]=g(w[l+2]a[l+1]+a[l]),不难理解, w 和 b w和b wb会受到正则化影响,因而 a [ l + 2 ] = a [ l ] a^{[l+2]}=a^{[l]} a[l+2]=a[l],因而我们增加了两层的网络,并不影响网络的表现。
第二,如果隐藏层学到一些有用信息,那么他将会比恒等函数表现更好。
残差网络大多使用’SAME’填充,因而 a [ l + 2 ] 和 a [ l ] a^{[l+2]}和a^{[l]} a[l+2]a[l]维度相同,如果维度不同,则需要对a^{[l]}做填充,这里吴采用了 W s a [ l ] W_{s}a^{[l]} Wsa[l]来转换维度,应该是一种填充的变换

谷歌Inception模型

1*1卷积

如果仅仅是看单个通道的1x1卷积似乎没有多大意思,如果考虑一个32通道的1x1卷积网络,每一个卷积层的通道相当于一个权重,将输入的32层数据做了一个全连接,换句话说,1x1的卷积网络类似于全连接,实现了一个非平凡(non-trivial)计算

1x1卷积可以用于压缩通道数量,如下图,我们将通道数为192的输入压缩为通道数为32

Inception

inception模型最大的特点就是借助于’SAME’保持维度不变,然后对多个不同的卷积核做了连接。它的基本思想是不需要认为决定使用哪些卷积层或者池化,这些由神经网络自行决定,需要什么样的参数,采用哪些过滤器组合。
在这里插入图片描述
这里我们考虑一个计算问题,以一个5x5x32的卷积层来看,结果为28x28x32,输出参数为结果数的个数,需要的乘法运算为(5x5x192)x(28x28x32)次,成本相当大。

考虑到上述问题,我们可以使用一个1x1卷积网络做一步缩放,通过1x1卷积网络后的维度变为1x1x16,再通过5x5x32的卷积运算,这里的计算量由192变为16缩减到了十分之一。只要合理构建瓶颈层,这种方式既可以缩小表示层规模,又不会减低网络性能,从而节省了计算。

模型组建,将各个层的通道连接起来,构成一个Inception模块

Inception网络将这些模块组合到一起

Inception原文的模型会有一些分支,分支是通过全连接成和softmax层来做出预测,下图中编号4和编号2就是通过编号5和编号3的结果做出预测。

迁移学习(transfer learning)

关于迁移学习,举一个例子谷歌的Imagenet可以识别上千个类别,我们可以替换掉模型最后一层的全连接和softmax层,替换为我们需要的全连接和softmax层,假如我们需要判别一个三分类,那就转化为三个输出的全连接和softmax层,我们只需要训练新加的神经层,将Imagetnet看做一个特征提取器。
分享两个小技巧:我们可以提前将训练的数据集经过Imagenet提取特征保存到硬盘中,这样后续我们只需要训练我们的三分类的神经层。我们也可以直接修改全连接的权重,这样softmax层直接出来的是三分类的结果
当然,如果你有更大的数据集,可以尝试冻结更少的Imagenet层,来训练更多的Imagenet层。或者你可以只把下载的数据作为初始化,直接训练整个网络。

数据增强

计算机视觉任务需要大量的数据,有时我们可以对数据做一下扩充,比如翻转、随机剪切、彩色转换。
关于彩色转换有一种影响颜色失真的算法是PCA,即主成分分析,具体改变的细节在AlexNet的论文中,比如说,如果颜色呈紫色主要包含红色和蓝色,绿色相对少一点,PCA颜色增强算法会对红色和蓝色增减很多,绿色变化少一点,使总体的颜色保持一致。
常用的数据扩充的方法是使用一个线程或多线程,来加载数据实现变形失真,然后通过其他的进程和线程来训练。

基准测试(benchmark)

有一个提升基准测试的技巧,Multi-crop at test time,这是将数据扩充应用于测试图像的一种形式,首先做一遍翻转,然后对翻转的图像取中间、左上角、左下角、右上角、右下角,最终获取10个测试图片,成为10-crop。

本文参考
吴恩达深度学习 第三门课

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值