课程来源:吴恩达 深度学习课程 《改善神经网络》
笔记整理:王小草
时间:2018年5月22日
1.训练集、开发集与测试集
训练监督模型需要数据集,有了数据集之后,需要先拆分数据集。
即将数据集拆分成3类:
(1)训练集:用于训练模型
(2)开发集:用于寻找最优的超参数
(3)测试集:用于测试与评估模型
拆分的比例:
对于小数据集:一般采用60%, 20%,20%这样的比例
对于大数据集:比如100万样本,则1万条做开发集,1万跳做测试集足矣,因此比例可以是99.5%, 0.25%, 0.25%
拆分的要求:
训练集与开发/测试集可能又不同的分布,但是必须要确保开发集与测试集必须来自同一分布。
2.偏差和方差
2.1 什么是偏差与方差
偏差bias,衡量训练集中,预测值与真实值的偏离程度,偏差大,则表示模型“欠拟合”;
方差variance,衡量测试集中,预测值与真实值的偏离程,方差大,则表示模型“过拟合”。
2.2 如何用偏差与方差评估模型
在二维空间里只有两个特征,可将bias和variance可视化成坐标来查看;但是三维即以上就智能用其他指标来描述bias和variance了。比如用“错误率”:
train set error | 1% | 15% | 15% | 0.5% |
---|---|---|---|---|
test set error | 11% | 16% | 30% | 1% |
表现 | high variance | high bias | high variance and high bais | low variance and low bias |
表现 | 过拟合 | 欠拟合 | 分类器几乎线性,但某些地方过于灵活而对部分数据进行过拟合了 | 非常好 |
2.3 如何训练一个低偏差低方差模型
2.3.1 看bias
首先看bias评估trainings set performance。
若bias high,说明欠拟合,则:
(1)尝试更复杂的network(效果一般都会提升的)
(2)尝试更先进的算法
(3)neural network architecture search (寻找更适合的神经网络结构)
对以上方案进行反复尝试,直到拟合数据为止
2.3.2 看variance
接着看variance评估test training set performance。
若variance high, 说明过拟合,则:
(1)增大训练数据集
(2)使用正则化regularization
(3)neural network architecture search (寻找更适合的神经网络结构)
直到找到low bais and low variance的model。
在传统的神经网络模型中,很难在降低bais同时保持variance不变。但是,现在再大数据下,只需要扩大network,增大训练集,即可实现,降低一者的同时保持另一者不变,影响的只是需要更多时间来训练。
4.处理过拟合的方法–正则化
4.1 L2正则化regularization
4.1.1 逻辑回归使用正则化
回顾逻辑回归的成本函数:
正则化,即在损失函数上添加一个正则项:
w是逻辑回归的权重,m是样本的个数,是正则化参数,是一个超参数,可以通过交叉验证来寻找最优的超参数。
绿色项一般省略,因为w是一个高维参数矢量,已经可以表达高偏差问题。w涵盖了大部分参数,且模型也很难做到对w的完全拟合,因此加不加b项都无所谓(如果你一定要加也行)
正则项有不同类型,最常用的是L1正则,L2正则。
L1正则:将权重求和