【deeplearning.ai】结构化机器学习项目

一般模型训练需要在四个数据集上运行,也就是有四个步骤:

  1. 确保模型在训练集上表现不错(通过代价函数评估)【如果不足,则可通过更改算法、优化函数等方法优化】
  2. 确保模型在验证集上表现不错【如果不足,则可通过使用更大容量的网络、迭代次数更多、正则化、增大训练集等操作优化】
  3. 确保模型在测试集上表现不错【如果不足,则可通过增大(改变)数据集、改变代价函数的方法优化】
  4. 确保模型在实际应用中表现不错【如果不足,则可通过改变数据集、改变代价函数的方法优化】
单实数估计指标
  • 准确率: P =
  • 召回率: R =
  • F值: F = 2 P R P + R ,即 1 2 1 F = 1 R + 1 P

  准确率和召回率有不同的实际作用,这得看应用的偏向。如色情图片的召回率必须达到 100 % 等要求,当这种类别分类错误时,是难以忍受的,可通过增加该类别损失函数的系数来惩罚,如:

J = 1 m i = 1 m L ( y ^ , y ) J = 1 w ( i ) i = 1 m w ( i ) L ( y ^ , y )
  其中 w ( i ) w ( i ) = { 1 , y 10 , y =
  通过改变代价函数,来改变指标的目的

贝叶斯最优误差

  在我们模型应用评估时,我们有三个误差:

  • 贝叶斯最优误差
  • 训练集上的误差
  • 验证集上的误差

  其中,贝叶斯最优误差,是该数据集上理论能到达的最优误差,也就是误差的最低值。在一些人类所擅长的方面,比如自然感知方面(计算机视觉、自然语言处理),人类的误差基本就和贝叶斯误差相差不大;而在人类所不擅长的方面,比如从数据集中发现规律(推荐之类),计算机已经超过了人类,贝叶斯最优误差也比人类更低。
  可避免偏差考量的是贝叶斯最优误差和训练误差之间的差值;方差考量的是训练误差和验证误差之间的差值。我们通过判断可避免偏差和“方差”来选择优化模型在训练集上的误差(可避免误差较大),或者去减小训练误差和验证误差之间的方差(方差较大)。

误差分析

  在人类误差比训练误差小时,我们可以通过人工输出错误样本分析(如手机100个错误标记的验证集例子),从而分析出最具有突破价值的方向。

错误标记的样本

  如果我们的训练集中出现了标记错误的样本,需要综合考虑数据量,以及出错点是随机的还是系统错误(如一直判定白色的猫是狗)。如果是随机标错的,且训练数据量足够大,则其实际造成的误差可能不会很高,可忽略;如果是系统错误的,则必须修正。

多任务学习

  一个模型做 n 件事(可共用低层次特征的“相似的事”,比如目标检测识别多个不同类别目标)要比分别用 n 个模型做的效果好好。
  多任务学习可处理只标记了部分目标的数据(如正常图片需要检测四个目标,但标记结果为【1,0,?,0】,即第三个目标未标记),则计算代价函数的时候,我们可以只考虑有标记的目标。

J = 1 m i = 1 m j = 1 4 L ( y ^ , y )

猜你喜欢

转载自blog.csdn.net/qq_19784349/article/details/80886594