美文网首页
期望/方差/Normalization/激活函数饱和区/BN&L

期望/方差/Normalization/激活函数饱和区/BN&L

作者: 三方斜阳 | 来源:发表于2021-03-29 09:56 被阅读0次

1. 期望:

如果随机变量只取得有限个值或无穷能按一定次序一一列出,其值域为一个或若干个有限或无限区间,这样的随机变量称为离散型随机变量。

在概率论和统计学中,数学期望(mean)(或均值,亦简称期望)是试验中每次可能结果的概率乘以其结果的总和,是最基本的数学特征之一。它反映随机变量平均取值的大小。

离散型:

离散型随机变量的一切可能的取值x_{i} 与对应的概率P(x_{i}) 乘积之和称为该离散型随机变量的数学期望,若该求和绝对收敛,记作:E(x),它是简单算术平均的一种推广,类似加权平均。

公式:                                   E(X)=\sum\nolimits_{k=1}^\propto  x_{k} p_{k}

例子:

某城市有10万个家庭,没有孩子的家庭有1000个,有一个孩子的家庭有9万个,有两个孩子的家庭有6000个,有3个孩子的家庭有3000个。则此城市中任一个家庭中孩子的数目是一个随机变量,记为X。它可取值0,1,2,3。其中,X取0的概率为0.01,取1的概率为0.9,取2的概率为0.06,取3的概率为0.03。

则,它的数学期望:E(X)=0*0.01+1*0.9+2*0.06+3*0.03

即此城市一个家庭平均有小孩1.11个,当然人不可能用1.11个来算,约等于2个。

连续型:

连续性随机变量X的概率密度函数为f(x),若积分绝对收敛,则称积分的值:\int_{-\propto }^{\propto } xf(x)dx

为随机变量的数学期望,记为 : E(x)

总结:

期望指的是概率加权下的平均值.

高中数学:

平均数:

方差:

将各个误差将之平方,相加之后再除以总数,透过这样的方式来算出各个数据分布、零散的程度。方差比较小,数据波动不大,方差较大,数据波动很大.

统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数:

方差是衡量源数据和期望值相差的度量值。

样本值与全体样本值平均数之差的平方值的平均数

标准差:

标准正态分布:

标准正态分布(standard normal distribution),是一个在数学、物理及工程等领域都非常重要的概率分布,在统计学的许多方面有着重大的影响力。期望值μ=0,即曲线图象对称轴为Y轴,标准正态分布又称为u分布,是以0为均数、以1为标准差的正态分布,记为N(0,1)

深度学习Normalization:

深度学习中的数据分布偏移:深度神经网络涉及到很多层的叠加,而每一层的参数更新会导致上层的输入数据分布发生变化,通过层层叠加,高层的输入分布变化会非常剧烈。虽然神经网络的各层的输入信号分布不同,但最终“指向“的样本标记是不变的,即边缘概率不同而条件概率一致。

为 了降低分布变化的影响,可使用归一化策略Normalization,把数据分布映射到一个确定的区间。比如归一化为标准正态分布 N(0,1) .

神经网络中,常用的归一化策略有BN(Batch Normalization), WN(Weight Normalization), LN(Layer Normalization), IN(Instance Normalization).

当我们使用梯度下降法做优化时,随着网络深度的增加,数据的分布会不断发生变化,为了保证数据特征分布的稳定性,加入Layer Normalization,这样可以加速模型的收敛速度

Normalization 有很多种,但是它们都有一个共同的目的,那就是把输入转化成均值为 0 方差为1的数据。我们在把数据送入激活函数之前进行normalization(归一化),因为我们不希望输入数据落在激活函数的饱和区,发生梯度消失的问题,使得我们的模型训练变得困难

 图1为sigmoid函数,它是神经网络中的一种激活函数,可以将输出限制在(0,1)范围内。目前能想到的sigmoid函数在神经网络中的两种应用是:

a、 作为神经网络中间层的一个激活函数,对于这种应用而言,sigmoid函数有两个特性是重要的,一是输出在(0,1)之间,二是非线性;

b、 对于回归任务,在网络的最后一层将数据框定在(0,1)之间,对于这种应用而言,似乎更关注于sigmoid函数的输出 y 在(0,1)之间这个特性,而其非线性特性就显得不那么必要;

图1

激活函数饱和区,以sigmoid 函数为例:图1中左下角和右上角的平缓区域。饱和区(平缓区域)会带来以下问题:

a. 梯度消失问题(平缓区梯度几乎为0),这个问题对于sigmoid函数的两种应用都是存在的;

b. 对于输入x,输出y的区分度不高,这个问题主要针对第二种应用;

如何解决sigmoid函数饱和区问题:

针对a问题,一种解决方法是在sigmoid层之前引入Batch Normalization层。批规范化(Batch Normalization,BN),就是对每个神经元的输出规范化,即均值为 0,方差为 1,之后再进入激活函数。每一层规范化后,输出就以极大的概率落在靠近中心的区间,如 [-1, 1],这时sigmoid函数的梯度变化很大,也就解决了梯度消失的问题

但是这样做又有一个缺点,可以看到图1中sigmoid 函数[-1, 1] 这段区间近似直线,也就是激活函数变成了线性的,所以整个网络绝大多数就都是线性表达,降低了神经网络的表达能力。所以BN的作者又再次引入了两个变量(图2最后一行中的 γ 和 β ),对规范化后的神经元输出做了一次线性映射,参数也是可以学习的,使得最终输出落在非线性区间的概率大一些。这样就在 sigmoid 函数梯度小和线性表达之间做了一个平衡,使得神经网络有了非线性变换,保证了其学习能力,也使梯度比较大,加快了训练速度。

图2 Batch Normalization

针对b问题,我们可以将激活函数由sigmoid更换为下图的函数,简单的解释下这个函数,输入小于0的,强制为0,输入大于1的,强制为1,输入位于(0,1)之间的,输出不变。这样就使得输出在(0,1)之间的值有了区分度。

Batch Normalization & Layer Normalization:

BN的主要思想是: 在每一层的每一批数据(一个batch里的同一通道)上进行归一化

LN的主要思想是:是在每一个样本(一个样本里的不同通道)上计算均值和方差,而不是 BN 那种在批方向计算均值和方差!

共同的做法就是求出均值和和标准差之后,每个维度的数据减去均值除以标准差得到归一化后的数值:

参考:

如何解决sigmoid函数饱和区问题_涛涛不绝蕾蕾于冬-CSDN博客

Transformer里layer-normlization的作用_真心乖宝宝的博客-CSDN博客

Transformer代码详解与项目实战之Layer Normalization_Xidian185的专栏-CSDN博客

相关文章

网友评论

      本文标题:期望/方差/Normalization/激活函数饱和区/BN&L

      本文链接:https://www.haomeiwen.com/subject/fovvhltx.html