【机器学习】18-20 其他神经网络中的概念 & 机器学习实用建议 & 偏差和方差
18 Additional Neural Network Concepts
18.1 Advanced Optimization (Adam)
除了梯队下降,还有其他优化方法。
学习率固定为一个值 --> 可以优化为动态调整学习率:Adam算法(Adaptive Moment Estimation)

对于每个w以及b,都有对应的学习率参数,并可以自适应调整其大小
TensorFlow中这样使用:
![[图片]](https://i-blog.csdnimg.cn/direct/2d379a64d2e549dd90c4ac4867cbb4ba.png)
需要设置一个初始的学习率
18.2 Additional Layer Types
目前我们只提到了密集层Dense,每个神经元与前一层的所有神经元相连。
其他类型的层:卷积层
19 Advice for Applying Machine Learning
19.1 Debugging and Diagnostic
需要建立诊断策略,评估机器学习系统的效果,以便于知道下一步应该如何去优化
19.2 Evaluating a Model
引入测试集:将数据集划分为训练集和测试集,例如7:3的比例
分别计算Jtrain(w⃗,b)J_{train}(\vec w, b)Jtrain(w,b)和Jtest(w⃗,b)J_{test}(\vec w, b)Jtest(w,b)
注:
- 这里的J一般不包括正则化项,正则化项只用于拟合参数
- 对于分类任务,一般可以采用准确率来评估,而不是J
19.3 Model Selection and Training/Cross Validation/Test Sets
引入验证集,也可以叫交叉验证集,开发集(Development Set,Dev Set),其成本函数简称Jcv(w⃗,b)J_{cv}(\vec w, b)Jcv(w,b)
例如三者比例为6:2:2
用验证集,去选择模型等参数,例如线性回归的多项式阶数,神经网络的层数,每层的神经元数量等
选出最优的,用于训练集的训练,保证模型不受任何测试集的泄露干扰影响,最终在测试集上测试模型效果
20 Bias and Variance
20.1 Diagnosing Bias and Variance

二维可以直接画出来,但是高维度无法通过画图来感受Bias和Variance。
用成本函数来描述:
- 高Bias:JtrainJ_{train}Jtrain很高,JcvJ_{cv}Jcv也很高,但通常Jtrain≈JcvJ_{train} \approx J_{cv}Jtrain≈Jcv
- 高Variance:JtrainJ_{train}Jtrain较低,但是JcvJ_{cv}Jcv很高,Jcv>>JtrainJ_{cv}>>J_{train}Jcv>>Jtrain
- 高Bias和高Variance同时存在:JtrainJ_{train}Jtrain很高,且JcvJ_{cv}Jcv通常更高,Jcv>>JtrainJ_{cv}>>J_{train}Jcv>>Jtrain
横轴为维度,定性的表示:
![[图片]](https://i-blog.csdnimg.cn/direct/c5e2d57a18ba4ccfba2307a9b25e5ac4.png)
直观地说:
- 高Bias:在训练集上表现差
- 高Variance:在交叉验证集上表现比训练集差
20.2 Regularization and Bias/Variance
正则化参数λ\lambdaλ如果过小,倾向于过拟合,如果过大,倾向于欠拟合。
直观感受:
![[图片]](https://i-blog.csdnimg.cn/direct/3049fad8f3484dabac140cb36ec4b587.png)
可以用验证集去选择合适的λ\lambdaλ的取值。
20.3 Establishing a Baseline Level of Performance
如何定义J是高还是低 --> 需要一个基线标准,即多少误差是可以接受的,目标是多少误差
可以考虑以人工的误差为标准,或者其他前人实现的方法作为基准
20.4 Learning Curves
成本函数随着训练集数量的变化
![[图片]](https://i-blog.csdnimg.cn/direct/32752868ea2f481188c7d7f064da5ed5.png)
高Bias(error趋平的值高于基准,增大训练集不能解决问题,error趋平不会下降):
![[图片]](https://i-blog.csdnimg.cn/direct/c9a10f30c11b47f1ac715e792181a8fb.png)
高Variance(增大训练集可能会奏效):
![[图片]](https://i-blog.csdnimg.cn/direct/81343c528c714612b25b45a14fa2cb19.png)
20.5 Deciding What to Try Next Revisted
通常可以观察训练集和验证集的J来看是否有高Bias或高Variance的情况,接下来介绍遇到这种模型表现差的情况,通常可以怎么做。
缓解高Bias:
- 尝试用更多的特征
- 添加多项式特征(x12,x22,x1x2,etcx_1^2, x_2^2, x_1x_2, etcx12,x22,x1x2,etc)
- 减小正则化参数λ\lambdaλ
缓解高Variance:
- 增大训练集规模
- 尝试用更少的特征
- 增大正则化参数λ\lambdaλ
20.6 Bias/Variance and Neural Networks
![[图片]](https://i-blog.csdnimg.cn/direct/36e9c939db9e46d48cc6d742a7262aec.png)
训练更大更复杂的神经网络通常可以减小Bias,增大训练集通常可以减小Variance。
但是,更复杂的网络意味着资源消耗更大,训练集增大也会消耗更多算力。
注:此外,更大更复杂的神经网络如果正则化得当,通常不会导致过拟合。
TensorFlow中用"kernel_regularizer"添加正则化选项,可以指定λ\lambdaλ参数。
![[图片]](https://i-blog.csdnimg.cn/direct/ee08cbe14345434895ee2063cbeecc97.png)
再次说明一下,大型的神经网络通常Bias很低,实践中更容易碰到的问题是高Variance。
更多推荐
所有评论(0)