其他分享
首页 > 其他分享> > 深度学习——正则化(Normalization)简介

深度学习——正则化(Normalization)简介

作者:互联网

深度学习——Batch Norm

文章目录

前言:为什么要正则化

关于这个问题,举一个生活上的例子。我们知道在工业生产的时候,只有标准化的,流水线的生产方式,效率才是高的。一个流水线上生产的产品,几乎都是一模一样的。为什么要这样?因为这样生产效率高。如果一个流水线上一会儿生产特斯拉,一会儿又生产法拉利,那么这个流水线光折腾不同的零件就够让人折腾了,谈何加快效率?

在神经网络当中也是这样子,如果所有层的输入数据都是同分布的,那么就像一条流水线生产同一种东西那样,效率就会很高。但实际上,经过每一层的运算之后,输出的数据都会有所不同,这些不同的数据也会处在不同的范围之内,范围不同,进一步导致分布的不同,那就没有什么“标准化”可言了。在这种情况下,我们就需要正则化。将各个层的输入数据都统一在同一个范围和分布上,以达到“标准化”。进而增加训练效率。

在神经网络当中,由于有很多Hidden Layer,因此正则化的过程会比较复杂。这当中最为常用的是Batch Norm(简称:BN),除了Batch Norm,还有Layer Norm, Instance Norm,Group Norm等等
在这里插入图片描述

一.单一神经元的正则化

我们假设有这么一个但神经元:
在这里插入图片描述
我们把输入值x1, x2, x3 统称为X,那么对于输入值的正则化,按照下面步骤进行(不难):

但是,神经网络的结构远远不是单神经元,这个时候,我们就需要对上面这个步骤进行拓展,也就是Batch Norm。

二. Batch Norm

我们假设,有如下这样子的神经网络:
在这里插入图片描述
对于每一层,都会首先计算出一个线性方程Zi,然后,这个线性方程代入到激活函数当中(甭管是Simoid,还是ReLu等),计算出一个全新的输出值。Batch Norm其实就是对各个线性方程的输出结果Zi进行运算:
首先,给定Z1, Z2, Z3, ……, Zm

那么,换到整个神经网络当中,我们每一层Hidden Layer都进行上述计算,那么最后就会完成Batch Norm.

如果,我们用Mini-Batch的方法来进行相关运算,那么伪代码如下:

for t=1,2,3,……,number_of_mini-batch:
	前向运算:
		每一个Hidden Layer,都运用Batch Norm进行计算,来替代原本的z值(运算过程如step1~step4所示)
	使用反向传播,计算对w,beta,gama的偏导,然后更新参数

标签:frac,zi,简介,Batch,mu,正则,Normalization,Norm
来源: https://blog.csdn.net/johnny_love_1968/article/details/117921280