Eden寒假日更_05——正/反向传播与神经网络

正/反向传播

在不同的监督学习任务中,我们通常都需要对损失函数的值进行优化迭代,从而使误差不断减小,找到最合适的权重矩阵w和b,在这个迭代的过程中,我们通常是通过梯度下降的方式进行的。

一般的训练过程是权重矩阵w变量x先传入分类器函数,然后将计算得到的分数传入损失函数中计算损失值,通过计算损失函数相对于权重矩阵w的梯度,对w的数值在梯度方向进行微调,从而将影响传递到损失函数中,检验调整效果。这里求损失函数相对于w的梯度所用到的方法就是反向传播,改变w的值重新计算损失函数的方法就是正向传播

正向传播没什么特别的,就是简单的函数运算,反向传播中值得注意的是,我们不需要对损失函数这样的复合函数进行直接求导,而是反向计算每一层的梯度(本地梯度),然后将数值乘起来即可,这样可以大大减小整体的运算复杂度,现有的主流深度学习框架中的自动求导也都是这样完成反向传播梯度更新的(大概吧,我猜的)。

神经网络

神经网络结构
上面这个就是神经网络的基本结构了,每一层都可以看作一次函数处理,通过反向传播更新梯度,正向传播改变输出结果,最终不断优化迭代出最佳的参数,没什么好说的。

每日面试(葫芦书)

CH02卷积神经网络的基础模块

Q1:**批归一化(Batch Normalization)**是为了解决什么问题,它一般所处的位置和参数的意义分别是什么?

A1

  • 作用
    在机器学习中,一般来说都是假设模型输入数据的分布是稳定的,如果输入数据的分布发生变化,则称为协变量偏移。训练集和测试集数据分布不同,或者在模型训练过程中数据分布发生变化,都可以看作是协变量偏移现象。在深度网络层的迭代过程中,如果之前层的参数被更新后,当前层的数据分布也会发生变化,随着网络加深,这种现象也会更加明显。这种内部协变量偏移会给神经网络训练带来很多问题:学习过程不稳定、数据变化太大或太小从而掉出激活函数的饱和区(梯度为0,使学习提前停止)、被迫调参降低学习率使收敛变慢等等。BN层就是为了解决这样的问题,它的主要作用就是确保网络中的各层,即使参数发生变化,其输入/输出数据的分布也不会发生太大的变化,从而缓解内部协变量偏移现象。采用BN处理后,深度神经网络的训练过程将变得更加稳定,对初始值也不会那么敏感,可以采用较大的的学习率来加速收敛。

  • 参数:批归一化可以看作是带参数的标准化,其具体公式如下:
    y ( k ) = γ ( k ) x ( k ) − μ ( k ) ( σ ( k ) ) 2 + ϵ + β ( k ) y^{(k)}=\gamma^{(k)} \frac{x^{(k)}-\mu^{(k)}}{\sqrt{(\sigma^{(k)})^2+\epsilon}}+\beta^{(k)} y(k)=γ(k)(σ(k))2+ϵ x(k)μ(k)+β(k)
    其中x和y为输入数据和批归一化输出数据, μ \mu μ σ \sigma σ分别是输入数据的均值标准差使用框架的话,就是mini-batch上的), β \beta β γ \gamma γ分别表示可学习的平移参数和缩放参数,上标k表示的是数据的第k维, ϵ \epsilon ϵ是为防止分母为0的一个小量。如果没有 β \beta β γ \gamma γ,这就是普通标准化的公式,这样在训练过程中,网络的各层参数虽然在更新,但是输出分布始终不变(均值为0,标准差为1),不能有效学习,添加参数后,网络可以为每个神经元自适应地学习一个量身定制地的分布(均值和标准差分别为 β \beta β γ \gamma γ)。与此同时, β \beta β γ \gamma γ还能使批归一化的数据进入激活函数的非线性区域(针对Sigmoid、Tanh等),增强非线性表达能力,除此之外,当批归一化导致特征分布被破坏,或者使网络泛化能力减弱时,可以通过这两个参数将批归一化关闭(设置为原数据均值和标准差,即 μ \mu μ σ \sigma σ)。

  • 位置:原始论文中将批归一化放在了激活函数之前,但近年来大部分论文都将BN层放到了激活函数之后,所以这仍是一个具有争议性的问题。

Q2:用于分类任务的卷积神经网络的最后几层一般是什么层?最近几年有什么变化?

A2:用于分类任务的卷积神经网络,一般前面的层都是卷积池化层,末端的层一般都是全连接层。这是因为,卷积层由于局部连接和参数共享,其在不同位置都是在用同样的方式进行特征提取,对位置信息不是很敏感,因此如果神经网络全由卷积池化层构成,虽然能提取到不同位置的不同元素(高层语义信息),但是无法获取到这些元素的关联关系。如人脸识别中,必须获取五官的位置关系才可以进行分类,为了获取这样的关系,我们需要选择一个全局的,位置敏感的特征提取器,全连接层就是这样一个最方便的选择。
最近几年,分类网络在卷积层之后,最后一层之前通常采用全局平均池化层,它可以提取全局信息,与全连接层有着相似的效果,,同时还能降低参数量和计算量(相比卷积层而言),并具有较好的可解释性(可以知道特征图上哪些点对最后分类的贡献最大)。

Q3:卷积神经网络中的瓶颈结构沙漏结构是什么,有什么用?

A3瓶颈结构的初衷是为了降低大卷积层的计算量,即在计算比较大的卷积层之前,先用1x1卷积来压缩输入特征图的通道数(设定1x1卷积核的数量进行压缩),以减小计算量,在大卷积层完成计算后,根据实际需要,有时会再使用1x1的卷积核将大卷积层输出特征图的通道数目复原。其结构可以简述为:少量1x1卷积→大卷积→大量1x1卷积(可选)。瓶颈结构基本可以用于所有的卷积神经网络中,场景包括物体检测和分割,生成式对抗网络等大方向,以及诸如人脸匹配、关键点检测等细分领域。

沙漏结构也是卷积神经网络中比较基础的模块,它类似于瓶颈结构,但尺度更大,涉及的层数也更多。这里贴出一张结构图:

沙漏结构
该图中所有的都可以看作是瓶颈结构的卷积块,网络整体工作原理是先进行多次下采样(池化),然后进行多次上采样(插值),在下采样的过程中保留原尺寸的信息,在后期上采样插值的过程中,将尺寸相同的部分叠加起来,这样能起到多尺度信息融合的作用,这样的模块在TDM、FPN、RON、DSSD等物体检测模型中非常常见。

每日练习

暂时不知道以何种方式更新,感觉贴代码会显得非常垃圾。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不知名社会盲流Eden

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值