理解 xavier 初始化在神经网络中的作用

本文解释了在深度神经网络中使用Xavier初始化的重要性,它保证了在网络各层间信号方差的稳定性,避免信号消失或爆炸。通过计算和对比,文章揭示了如何从高斯分布中以1/N的方差初始化权重,其中N是输入神经元数量。
摘要由CSDN通过智能技术生成

在学习xavier初始化相关内容时,阅读到一篇还不错的文章,翻译记录一下。

原文链接:Understanding Xavier Initialization In Deep Neural Networks – Perpetual Enigma (prateekvjoshi.com)

首先,为什么我们需要初始化?

        当您使用深度神经网络时,使用正确的权重初始化网络可能是造成网络在合理时间内收敛和网络的损失函数即使在数十万次迭代后也不消失这两种不同结果的重要原因。

        如果权重太小,则输入信号的方差在通过网络中的每一层时开始减小。输入最终会下降到一个非常低的值,并且不再有用。为什么这是一个问题呢?让我们考虑一下 sigmoid 函数:

        如果我们将其用作激活函数,那么我们知道当接近零时,它是近似线性的。这基本上意味着不会有任何非线性。如果是这样的话,那么我们就失去了多层的优势。

        如果权重太大,则输入数据的方差往往会随着每个层的通过而迅速增加。最终,它变得如此之大,以至于变得毫无用处。为什么它会变得毫无用处?因为 sigmoid 函数往往会因为值越大而变得平坦,正如我们如上图所示。这意味着我们的激活将变得饱和,梯度将开始接近零。 

        如果您希望神经网络正常运行,那么使用正确的权重初始化网络非常重要。在开始训练网络之前,我们需要确保权重在合理的范围内。这就是 Xavier 初始化的用武之地。

Xavier 初始化到底是什么?

        在我们开始训练之前分配网络权重似乎是一个随机的过程,对吧?我们对数据一无所知,因此我们不确定如何分配在特定情况下有效的权重。一种好的方法是从高斯分布中分配权重。显然,这种分布的均值为零,方差有限。让我们考虑一个线性神经元:

y = w1x1 + w2x2 + ... + wNxN + b

        对于每个经过的层,我们希望方差保持不变。这有助于我们防止信号爆炸到高值或消失到零。换句话说,我们需要以这样一种方式初始化权重,即 x 和 y 的方差保持不变。此初始化过程称为 Xavier 初始化。

如何执行 Xavier 初始化?

        重申一下,我们希望方差在通过每一层时保持不变。让我们继续计算 y 的方差:

var(y) = var(w1x1 + w2x2 + ... + wNxN + b)

        让我们计算上等式右侧括号内项的方差。如果您考虑一个通用术语,我们有:

var(wixi) = E(xi)2var(wi) + E(wi)2var(xi) + var(wi)var(xi) (注:2是上标,表示平方)

        在这里,E() 代表给定变量的期望值,它基本上表示平均值。我们假设输入和权重来自零均值的高斯分布。因此,“E()”项消失了,我们得到:

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

        请注意,“b”是一个常数,方差为零,因此它将消失。让我们代入原来的等式:

var(y) = var(w1)var(x1) + ... + var(wN)var(xN)

        由于它们都是相同的分布,我们可以写成:

var(y) = N * var(wi) * var(xi)

        因此,如果我们希望 y 的方差与 x 相同,那么项“N * var(wi)”应该等于 1。因此:

N * var(wi) = 1
var(wi) = 1/N

        There we go!我们得出了 Xavier 初始化公式。我们需要从均值为零且方差为 1/N 的高斯分布中选择权重,其中 N 指定输入神经元的数量。这就是它在 Caffe 库中的实现方式。在原始论文中,作者取了输入神经元和输出神经元数量的平均值。因此,公式变为:

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

        他们这样做的原因也是为了保留反向传播的信号。但它的计算实现起来更复杂。因此,在实际实现过程中,我们只取输入神经元的数量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值