深度学习标准化

深度学习标准化

引言

何凯明在他的论文《Rethinking ImageNet Pre-training》中不使用ImageNet预训练,直接使用参数随机初始化方式(scratch),成功地训练出目标检测任务的神经网络模型。

为什么使用Batch Normalization不能从scratch训练目标检测任务的模型?

为什么何凯明使用Group Normalization和Synchronized Batch Normalization就能训练出来?

深度网络训练的问题

总所周知,深度网络训练会遇到两个大问题:梯度消失和梯度爆炸。

假设网络没有使用非线性函数,不考虑偏置b,设每层网络层输入为 x ( k − 1 ) ∈ R n k − 1 × 1 x^{(k-1)} \in \mathbb{R}^{n_{k-1} \times 1} x(k1)Rnk1×1,参数是 W ( k ) ∈ R n k × n k − 1 W^{(k)} \in \mathbb{R}^{n_{k} \times n_{k-1}} W(k)Rnk×nk1,输出为 x ( k ) ∈ R n k × 1 x^{(k)} \in \mathbb{R}^{n_{k} \times 1} x(k)Rnk×1,每一层网络层的操作是

x ( k ) = W ( k ) x ( k − 1 ) = W ( k ) W ( k − 1 ) x ( k − 2 ) = W ( k ) W ( k − 1 ) ⋯ W ( 1 ) x ( 0 ) \begin{aligned} x^{(k)} & = W^{(k)} x^{(k-1)} \\ & = W^{(k)} W^{(k-1)} x^{(k-2)} \\ & = W^{(k)} W^{(k-1)} \cdots W^{(1)} x^{(0)} \end{aligned} x(k)=W(k)x(k1)=W(k)W(k1)x(k2)=W(k)W(k1)W(1)x(0)
梯度消失

假设 W = ( 0.5 0 0 0.5 ) W = \begin{pmatrix} 0.5 & 0 \\ 0 & 0.5 \end{pmatrix} W=(0.5000.5),即

x ( k ) = W k x ( 0 ) = ( 0. 5 k 0 0 0. 5 k ) x ( 0 ) x^{(k)} = W^k x^{(0)} = \begin{pmatrix} 0.5^k & 0 \\ 0 & 0.5^k \end{pmatrix} x^{(0)} x(k)=Wkx(0)=(0.5k000.5k)x(0)

随着k的增大,x的值越来越小,从而梯度呈指数级别下降,接近于0,这会导致梯度下降参数更新的非常缓慢,降低收敛速度。

梯度爆炸

假设 W = ( 1.5 0 0 1.5 ) W = \begin{pmatrix} 1.5 & 0 \\ 0 & 1.5 \end{pmatrix} W=(1.50

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值