一般模型训练需要在四个数据集上运行,也就是有四个步骤:
- 确保模型在训练集上表现不错(通过代价函数评估)【如果不足,则可通过更改算法、优化函数等方法优化】
- 确保模型在验证集上表现不错【如果不足,则可通过使用更大容量的网络、迭代次数更多、正则化、增大训练集等操作优化】
- 确保模型在测试集上表现不错【如果不足,则可通过增大(改变)数据集、改变代价函数的方法优化】
- 确保模型在实际应用中表现不错【如果不足,则可通过改变数据集、改变代价函数的方法优化】
单实数估计指标
- 准确率: P=检索的相关文档数检索出的所有文档数 P = 检 索 的 相 关 文 档 数 检 索 出 的 所 有 文 档 数
- 召回率: R=检索出的相关文档数相关文档总数 R = 检 索 出 的 相 关 文 档 数 相 关 文 档 总 数
- F值: F=2∗P∗RP+R F = 2 ∗ P ∗ R P + R ,即 121F=1R+1P 1 2 1 F = 1 R + 1 P
准确率和召回率有不同的实际作用,这得看应用的偏向。如色情图片的召回率必须达到 100% 100 % 等要求,当这种类别分类错误时,是难以忍受的,可通过增加该类别损失函数的系数来惩罚,如:
通过改变代价函数,来改变指标的目的
贝叶斯最优误差
在我们模型应用评估时,我们有三个误差:
- 贝叶斯最优误差
- 训练集上的误差
- 验证集上的误差
其中,贝叶斯最优误差,是该数据集上理论能到达的最优误差,也就是误差的最低值。在一些人类所擅长的方面,比如自然感知方面(计算机视觉、自然语言处理),人类的误差基本就和贝叶斯误差相差不大;而在人类所不擅长的方面,比如从数据集中发现规律(推荐之类),计算机已经超过了人类,贝叶斯最优误差也比人类更低。
可避免偏差考量的是贝叶斯最优误差和训练误差之间的差值;方差考量的是训练误差和验证误差之间的差值。我们通过判断可避免偏差和“方差”来选择优化模型在训练集上的误差(可避免误差较大),或者去减小训练误差和验证误差之间的方差(方差较大)。
误差分析
在人类误差比训练误差小时,我们可以通过人工输出错误样本分析(如手机100个错误标记的验证集例子),从而分析出最具有突破价值的方向。
错误标记的样本
如果我们的训练集中出现了标记错误的样本,需要综合考虑数据量,以及出错点是随机的还是系统错误(如一直判定白色的猫是狗)。如果是随机标错的,且训练数据量足够大,则其实际造成的误差可能不会很高,可忽略;如果是系统错误的,则必须修正。
多任务学习
一个模型做
n
n
件事(可共用低层次特征的“相似的事”,比如目标检测识别多个不同类别目标)要比分别用个模型做的效果好好。
多任务学习可处理只标记了部分目标的数据(如正常图片需要检测四个目标,但标记结果为【1,0,?,0】,即第三个目标未标记),则计算代价函数的时候,我们可以只考虑有标记的目标。