初始化、正则化、梯度校验
初始化
我们都知道在神经网络中一开始是需要初始化 W W W和 b b b的,那么一开始应该选择什么值来初始化会有利于神经网络更快更好地实现它地效果呢?
一个不恰当的表达是,其初始值不应该过大。最合适的有一个如下名称的初始化方法
He initialization
W [ i ] = n p . r a n d o m . r a n d n ( n i , n i − 1 ) ∗ 2 n i − 1 W^{[i]} = np.random.randn(n^i,n^{i-1})*\sqrt{\frac{2}{n^{i-1}}} W[i]=np.random.randn(ni,ni−1)∗ni−12
b [ i ] = n p . z e r o s ( ( n i , 1 ) ) b^{[i]} = np.zeros((n^i, 1)) b[i]=np.zeros((ni,1))
实践出真理,做过吴恩达老师的练习的话,会感受到那种准确率的提升是很大的。
正则化
高偏差:神经网络对训练集的预测准确率不高,如果说人认识一个物体的错误率为0%,而神经网络预测错误率达到十几,就可以说它是高偏差了。
高方差:神经网络预测训练集错误率与预测验证集或测试集错误率相差较远的情况,比如,预测训练集错误率为1%,而预测验证集错误率则达到13%,则可以说其是高方差。
当出现有高偏差时,可以运用增加迭代次数来解决。
高方差时也可以运用增加样本集的方法来解决。
另一个解决高方差的方法就是正则化,比较直观的理解就是通过正则化的调整实现了从高方差向高偏差方向走的现象,而找到在这其中的平衡值就解决了我们的高方差的问题。
常见的正则化方法:
1.就是对 c o s t cost cost加正则项,然后反向传播算出新的 d w dw dw,具体公式如下
J r e g u