方差缩放初始值设定项和xavier初始值设定项有什么区别?


20

在Tensorflow的ResNet实现中,我发现它们使用方差缩放初始值设定项,我还发现xavier初始值设定项很流行。我对此没有太多经验,在实践中哪个更好?


有关Xavier初始化的更详细说明,您可以访问以下链接:prateekvjoshi.com/2016/03/29/……其中包括对Xavier初始化的正确推导以及其背后的直觉。
Himanshu Singh,

Answers:


31

历史的角度

Xavier初始化,最初由Xavier Glorot和Yoshua Bengio在“理解深度前馈神经网络的训练知识”中提出,是一种权重初始化技术,它试图使层的输出方差等于其输入方差。 。事实证明,这个想法在实践中非常有用。自然,此初始化取决于层激活功能。Glorot和Bengio在他们的论文中考虑了逻辑乙状结肠激活函数,这是当时的默认选择。

后来,Sigmoid激活被ReLu超越,因为它可以解决消失/爆炸梯度问题。因此,出现了一种新的初始化技术,该技术将相同的想法(激活差异的平衡)应用于此新激活函数。它由Kaiming He等人在“深入整流器:在ImageNet分类中超越人类水平的性能”中提出,现在通常称为He初始化

在tensorflow中,He初始化是在variance_scaling_initializer()函数中实现的(实际上是更通用的初始化器,但默认情况下执行He初始化),而Xavier初始化器在逻辑上是xavier_initializer()

摘要

总而言之,机器学习从业者的主要区别如下:

  • 他的初始化对于使用ReLu的图层效果更好激活的。
  • Xavier初始化对于具有S型激活的图层效果更好。

在pytorch中使用什么初始化?是否取决于激活?
查理·帕克

2
嗨,对于tanh()激活功能,我应该使用哪个初始化功能。
GoingMyWay

@GoingMyWay,根据此pytorch.org/docs/stable/…,您可以将He初始化使用增益5/3。不知道从哪里来。
Podgorskiy

3

方差缩放只是Xavier的概括:http : //tflearn.org/initializations/。它们都基于以下原则工作:梯度的比例在所有图层上都应相似。Xavier可以经受时间的考验,因此使用起来可能更安全。尝试选择自己的参数进行方差缩放可能会抑制训练或导致您的网络根本无法赚钱。


谢谢。您是什么意思选择自己的方差参数?
Hanamichi

在TF实施中,这将是因素参数(确定输入方差与输出方差之比)
liangjy
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.