Batch Normalization

Batch Normalization

这篇Blog主要总结一下Batch Normalization在训练模型的时候的作用,以及具体的实现方法。

为什么需要使用Batch Normalization?

首先了解一下什么是batch、batch_size、和epoch

  • epoch: 表示把所有的训练集输入到模型完整地训练一遍。
  • batch: 模型训练时,往往不是一次性把所有的训练集输入到模型中,而是把训练集分成较小的批,即分成一个个的batch
  • batch_size: batch的大小

例如batch_size为5,代表模型处理5个样本后,更新一次参数,即进行一次学习。完成batch次训练后,把数据集完整的训练了一遍,即完成了一个epoch。

batch对模型的训练有着重要的影响,例如batch_size的大小以及每个batch中数据的分布。说到数据的分布,可以batch范围的Normalization和整个数据集的Normalization来调整数据分布。为什么需要使用batch Normalization,可以从训练样本的角度出发来看,但一个batch训练完成后,更新一次参数,因为不同的batch之间可能存在不同的分布,让模型可以更好的识别更多类型的分布。

为什么要做Normalization

不同的特征所带来的不同的取值范围会让error surface变得非常崎岖,难以更新参数,对训练会造成阻碍。

在这里插入图片描述

而Normalization能让不同的特征有相同的取值范围,大大的改善了error surface,有利于模型的训练

在这里插入图片描述

如何做Normalization

在这里插入图片描述

上面是比较常见的Normalization,能让特征的均值为0,方差为1。

在这里插入图片描述

对于深度神经网络而言,每层hidden layer的input也需要做Normalization,因为经过W矩阵之后,特征的取值范围又发生了变化。

batch Normalization是发生在训练的时候,那在测试的时候需要怎么做呢?

在这里插入图片描述

在测试的时候,可以利用训练时候计算的均值和方差,在测试的时候直接把它们拿过来进行Normalization。

在这里插入图片描述

Batch Normalization 可以帮助Optimization,这种发现也是非常偶然的,可以参见How Does Batch Normalization Help Optimization?

Reference:

李宏毅《机器学习》:https://speech.ee.ntu.edu.tw/~hylee/ml/2021-spring.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值