深度学习第四周--第二课理论

文章目录

  • 经典网络
    • LeNet-5
    • AlexNet
    • VGGNet
  • 残差网络(ResNet)
  • 1x1卷积
  • 谷歌Inception网络
    • 作用
    • inception网络
  • 迁移学习

经典网络

LeNet-5

针对灰度图片训练,例如输入一个32x32x1的图片:
深度学习第四周--第二课理论_第1张图片
图片与一个5x5x6的过滤器做卷积,步伐s=1,padding=0,得到28x28x6的矩阵,再与一个14x14x6的过滤器做均值池化,过滤器宽度为2,步幅为2,图形的尺寸,高度和宽度均缩小2倍,得到一个14x14x6的图像,再与一个5x5x16的过滤器做卷积,步伐s=1,padding=0,得到10x10x16的图像,再与一个5x5x16的过滤器做均值池化,过滤器宽度为2,步幅为2,图形高度和宽度均缩小2倍,输出一个5x5x16的图形。将所有数字相乘,乘积是400。
下一层是全连接层,在全连接层中,有400个节点,每个节点有120个神经元,再从这400个节点中抽取一部分节点构建另一个全连接层。
最后一步就是利用这84个特征得到最后的输出,还可以再这里再加一个节点用来预测 y ^ \hat y y^的值, y ^ \hat y y^有10个可能的值,对应识别0-9这10个数字,用softmax函数输出十种分类结果。

AlexNet

AlexNet首先用一张227x227x3的图片作为输入,第一层使用11x11x96的过滤器,s=4,得到55x55x96的图像,用一个3x3的过滤器构建最大池化层,f=3,s=2,得到27x27x96的图像,接着再执行一个5x5的卷积,padding之后,得到27x27x276的图像,再进行最大池化,尺寸缩小到13x13,再执行一次same卷积,相同的padding,得到的结果是13x13x384,再做一次same卷积。再做一次同样的操作,最后再进行一次最大池化,尺寸缩小到6x6x256。最后将所有数字相乘,得到9216个单元,然后是一些全连接层,最后使用softmax函数输出识别的结果。
深度学习第四周--第二课理论_第2张图片

VGGNet

VGG-16网络没有那么多超参数,这是一种只需要专注于构建卷积层的简单网络,首先用3x3,步幅为1的过滤器构建卷积层,padding参数为same卷积中的参数,然后用一个2x2,步幅为2的过滤器构建最大池化层,池化层将输入图像进行压缩,从224x224x64缩小到112x112x64。使用128个过滤器,以及一些same卷积,输出112x112x128然后进行池化,可以推导出池化后的结果是56x56x128,然后又是若干个卷积层,使用128个过滤器,以及一些same卷积,输出112x112x128,然后进行池化,可以推导出池化后的结果是56x56x128,接着再用256个相同的过滤器做三次卷积操作,然后再池化,然后再卷积三次,再池化。如此进行几轮操作后,得到7x7x512的特征图进行全连接操作,得到4096个单元,然后进行softmax激活,输出从1000个对象中识别的结果。
深度学习第四周--第二课理论_第3张图片
VGG-16的这个数字16,就是指在这个网络中包含16个卷积层和全连接层,网络结构规整,主要缺点是需要训练的特征数量非常巨大。

残差网络(ResNet)

