CNN Xavier权重初始化


14

在一些教程中,我发现有人说“ Xavier”权重初始化(论文:了解训练深度前馈神经网络的难度)是初始化神经网络权重的有效方法。

对于完全连接的层,这些教程中有一条经验法则:

V一种[Rw ^=2ñ一世ñ+ñØüŤ更简单的选择:V一种[Rw ^=1个ñ一世ñ

其中是图层的权重方差,使用正态分布进行初始化,,是父图层和当前图层中神经元的数量。ñ ñ Ñ Ò ù V一种[Rw ^ñ一世ññØüŤ

卷积层有类似的经验法则吗?

我正在努力找出最适合初始化卷积层权重的方法。例如在权重形状为的层中(5, 5, 3, 8),即内核大小为5x5,过滤三个输入通道(RGB输入)并创建8特征图...是否将被3视为输入神经元的数量?或者说75 = 5*5*3,因为输入是5x5每个颜色通道的色标?

我既可以接受一个明确的问题答案,也可以接受一个更“通用”的答案,这可以解释找到正确的权重初始化并最好链接源的一般过程。

Answers:


13

在这种情况下,神经元的数量应为5*5*3

我发现它对于卷积层特别有用。通常在间隔均匀分布也是。 [-C/一世ñ+ØüŤC/一世ñ+ØüŤ]

在几乎所有神经网络库中,它都是作为一个选项实现的。在这里,您可以找到Keras实现Xavier Glorot初始化的源代码。


1
嗯..您还有其他建议吗?例如,我的一个网络具有480.000个神经元的完全连接层。如果我使用Xavier初始化,则最终会有大约的方差,并且我的网络只会学习到一些奇怪的干扰模式。我想它落入了一些局部最小值。我的意思是权重真的很小。我大部分时间都在合理的学习。有什么想法吗?我认为Xavier初始化不适用于真正的大图层吗?1个10-6[0.10.01]
daniel451 '16

@ascenator对不起,我对训练期间体重的变化了解不多。有时,过大/过小的学习率可能会带来奇怪的结果。
dontloo '16

许多DL库将标准偏差项而不是方差项作为其随机数生成方法的参数。因此,对于的方差,您需要的标准差,这可能可以解释您的结果。10-610-3
eric.mitchell

0

我在这里赞同埃里克的回答。我也使用术语的“ sqrt”,而不仅仅是该术语。尽管如此,当您将网状网络中的乙状结肠连接到“ RelU”输出...时,它可能导致训练停止。这是因为无限制的“ Relu”输出可以使S型曲线上的梯度降至0,并且不会发生学习。因此,在这种情况下,我的网络有一个“ scaleDown”因子,它将以该因子权衡初始化偏差。我会不断根据经验调整权重,直到学习发生为止。一种简单的查找方法是在1次迭代后立即保存模型,并查看RELU输出(与Sigmoid连接)。继续调整权重,直到该RELU输出合理为止。然后使用这些权重进行训练。这是一个好的开始。如果经过几次迭代后它仍然崩溃,稍微称重一下,直到达到稳定为止。这只是我使用的一个技巧。它适合我的设置。所以分享我的经验。不同的事情适用于不同的设置。

所以...祝你好运!

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.