P11机器学习--李宏毅笔记(Bactch normolization 让error surface 变好)

目录

一、怎么变成好的error face

二、Feature Normalization

三、在深度学习中再使用Feature Normalization 

四、batch normolization


一、怎么变成好的error face

 

从左上图来看,在w1方向上loss斜率很小但是在w2方向上loss斜率很大,当你在这个实验里使用固定的LR时你就不会有较好的结果。你需要用比较好的比如Adam一些opt方法才能得到较好的结果,现在我们从另一方面想,要不我们之间改变这个error surface呢?
1.首先为什么会出现左上图的情况?

从下面式子可以看出,当你输入很小时你有可能就对w影响较小,当你输入很大时有可能对w影响就会较大。所以说我们下想要的是same range的输入,这样就会有好的error surface就会比较好train


二、Feature Normalization

首先取每一个dimension的值求平均得到m,然后再算出标准差σ。这样通过下面公式就可以计算出Feature Normalization的值。这个值在0上下,方差为1.

三、在深度学习中再使用Feature Normalization 

 

后面得到的有可能还是难train所以说我们需要对处理的结果再normalization

 

 

如上图现在我们算出来的z1改变会影响后面的所有,它不像是最初始的x输入是独立的。现在network可以看作是拿x进来再用这个x算出一堆东西然后产生一堆outpt。但是现在data很多你不可能一次性把所有data丢进去,所以你要考虑用batch。对一个batch做normolization这就是batch normolization。我们希望batch size比较大,这样 一个batch就足以表示整个corpus的分布本来要对整个corpus做feature normolization这个事情改成对一个batch 做feature normolization

四、batch normolization

把最后的值再加上γ和β,这样就不是让数据不在0上下了吗?

我们通常初始把γ设为1,β设为0.在比较难train的时候我们让它尽可能保持在0上下。当走到好地方时我们可以适当改变这两个参数这样往往对你的训练是有帮助的

 在testing时我们有可能不能拿到一整个batch的数据,所以我们现在需要用train计算的参数进行normolization计算。

 

上图为各种表现,其中黑色虚线就是没有加batch normolization的,x5 x30表示不同的学习率 。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值