批次标准化Batch Normalization

批次标准化(BatchNormalization)是解决训练神经网络时损失函数对权重参数偏导变化趋势不匹配的问题。它通过对每个样本的特征向量进行标准化,使得模型参数的训练更加平滑,加速训练过程。在测试时,使用移动平均计算均值和方差以适应单样本预测。此外,γ和β参数允许对标准化后的特征分布进行微调,适应不同任务的需求。
摘要由CSDN通过智能技术生成

批次标准化Batch Normalization

目录

批次标准化Batch Normalization

第五节 2021 - 类神经网络训练不起来怎么办 (五) 批次标准化 (Batch Normalization)

📌Batch Normalization可以直接改变error surface的崎岖

为什么需要批次标准化

因为在训练的过程中,会存在着损失函数对多个weight权重模型参数的偏导变化趋势不匹配(即有smooth光滑的也有steep陡峭的),如下图:

在这里插入图片描述

产生上述变化趋势不匹配的原因

以下面简单的模型来解释上述变化趋势的不匹配 该模型只有两个特征值输入,也就只对应两个权重参数;
当w1产生变化时,若输入的特征值的变化阶层很小比如1到2这种,那么w1的变化就不会对loss产生较大的影响,从而对应上图中smooth的曲线
当w2产生变化时,若输入的特征值的变化阶层很大比如1到100到200这种,那么w2的变化就会对loss产生较大的影响,从而对应上图的steep的曲线

在这里插入图片描述

📌为了消除这种模型参数偏导变化趋势不同的error surface造成的training的困难,需要对输入的每个样本的特征值进行处理,使得它们的变化阶层相近,这种技巧就叫做Feature Normalization

处理方法

对每个样本的特征向量进行标准化,其公式如下:

x i ′ = x i − μ σ x^{i'}= \frac {x^i-\mu} {\sigma} xi=σxiμ

这里的μ即是所有样本的特征向量作算术和(向量相应位置上的数值相加)再取平均;∑即是进行均方差的求解,即:

μ = 1 n ∑ x i , σ = 1 n ( x i − μ ) 2 \mu=\frac {1} {n} \sum x^i,\sigma=\sqrt{\frac {1} {n}(x^i-\mu)^2} μ=n1xi,σ=n1(xiμ)2

📌经过标准化的处理,所有样本的特征向量的平均值即为0,方差即为1

在这里插入图片描述

📌不仅刚开始的输入值需要做Normalization每个之前神经元的输出,均需要在下一个神经元的激活函数之前进行Normalization处理(一般是激活函数前后进行标准化差异不大,但由于sigmoid的曲线在0附近偏导最大,若在sigmoid之后再normalization会导致gradient值偏大),如下图:

在这里插入图片描述

上图即是一个大的分类网络,网络在原来的基础上多了均值和均方差的计算即对输入值的标准化。
且本来特征值的输入改变并不会影响其他z的改变,但是因为均值和均方差的改变使得其他z也发生了改变

处理方法的优化

最后求的所有样本的均值为0,方差为1。但有时我们并不想要这样分布的特征向量,所以将特征向量标准化的式子更改为下图:其中γ与β均为模型参数,一般开始训练时γ为1向量,β为0向量

在这里插入图片描述

这样做的目的是在训练刚开始时将特征向量的分布近似相同,从而减轻训练难度,更快的进行参数的更新,之后再在训练的过程中逐渐由机器改变γ与β的值

Batch Normalization的引出

因为一次性对所有样本计算均值和均方差对GPU或CPU的要求较高,所以为了减少硬件需求,我们引入了Batch的概念。
故只需要对Batch内的样本进行求均值和均方差然后对Batch内样本的特征向量进行标准化,从而进行参数的更新(此时Batch不能太小也不能太大
Batch太大太小对训练的影响见上述标题批次Batch)

Testing时的相应处理

因为Batch
Normalization是对一定量的样本进行一次训练。而在测试时我们一般是有了一个样本就对模型输入特征值进行预测,此时如果再求μ和σ即会导致标准化后为0
因此Testing时的μ和σ有专门的计算方法Moving Average,如下:

μ t = p × μ t ′ + ( 1 − p ) × μ i , μ i 为每一次 b a t c h 的均值 , μ t ′ 即为上次的 μ t . 按照该式递归求解 μ t \mu_{t}=p \times \mu_{t'}+(1-p) \times \mu ^i,\mu^i为每一次batch的均值,\mu_{t'}即为上次的\mu_t.按照该式递归求解\mu_t μt=p×μt+(1p)×μi,μi为每一次batch的均值,μt即为上次的μt.按照该式递归求解μt

σ t = p × σ t ′ + ( 1 − p ) × σ i , σ i 为每一次 b a t c h 的均方差 , σ t ′ 即为上次的 σ t . 按照该式递归求解 σ t \sigma_{t}=p \times \sigma_{t'}+(1-p) \times \sigma ^i,\sigma^i为每一次batch的均方差,\sigma_{t'}即为上次的\sigma_t.按照该式递归求解\sigma_t σt=p×σt+(1p)×σi,σi为每一次batch的均方差,σt即为上次的σt.按照该式递归求解σt

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值