内容简介:使用梯度下降法训练神经网络时,需要对参数初始化。对w参数(weight matrices) 和b参数(bias vectors),使用不同的初始化策略会对训练结果和效率有非常大的影响:3. 定制初始化方案——He initialization (author of He et al., 2015)
使用梯度下降法训练神经网络时,需要对参数初始化。对w参数(weight matrices) 和b参数(bias vectors),使用不同的初始化策略会对训练结果和效率有非常大的影响:
- Speed up the convergence of gradient descent 加速梯度下降的收敛速度
- Increase the odds of gradient descent converging to a lower training (and generalization) error 使误差降低的概率更大
不同参数的方案:
- 初始化为0
- fails to "break symmetry" 未能破坏对成性
- This means that every neuron in each layer will learn the same thing
for l in range(1, L): parameters['W' + str(l)] = np.zeros((layers_dims[l],layers_dims[l-1])) parameters['b' + str(l)] = np.zeros((layers_dims[l],1)) 复制代码
- 随机初始化
- success to "break symmetry",make sure different hidden units can learn different things
- Initializing weights to very large random values does not work well.
- poor initialization can lead to vanishing/exploding gradients 导致梯度消失/梯度爆炸
for l in range(1, L): parameters['W' + str(l)] = np.random.randn(layers_dims[l],layers_dims[l-1]) * 10 parameters['b' + str(l)] = np.zeros((layers_dims[l],1)) 复制代码
3. 定制初始化方案——He initialization (author of He et al., 2015)
for l in range(1, L + 1): parameters['W' + str(l)] = np.random.randn(layers_dims[l],layers_dims[l-1]) * np.sqrt(2/layers_dims[l-1]) parameters['b' + str(l)] = np.zeros((layers_dims[l],1)) 复制代码
总结:
- Different initializations lead to different results
- Random initialization is used to break symmetry and make sure different hidden units can learn different things
- Don't intialize to values that are too large
- He initialization works well for networks with ReLU activations.
以上所述就是小编给大家介绍的《学习笔记:深度学习网络的优化-初始化参数》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 协议简史:如何学习网络协议?
- 使用wireshark学习网络协议
- 强化学习新模型Jumper,让神经网络学习在阅读中何时做决定
- ICLR 2019 | 用浅度学习训练深度网络:避开端到端深度学习难题
- 再谈迁移学习:微调网络
- 用机器学习改善网络通话质量
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
图片转BASE64编码
在线图片转Base64编码工具
SHA 加密
SHA 加密工具