一、为什么是ML策略

当我们最初得到一个深度神经网络模型时,我们可能希望从很多方面来对它进行优化,例如:

  • Collect more data
  • Collect more diverse training set
  • Train algorithm longer with gradient descent
  • Try Adam instead of gradient descent
  • Try bigger network
  • Try smaller network
  • Try dropout
  • Add L2 regularization
  • Network architecture: Activation functions, #hidden units…

可选择的方法很多,也很复杂、繁琐。盲目选择、尝试不仅耗费时间而且可能收效甚微。因此,使用快速、有效的策略来优化机器学习模型是非常必要的。**

二、Orthogonalization(正交化)

机器学习中有许多参数、超参数需要调试。通过每次只调试一个参数,保持其它参数不变,而得到的模型某一性能改变是一种最常用的调参策略,我们称之为正交化方法(Orthogonalization)。
其核心在于调整一个参数只会影响模型的某一个性能,彼此之间是互不影响的,也就是正交。

  • fit training et well on cost function
  • fit dev set
  • fit test
  • perform well in real world

第一条优化训练集可以通过使用更复杂NN,使用Adam等优化算法来实现;第二条优化验证集可以通过正则化,采用更多训练样本来实现;第三条优化测试集可以通过使用更多的验证集样本来实现;第四条提升实际应用模型可以通过更换验证集,使用新的cost function来实现。概括来说,每一种“功能”对应不同的调节方法。而这些调节方法(旋钮)只会对应一个“功能”,是正交的。
early stopping 在提高验证集性能的同时影响了训练集的性能

三、Single number evaluation metric

precision & recall

3-1机器学习策略(上) - 图1

F1 score

3-1机器学习策略(上) - 图2

平均错误率

image.png

四、Satisficing and Optimizing metic

image.png
Accuracy和Running time这两个性能不太合适综合成单值评价指标。因此,我们可以将Accuracy作为优化指标(Optimizing metic),将Running time作为满意指标(Satisficing metic)。也就是说,给Running time设定一个阈值,在其满足阈值的情况下,选择Accuracy最大的模型。如果设定Running time必须在100ms以内,那么很明显,模型C不满足阈值条件,首先剔除;模型B相比较模型A而言,Accuracy更高,性能更好。

五、Train/dev/test distributions

原则上应该尽量保证dev sets和test sets来源于同一分布且都反映了实际样本的情况

  • 小数据 旧经验

70 / 30
60 20 20

  • 大数据

98% 1% 1%

测试集数量
不分测试集也可以

六、Avoidable bias

实际应用中,要看human-level error,training error和dev error的相对值。例如猫类识别的例子中,如果human-level error为1%,training error为8%,dev error为10%。由于training error与human-level error相差7%,dev error与training error只相差2%,所以目标是尽量在训练过程中减小training error,即减小偏差bias。如果图片很模糊,肉眼也看不太清,human-level error提高到7.5%。这时,由于training error与human-level error只相差0.5%,dev error与training error只相差2%,所以目标是尽量在训练过程中减小dev error,即方差variance。这是相对而言的。
对于物体识别这类CV问题,human-level error是很低的,很接近理想情况下的bayes optimal error。因此,上面例子中的1%和7.5%都可以近似看成是两种情况下对应的bayes optimal error。实际应用中,我们一般会用human-level error代表bayes optimal error。
通常,我们把training error与human-level error之间的差值称为bias,也称作avoidable bias;把dev error与training error之间的差值称为variance。根据bias和variance值的相对大小,可以知道算法模型是否发生了欠拟合或者过拟合。

七、Improving your model performance

提高机器学习模型性能主要要解决两个问题:avoidable bias和variance。我们之前介绍过,training error与human-level error之间的差值反映的是avoidable bias,dev error与training error之间的差值反映的是variance。

解决avoidable bias的常用方法包括:

  • Train bigger model
  • Train longer/better optimization algorithms: momentum, RMSprop, Adam
  • NN architecture/hyperparameters search

解决variance的常用方法包括:

  • More data
  • Regularization: L2, dropout, data augmentation
  • NN architecture/hyperparameters search