第一周:深度学习的实践
本文是改善深层神经网络的笔记。
1.0 重点:
- 以下哪些技术可用于减少方差(减少过拟合):
- Dropout
- 具体实践中不要忘记处以keep_prob
- L2 正则化
- 扩充数据集
- Dropout
- 权重的初始化。
- Grad Check
- 双边方差更加精确。
1.1 训练 / 开发 / 测试集
- 创建合适的Train / dev(交叉验证集) / test集合可以加速训练过程。
- 机器学习时代(数据比较少):70% / 30% / 或者 60 / 20 / 20
- 大数据时代: 98% / 1% / 1%
- 问题:mismatched train/test distribution
- 例如,我们训练的数据可能是来自网上的比较精良的图片,然而我们的开发/测试集的图片可能是用户随手拍的一张照片。
- 解决办法:确保dev/test的数据来自同一个分布。
- 此外,如果没有test(测试集)也没有太大的问题。因为我们可以通过dev集选取最合适的网络架构。
1.2 偏差 / 方差
- 更具体的定义与Bayes error有关。
- 过拟合:(High Variance)测试集的错误率远高于Dev集的错误率。
- 欠拟合:(High Bias)
Train Set Error | 1% | 15% | 15% | 0.5% |
---|---|---|---|---|
Dev Set Error | 11% | 16% | 30% | 1% |
Type | High Variance | High Bias | High Variance & High Bias | Low Variance & Low Bias |
1.3 机器学习的Basic Recipe
- 为了解决Bias Variance Tradeoff。在大数据时代,只要有大规模的网络,更多的数据,我们可以既减少Bias,又可以减少Variance。
1.4 ⚠️ 正则化
L2正则化也叫权重衰减
- 考虑在逻辑回归的Cost Function里面引入正则化惩罚项
这里 w ∈ R n x w\in\mathbb{R}^{n_x} w∈Rnx,因此 ∣ ∣ w ∣ ∣ 2 2 = w T w = ∑ i = 1 n x w i 2 ||w||_2^2=w^Tw=\sum_{i=1}^{n_x}w_{i}^2 ∣∣w∣∣22=wTw=∑i=1nxwi2(即向量 w w w所有分量的平方之和), ∣ ∣ w ∣ ∣ 1 2 = ∑ j = 1 n x ∣ w j ∣ ||w||_1^2=\sum_{j=1}^{n_x}|w_j| ∣∣w∣∣12=∑j=1nx∣wj∣。
- L2正则化项:
J ( w , b ) = 1 m ∑ i = 1 m L ( y ^ ( i ) , y [ i ] ) + λ 2 m ∣ ∣ w ∣ ∣ 2 2 J(w,b)=\frac{1}{m}\sum_{i=1}^mL(\hat{y}^{(i)},y^{[i]})+\frac{\lambda}{2m}||w||_2^2 J(w,b)=m1i=1∑mL(y^(i),y[i])+2mλ∣∣w∣∣22 - L1正则化项:
J ( w , b ) = 1 m ∑ i = 1 m L ( y ^ ( i ) , y [ i ] ) + λ 2 m ∣ ∣ w ∣ ∣ 1 2 J(w,b)=\frac{1}{m}\sum_{i=1}^mL(\hat{y}^{(i)},y^{[i]})+\frac{\lambda}{2m}||w||_1^2 J(w,b)=m1i=1∑mL(y^(i),y[i])+2mλ∣∣w∣∣12
- 考虑NN中的正则化惩罚项
其中 w [ l ] w^{[l]} w[l]的维度为 ( n [ l ] , n [ l − 1 ] ) (n^{[l]},n^{[l-1]}) (n[l],n