神经网络的初始偏差值

时间:2017-07-03 10:58:08

标签: machine-learning tensorflow bias-neuron

我目前正在张量流中构建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 #???

2 个答案:

答案 0 :(得分:4)

请注意最后一层偏差的具体情况。正如Andrej Karpathy在他的Recipe for Training Neural Networks中解释的那样:

初始化好。正确初始化最终图层权重。例如。如果您要回归一些平均值为50的值,则将最终偏倚初始化为50。如果您的数据集不平衡,正比为1:10,请在logit上设置偏倚,以便网络可以预测初始化时为0.1。 正确设置这些参数将加快收敛速度​​,并消除“曲棍球”损耗曲线,而在最初的几次迭代中,您的网络基本上只是在学习偏差。

答案 1 :(得分:3)

  

初始化偏差。初始化可能是常见的   偏差为零,因为不对称性破坏是由...提供的   权重中的小随机数。对于ReLU非线性,有些   人们喜欢使用0.01等小常数值来表示所有偏差   因为这可确保所有ReLU装置在开始时点火   因此获得并传播一些梯度。但是,目前尚不清楚   如果这提供了一致的改进(事实上似乎有些结果   表明这表现更差)并且更简单地说   使用0偏差初始化。

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