梯度下降法需要再开始训练时给每一个参数赋初始值,初始值的选取十分关键,好的初始值选定可以极大的缩减网络训练的时间,很快达到全局最优解。
神经网络中所有权重的初始值为什么不能全部初始化为0?[1]为什么在logistic回归中,参数可以全初始化为0?[2]
![ca1aa9040fb123ce43c15e080e2fb6bc.png](https://img-blog.csdnimg.cn/img_convert/ca1aa9040fb123ce43c15e080e2fb6bc.png)
假设如图的神经网络,权重参数全部初始化为0,那么我们可以得到:
我们知道初始时,
由于同一层激活函数相同:
得到神经网络最终的输出(末层激活函数:
我们已知真实预测值和损失函数
同理可得:
又
那么参数更新:
那么Logistic回归的参数为什么能初始化为0?
Logistic回归没有隐藏层。 如果将权重初始化为零,则Logistic回归中的第一个示例x将输出零,但Logistic回归的导数取决于不是零的输入x(因为没有隐藏层)。 因此,在第二次迭代中,如果x不是常量向量,则权值遵循x的分布并且彼此不同。
随机初始化
如何选取合适的随机初始化区间?
如果参数太小,会导致神经元输入过小,经过多层之后信号就慢慢消失,参数过小还会使得sigmoid型函数丢失非线性能力(参考sigmoid函数曲线,在接靠近0的位置接近于线性)。如果参数取得太大,会导致输入状态过大,对于sigmoid型激活函数来说,激活值变得饱和,从而导致梯度接近于0。
如果一个神经元的输入连接很多,它的每个输入连接上得权重就应该小一些,以避免神经元的输出过大(激活函数为relu)或过饱和(当激活函数为sigmoid函数)。
Gaussian分布初始化
参数从一个固定均值和固定方差的Gaussian分布进行随机初始化。
当一个神经元的输入连接数量为
均匀分布初始化
给定一个区间
Xavier初始化:如果神经元激活函数为logistic函数,对于第
参考书籍:《神经网络与深度学习》—邱锡鹏
参考
- ^神经网络参数为什么不能初始化全为0 https://blog.csdn.net/qq_15505637/article/details/79362970
- ^为什么logistic回归参数可以初始化为0 https://www.jianshu.com/p/02b529634868