参考:https://www.missshi.cn/api/view/blog/59bbcacae519f50d04000202
原文梗概:
1.初始化:
一个好的初始值有助于我们整个训练过程,一方面,可以加快梯度下降的收敛速度;另一方面,使得误差更有可能减小到一个更小的值。
在参考链接中给了三种不同的初始化方式,具体效果和实战例子请看最上面的参考链接:
① 零初始化:通常来说,零初始化都会导致神经网络无法打破对称性,最终导致的结构就是无论网络有多少层,最终只能得到和Logistic函数相同的效果。
② 随机初始化:随机初始化有助于打破对称,使得不同隐藏层的单元可以学习到不同的参数,初始化时,初始值不宜过大。初始化选择的不恰当可能会导致梯度消失或梯度爆炸,这些都会导致优化算法的性能下降。随着迭代次数的增加,最终的分离结果还能有一定的提升。但是如果初始值选择更大的话,性能也会随之降低。
③ He初始化: He初始化搭配ReLU激活函数常常可以得到不错的效果。
He初始化与Xavire初始化十分类似。
Xavire初始化中,系数为。
He初始化中,系数为。
2.正则化:
解决过拟合问题,例子:设计一个模型,可以用于推荐在足球场中守门员将球发至哪个位置可以让本队的球员抢到球的可能性更大
求解思路:加载所有点数据集,划分本队员能抢到球的点的数据集和对方抢球的数据集,利用神经网络和正则化的神经网络结果进行对比,正则化方法有L2正则化和Dropout正则化,最后进行结果比较
实现代码请详细参看原文
3.梯度检查代码,请查看原文。