situation:非常非常深的神经网络是很难训练的。
why:存在梯度消失和梯度爆炸问题。
solution:跳跃连接skip connection,它可以从某一层网络层获取激活,然后迅速反馈给另外一层,甚至是神经网络的更深层,可以利用跳跃连接构建能够训练深度网络的ResNets,有时深度能够超过100层。
注:skip connection:指 a [ l ] a^{[l]} a[l]跳过一层或者好几层,从而将信息传递到神经网络的更深层。
深度学习第四周--第二课理论_第4张图片
这是一个两层神经网络,在L层进行激活,得到 a [ l + 1 ] a^{[l+1]} a[l+1],再次进行激活,两层之后得到 a [ l + 2 ] a^{[l+2]} a[l+2]。计算过程是从 a [ l ] a^{[l]} a[l]开始,首先进行线性激活,根据这个公式: z [ l + 1 ] = W [ l + 1 ] a [ l ] + b [ l + 1 ] z^{[l+1]}=W^{[l+1]}a^{[l]}+b^{[l+1]} z[l+1]=W[l+1]a[l]+b[l+1],通过 a [ l ] a^{[l]} a[l]算出 z [ l + 1 ] z^{[l+1]} z[l+1],即 a [ l ] a^{[l]} a[l]乘以权重矩阵,再加上偏差因子。然后通过ReLU非线性激活函数得到 a [ l + 1 ] a^{[l+1]} a[l+1] a [ l + 1 ] = g ( z [ l + 1 ] ) a^{[l+1]}=g(z^{[l+1]}) a[l+1]=g(z[l+1])计算得出,接着再次进行线性激活,依据等式 z [ l + 2 ] = W [ l + 2 ] a [ l + 1 ] + b [ l + 2 ] z^{[l+2]}=W^{[l+2]}a^{[l+1]}+b^{[l+2]} z[l+2]=W[l+2]a[l+1]+b[l+2],最后根据这个等式再次进行ReLU非线性激活,即 a [ l + 2 ] = g ( z [ l + 2 ] ) a^{[l+2]}=g(z^{[l+2]}) a[l+2]=g(z[l+2]),这里的g是指ReLU非线性函数,得到的结果就是 a [ l + 2 ] a^{[l+2]} a[l+2]。信息流从 a [ l ] a^{[l]} a[l] a [ l + 2 ] a^{[l+2]} a[l+2]需要经过以上所有步骤,即这组网络层的主路径。
在残差网络中有一点变化,我们将 a [ l ] a^{[l]} a[l]直接向后,拷贝到神经网络的深层,在ReLU非线性激活函数前加上 a [ l ] a^{[l]} a[l],这是一条捷径。 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]))去掉了,取而代之的是另一个ReLU非线性函数,仍然对 z [ l + 2 ] z^{[l+2]} z[l+2]进行g函数处理,但这次要加上 a [ l ] a^{[l]} a[l],即: 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]产生了一个残差块。

深度学习第四周--第二课理论_第5张图片
如图所示,5个残差块连接在一起构成一个残差网络。如果使用标准优化算法训练一个普通网络,比如梯度下降法,或者其它热门的优化算法,如果没有残差,没有这些捷径或者跳跃连接,凭经验会发现随着网络深度加深,训练错误会减少,然后增多,理论上,随着网络深度的加深,应该训练得越来越好才对,但实际上如果没有残差网络,对于一个普通网络来说,深度越深意味着优化算法越难训练,训练错误会越来越多。
但残差网络不同,即使网络再深,训练的表现却不错。

1x1卷积

1x1卷积:用于减少或保持或增加通道数( n c n_c nc

谷歌Inception网络

作用

代替人工来确定卷积层中的过滤器类型,大小究竟是1x1,3x3,还是5x5,或者是否需要创建卷积层或池化层。
**思想:**不需要人为决定使用哪个过滤器或者是否需要池化,而是由网络自行确定这些参数,你可以给网络添加这些参数的所有可能值,然后把这些输出连接起来,让网络自己学习它需要什么样的参数,采用哪些过滤器组合。
**瓶颈层:**假设有一个玻璃瓶,瓶颈是这个瓶子最小的部分。同理,瓶颈层是网络中最小的部分,先缩小网络,再扩大它。只要合理构建瓶颈层,既可以显著缩小表示层规模,又不会降低网络性能,从而节省了计算。

inception网络

输入一个28x28x192的图片,先通过1x1的过滤器,再通过5x5的过滤器,1x1的层可能有16个通道,而5x5的层输出为28x28x32,共32个通道。
输入一个28x28x192的图片,先通过1x1的过滤器,再通过3x3的过滤器,1x1的层可能有96个通道,而3x3的层输出为28x28x128,共128个通道。
也可以输入一个28x28x192的图片,将其直接通过一个1x1的卷积层,这时就不比在后面再跟一个1x1的层,输出28x28x64。
使用same类型的padding来池化,使得输出的高和宽依然是28x28,再加上一个1x1的卷积层,将通道的数量缩小,缩小到28x28x32。
最后将这些矩阵全连接起来,在这过程中,把得到的各个层的通道都加起来,最后得到一个28x28x256的输出。
深度学习第四周--第二课理论_第6张图片

迁移学习

使用别人已经训练好网络结构的权重参数,把它当作一个很好的初始化用在你自己的神经网络上,用迁移学习把公共的数据集的知识迁移到你自己的问题上,然后转换到你感兴趣的任务上,

你可能感兴趣的:(深度学习)