损失函数的意义和作用_BN究竟起了什么作用?一个闭门造车的分析

931f7374540214b9f395df6c851d6f26.gif

作者丨苏剑林

单位丨追一科技

研究方向丨NLP,神经网络

个人主页丨kexue.fm

BN,也就是 Batch Normalization [1],是当前深度学习模型(尤其是视觉相关模型)的一个相当重要的技巧,它能加速训练,甚至有一定的抗过拟合作用,还允许我们用更大的学习率,总的来说颇多好处(前提是你跑得起较大的 batch size)。 

那BN究竟是怎么起作用呢?早期的解释主要是基于概率分布的,大概意思是将每一层的输入分布都归一化到 N (0, 1) 上,减少了所谓的 Internal Covariate Shift,从而稳定乃至加速了训练。这种解释看上去没什么毛病,但细思之下其实有问题的:不管哪一层的输入都不可能严格满足正态分布,从而单纯地将均值方差标准化无法实现标准分布 N (0, 1) ;其次,就算能做到 N (0, 1) ,这种诠释也无法进一步解释其他归一化手段(如 Instance Normalization、Layer Normalization)起作用的原因。 

在去年的论文 How Does Batch Normalization Help Optimization? [2] 里边,作者明确地提出了上述质疑,否定了原来的一些观点,并提出了自己关于 BN 的新理解:他们认为 BN 主要作用是使得整个损失函数的 landscape 更为平滑,从而使得我们可以更平稳地进行训练。 

本文主要也是分享这篇论文的结论,但论述方法是笔者“闭门造车”地构思的。窃认为原论文的论述过于晦涩了,尤其是数学部分太不好理解,所以本文试图尽可能直观地表达同样观点。 

阅读本文之前,请确保你已经清楚知道 BN 是什么,本文不再重复介绍 BN 的概念和流程。

一些基础结论

在这部分内容中我们先给出一个核心的不等式,继而推导梯度下降,并得到一些关于模型训练的基本结论,为后面 BN 的分析铺垫。 

核心不等式

假设函数 f(θ) 的梯度满足 Lipschitz 约束( L 约束),即存在常数 L 使得下述恒成立:

b967d5443a63f109ab257795f746ff7d.png

那么我们有如下不等式:

41e4f6a4a3df9751a71c33f2dc297879.png

证明并不难,定义辅助函数 f(θ+tΔθ), t∈[0,1],然后直接得到:

ef623e92571a2ff3d5779651305c190e.png

梯度下降

假设 f(θ) 是损失函数,而我们的目标是最小化 f(θ),那么这个不等式告诉我们很多信息。首先,既然是最小化,自然是希望每一步都在下降,即 f(θ+Δθ)必然是非负的,所以要想下降的唯一选择就是2711103ba2f889ee5b1174f61f1bdfe3.png,这样一个自然的选择就是:

6be805de426979fff12969ba325d9657.png

这里 η>0 是一个标量,即学习率。

可以发现,式 (4) 就是梯度下降的更新公式,所以这也就是关于梯度下降的一种推导了,而且这个推导过程所包含的信息量更为丰富,因为它是一个严格的不等式,所以它还可以告诉我们关于训练的一些结论。 

Lipschitz

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值