第三门课主要讲了机器学习的一些策略,也就是在你做项目的时候,应该要具体根据什么来改进你的模型。
正交化
在设计过程中,最好是保证几个变量相互独立,也就是正交。就好比你在开车的时候,油门和方向盘是相互独立的。如果方向盘和油门不独立,当你调整方向盘的时候速度也在变化,就很难受了。
所以在监督学习中,以下几个应该正交:
- 损失函数应该在训练集上表现很好
- 否则,就使用更大的神经网络,或者使用更好的优化算法
- 在验证集上表现很好
- 否则,就用正则化或者训练集上要更多的数据
- 在测试机上表现很好
- 否则,就使用更大的验证集
- 现实中表现很好
- 否则,就检查一下验证集是不是对的,损失函数是不是好的
单一数字评估指标
在训练模型中,当然需要一种指标来评估一下模型是不是好的。
一般使用两个参数:
- 准确率p:在预测的数据中,是正确的概率
- 召回率r:在真实数据中,预测是正确的概率
一般用F1 Score把两个指标给统一起来:
$$F1-Score = \frac{2}{\frac{1}{p} + \frac{1}{r}}$$
满足和优化指标
一般,满足指标都是一个区间范围,比如时间上只要小于100ms就可以,这样子,就在满足满足指标的情况下,选择最优指标(如精确度最高)最好的那个模型。
训练/验证/测试集的划分
应该使验证集和测试集的数据满足统一分布。
与人类表现比较
可避免的偏差
我们训练出来的结果,应该和人类表现作比较,如果差距比较小,那么说明很接近了,如果差距比较大,应该着重优化缩小这个可避免的偏差。
如图,左边说明应该着重减小bias,右边应该着重减小variance
改善模型的表现
减少bias:
- 训练更大的模型
- 更长的时间,更优化的算法(Momentum,RMSprop,Adam)
- 寻找更好的网络架构、更好的参数
减少variance:
- 收集更多的数据
- 正则化
- 更好的架构和参数