Xavier的初始化推导

27 篇文章 1 订阅
17 篇文章 0 订阅

一般来说,参数初始化可以用高斯分布,均值为0,方差自定义。
但是随着计算的进行,数据的分布极有可能发生变化,如果动荡太大,会使模型很难收敛。

目的:所以呢,我们希望保持分布的稳定性
Xavier Initialization呢,就是这么一种初始化方式,它的目的在于保持每一层的输入与输出的var相同

接下来看如何推导出Xavier 的初始化方式

首先,对于神经元的计算而言,有如下的算式,x表示输入,y表示输出值
y = w1x1 + w2x2 + … + wNxN + b

计算y的var,那么有
var(y) = var(w1x1 + w2x2 + … + wNxN + b)

对于某一项wixi而言
var(wixi) = E(xi)2var(wi) + E(wi)2var(xi) + var(wi)var(xi)

两个变量乘积的方差可以转化为两个变量的各自期望值以及各自方差的形式,这里的2是平方的意思哈,因为我们一开始应用了高斯初始化,均值为0,所以这里的期望值为0。

var(wixi) = var(wi)var(xi)

所以综合起来,y的方差为
var(y) = var(w1)var(x1) + … + var(wN)var(xN)

以上我们默认所有的x还有w满足相同的分布形式,方差一致,那么可以写作一项
var(y) = N * var(wi) * var(xi)

到了这一步,再来看一下,由于我们希望x,y的方差一致,所以 N * var(wi)应当为1
N * var(wi) = 1
var(wi) = 1/N

这就是Xavier的初始化方式,即均值为0,方差为1/N,N表示输入的神经元个数,也就是输入层的大小
在提出这种初始化方法的论文中呢,N取的是输入层与输出层大小的平均值

var(wi) = 1/Navg
where Navg = (Nin + Nout)/2

这是因为作者希望在反向传播的过程中,误差的分布也保持稳定性。所以,基于是从后往前的运算,自然的,这里的N呢,就变成了输出层的大小。
最后,我们综合两者的情况,取一个平均的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值