Loading...
墨滴

algolearn

2021/10/21  阅读:27  主题:默认主题

神经网络权重为什么不能初始化为0

1 逻辑回归为什么可以初始化为0 ?

1.1 参数说明

输入: 输出: 权重: 偏置: 激活函数: 损失函数:

逻辑回归用公式表达为: 损失函数:

1.2 反向传播

sigmoid函数的导数:

1.3 参数更新

1.4 分析

当把 初始化为0, 与无关,梯度不为0,参数可以正常更新。当 初始化为0,梯度为0.5或-0.5,也不影响参数更新。

2 为什么神经网络的权重不可以初始化为0 ?

2.1 参数说明

输入: 输出: 权重: 偏置: 激活函数: 损失函数:

损失函数:

2.2 前向传播

2.3 反向传播

2.4 讨论

可以分为下面3个情况

  • w初始化为0,b初始化为0
  • w初始化为0,b随机初始化
  • w随机初始化,b初始化为0

2.4.1 w初始化为0,b初始化为0

第一个batch,前向传播 ,由于 , 反向传播会导致 可以得到更新但是两个权重均相同,同时 也得到了更新, 更新时用到了 ,开始这两个初始化为0了,所以这几个参数未能更新,依然是0.

第二个batch, 两个权重相同,反向传播的时候 相同, 相同,同样的, ,由于 ,反向传播会导致 可以得到更新但是两个权重均相同。

第n个batch,每一隐藏层的权重都能得到更新,但是存在每一隐藏层的隐藏神经元权重都是一致的,也就是说,同一隐藏层所有神经元的输出都一致。

2.4.2 w初始化为0,b随机初始化

第一个batch,前向传播 , 反向传播会 可以得到更新, 更新时用到了 ,开始这两个初始化为0了,所以这几个参数未能更新,依然是0.

第二个batch,反向传播的过程中,由于 不为0,导致所有的参数都能够得到更新。

2.4.3 w随机初始化,b初始化为0

前向传播过程中, 均不为0,反向传播的过程中各参数均可以更新

欢迎关注微信公众号(算法工程师面试那些事儿),本公众号聚焦于算法工程师面试,期待和大家一起刷leecode,刷机器学习、深度学习面试题等,共勉~

算法工程师面试那些事儿
算法工程师面试那些事儿

algolearn

2021/10/21  阅读:27  主题:默认主题

作者介绍

algolearn