Skip to content

Commit 7f2854f

Browse files
committed
Update 2.improving-deep-neural-networks-1.practical-aspects.md
1 parent 186e440 commit 7f2854f

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

Diff for: deep-learning/2.improving-deep-neural-networks-1.practical-aspects.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@
186186
* 不断尝试新方法,直到解决掉偏差问题。这是最低标准,直到可以拟合数据为止,至少能够拟合训练集。
187187
2. 一旦偏差降低到可以接受的数值,检查方差有没有问题。
188188
* 为了评估方差,要查看验证集性能,我们能从一个性能理想的训练集推断出验证集的性能是否也理想。
189-
* **如果方差高,最好的办法是采用更多数据**。如果你能做到,会有一定的帮助.
189+
* **如果方差高,最好的办法是采用更多数据**。如果你能做到,会有一定的帮助
190190
* 有时候,我们无法获得更多数据,**也可以尝试通过正则化来减少过拟合**
191191
* 需要反复尝试,**如果能找到更合适的神经网络框架,有时可能会同时减少方差和偏差**。如何实现呢?想系统地说出做法很难,总之就是不断重复尝试,直到找到一个低偏差,低方差的框架,这时你就成功了。
192192

@@ -703,7 +703,7 @@ sigma2 = np.mean(x ** 2, axis=1)
703703

704704
1. **第四点,梯度检验不能与dropout同时使用**。因为每次迭代过程中,Dropout 会随机消除隐藏层单元的不同子集,难以计算Dropout在梯度下降上的代价函数 _J_ 。因此Dropout 可作为优化代价函数 _J_ 的一种方法,但是代价函数J被定义为对所有指数极大的节点子集求和。而在任何迭代过程中,这些节点都有可能被消除,所以很难计算代价函数 _J_ 。你只是对成本函数做抽样,用Dropout,每次随机消除不同的子集,所以很难用梯度检验来双重检验Dropout的计算,所以我一般不同时使用梯度检验和Dropout。如果你想这样做,可以把Dropout中的keepprob设置为1.0,然后打开Dropout,并寄希望于Dropout的实施是正确的,你还可以做点别的,比如修改节点丢失模式确定梯度检验是正确的。实际上,我一般不这么做,我建议关闭Dropout,用梯度检验进行双重检查,在没有Dropout的情况下,你的算法至少是正确的,然后打开Dropout。
705705

706-
1. 最后一点,也是比较微妙的一点,现实中几乎不会出现这种情况。当 _w__b_ 接近0时,梯度下降的实施是正确的,在随机初始化过程中,但是在运行梯度下降时, _w__b_ 变得更大。可能只有在 _w__b_ 接近0时,**backprop 的实施才是正确的。但是当 _W__b_ 变大时,它会变得越来越不准确。你需要做一件事,我不经常这么做,就是在随机初始化过程中,运行梯度检验,然后再训练网络, _w__b_ 会有一段时间远离0,如果随机初始化值比较小,反复训练网络之后,再重新运行梯度检验。
706+
1. 最后一点,也是比较微妙的一点,现实中几乎不会出现这种情况。当 _w__b_ 接近0时,梯度下降的实施是正确的,在随机初始化过程中,但是在运行梯度下降时, _w__b_ 变得更大。可能只有在 _w__b_ 接近0时,backprop 的实施才是正确的。但是当 _W__b_ 变大时,它会变得越来越不准确。你需要做一件事,我不经常这么做,就是在随机初始化过程中,运行梯度检验,然后再训练网络, _w__b_ 会有一段时间远离0,如果随机初始化值比较小,反复训练网络之后,再重新运行梯度检验。
707707

708708
回顾这一章,我们讲了如何配置训练集,验证集和测试集,如何分析偏差和方差,如何处理高偏差或高方差以及高偏差和高方差并存的问题,如何在神经网络中应用不同形式的正则化,如 _L2_ 正则化和Dropout,还有加快神经网络训练速度的技巧,最后是梯度检验。
709709

0 commit comments

Comments
 (0)