美文网首页
卷积神经网络-第二周-吴恩达 Deep Learning Spe

卷积神经网络-第二周-吴恩达 Deep Learning Spe

作者: 拓季 | 来源:发表于2017-12-08 20:25 被阅读0次

    残差网络(Residual Networks,ResNets)

    随着网络深度的增加而容易出现的 梯度消失和梯度爆炸 使得非常深的神经网络的训练变得十分困难,同时尽管理论上神经网络的深度越深性能将越好,但实际上在超过一定层数后网络的表现可能在恶化,残差网络就是为了解决这些问题设计的。其核心操作是将某一层的输出不仅作为紧邻的下一层的输入,还与距离更远的层建立一个快捷通路(short cut,skip connection),并将信息传递过去。更具体地,对于神经网络某一层输出 a[ l ],在没有建立快捷通路的情况下后续两层的计算如下:

    • z[ l+1 ] = W[ l+1 ]a[ l ] + b[ l+1 ]

    • a[ l+1 ] = g(z[ l+1 ])

    • z[ l+2 ] = W[ l+2 ]a[ l+1 ] + b[ l+2 ]

    • a[ l+2 ] = g(z[ l+2 ])

    上述计算路径可以称为主路径,假设我们在 l 层和 l+2 层之间建立了一个快捷通路,那么我们可以将 a[ l ] 直接在 z[ l+2 ] 激活前传递过来,将这个加和整体做激活:a[ l+2 ] = g(z[ l+2 ] + a[ l ])。这时从 a[ l ]a[ l+2 ] 这一系列环节被合称为残差单元(residual block),将多个残差单元组合在一起的神经网络就称为残差网络。

    另外需要注意的一点是如果要保证 z[ l+2 ] + a[ l ] 这个运算可行,那么二者的维数需要相同,因此在 ResNets 中经常需要采用 same convolution 运算。当残差单元间有维数变动时,可以在 a[ l ] 基础上乘以一个 Ws 来完成维数转换。

    网络中的网络(1x1 convolution)

    对于一个灰度图像如果我们采用一个 1x1x1 的过滤器来进行卷积运算,那么这个运算的结果就是对于输入矩阵的每一个值进行了等比例的缩放,仅此而已,因此使得这个操作看起来无足轻重,而当输入是一个 6x6x32 的图像时,对应的与一个 1x1x32 的过滤器做卷积运算则相当于将图像不同通道中同一个位置上的 32 个数字进行了线性求和,这个运算的结果是一个二维的 6x6 的矩阵。如果同时采用 nC 个 1x1x32 的过滤器,则结果将变成 6x6xnC。这相当于对于输入建立了一个沿通道方向的全连接网络,所以这个 1x1 的卷积操作也被称为网络中的网络(Network in Network)。在此基础上再施加 ReLU 进行激活,可以进一步的提高网络的非线性建模能力。

    举一个典型应用的例子:我们已知可以通过池化层将 nH, nW 进行缩放,但如果输入是一个 28x28x192 的网络,如何将维数缩放成 28x28x32? 此时,我们只需要对于输入施加 32 个 1x1x192 的过滤器即可。

    再举一个下节课讲课用到的例子,仔细体会一下这两种模式下的所需要的乘法计算量变化:

    CONV without 1x1 CONV with 1x1

    上图中间这层称为瓶颈层(bottleneck layer),从两种方法的计算量对比可知通过合理的应用这种 1x1 的缩放可以显著的降低计算量而不影响网络的性能。

    Inception Network

    在构建卷积层时,对于过滤器的维数选择是一个很让人头疼的问题,到底该采用 1x1,3x3, 5x5 还是池化层?Inception 网络的目的就是使得操作者可以尝试所有可能性。

    如下图所示,在网络构建的过程中,可以尝试同时使用多个不同维数的过滤器,再将所有的计算结果连接在一起组成一个输出。这个包含从上一层的输出开始到后一个连接位置,包含中间并列的过滤器计算环节统称为一个 Inception 块,多个 Inception 块可以组合在一起共同构成一个 Inception 网络。注意图中由于需要最后将计算结果合并在一起,因此这里做的是 same 池化,在此基础上还需要再做一次通道收缩,并且由于计算量上的节省,采用了多个 1x1 的网络结构。

    Inception moddule

    在 Inception 网络中还可以在中间层设置分支使得部分识别出来的特征可以预先输出,并且这些输出可以用于正则化网络,防止过拟合。

    Inception network with side braches

    数据扩增

    本部分内容我已经整合在 前面的笔记中

    提高系统在竞赛中的表现

    这些技巧在比赛中常用,但在日常应用中并不多见:

    • Ensembling:同时训练多个不同的网络,最后采用平均化多个网络的数据结果的方式进一步提高系统的表现,缺点是要消耗额外的时间和算力

    • Multi-crop: 对于测试照片采用多次测试不同位置的修剪图像在平均化最终结果的方式

    相关文章

      网友评论

          本文标题:卷积神经网络-第二周-吴恩达 Deep Learning Spe

          本文链接:https://www.haomeiwen.com/subject/vzdyixtx.html