神经网络的初始偏置值

Nic*_*hop 11 machine-learning bias-neuron tensorflow

我目前正在 tensorflow 中构建一个 CNN,我正在使用 He 正常权重初始化来初始化我的权重矩阵。但是,我不确定应该如何初始化我的偏差值。我使用 ReLU 作为每个卷积层之间的激活函数。是否有初始化偏差值的标准方法?

# Define approximate xavier weight initialization (with RelU correction described by He)
def xavier_over_two(shape):
    std = np.sqrt(shape[0] * shape[1] * shape[2])
    return tf.random_normal(shape, stddev=std)

def bias_init(shape):
    return #???
Run Code Online (Sandbox Code Playgroud)

Ale*_*uat 13

请注意最后一层偏差的具体情况。正如 Andrej Karpathy 在他的《神经网络训练秘诀》中所解释的那样:

\n
\n

初始化好。正确初始化最终层权重。例如,如果您要对平均值为 50 的某些值进行回归,则将最终偏差初始化为 50。如果您的正数:负数比率为 1:10 的不平衡数据集,请在 Logits 上设置偏差,以便您的网络预测概率初始化时为 0.1。正确设置这些将加速收敛并消除 \xe2\x80\x9chockey Stick\xe2\x80\x9d 损失曲线,在前几次迭代中,你的网络基本上只是学习偏差。

\n
\n


Yah*_*ria 11

初始化偏差。将偏差初始化为零是可能且常见的,因为不对称性破坏是由权重中的小随机数提供的。对于 ReLU 非线性,有些人喜欢对所有偏差使用小的常数值,例如 0.01,因为这样可以确保所有 ReLU 单元在开始时触发,从而获得并传播一些梯度。然而,尚不清楚这是否提供了一致的改进(事实上,一些结果似乎表明这表现更差)并且更常见的是简单地使用 0 偏差初始化。

来源:http : //cs231n.github.io/neural-networks-2/