Framework of ML

对于机器学习,training data会包含x与$\hat{y}$​对应的。

几次作业都是一样的,作业2语音识别,作业3图像识别,作业4对话识别,只是x和$\hat{y}$不同。

Steps

确定function,确定loss function,找到最小loss的参数

但是如何使模型更好呢?

General Guide

Model Bias

如果你的function set设定的不好,也就是任何参数的function都不能使loss变小,那么就是function set的问题,解决方式就是重新设计一个function。

比如说对于youtube观看次数的预测,可以优化模型的方式有:

  • 从一天改为56天
  • 增加一些新的feature

Optimization Issue

比如梯度下降会卡在local minimum的位置而找不到global minimum。

也就是说通过优化找不到参数低的function,为了能够让要找的function在这里,我们需要把model变大

这两种都是有可能的,可是在训练的时候怎么样才能判断出是model bias的问题,还是optimization issue的问题?

Model Bias v.s. Optimization Issue

model bias需要把model变小,而optimization issue需要把model变大。

在2015年的paper中,有人用了56层和20层的模型去预测测试集上的错误率,结果发现56层的layer始终比20层高一些。当时大家都认为这是过拟合的问题

但是实际上这个问题应该结合training data去看。

如果是model bias的问题,那么training data上56层理应应该和20层的error相差不大,因为56层的模型弹性应该更大。因此就可以推测出来optimization的问题

Optimization Issue Sovled Ways
  • Gaining the insights from comparison
  • Start from shallower networks(or other models), which are easier to optimize
  • if deeper networks do not obtain smaller loss on training data, then there is optimization issue

通过试一些浅的模型,然后再试较为复杂的模型看训练集上的error。如果没有编号,就是optimization issue

Overfitting

training小,testing大。有可能是过拟合。但是为什么呢

对于一个一无是处的function,如果找到traning的x,那么就把training的y返回,否则就生成一个随机值。虽然这个function毫无用处,但是它可以做到在traning的error是0的

解决overfittting的方法比如是通过增加训练资料。但是如果资料有限的话,应该如何呢?

Data augmentation

自己增加训练资料,比如通过左右翻转,让资料实际上增加两倍.但是要根据资料特性来增加,比如上下翻转就不是很合适.

对于model的理解取决于这个问题的理解.

Constrianed model

更少的参数,共享参数

比如通过fully-connected找到的模型相对于cnn是比较小的。cnn的模型弹性不够高,但是正因为在医学影像中的限制较大,反而效果会比较好。

其他一些限制模型的方式有以下这些:

  • Less parameters, sharing parameters
  • Less features
  • Early stopping
  • Reugularization
  • Dropout

但是模型的限制也不应该太大,比如我们设定的模型是直线,但是目前的线是三个点,那么怎么找这个模型都无法同时通过三个点。这就是model bias的问题。

最好的模型就是既不复杂的也不太简单的。

假设我们参加kaggle,我们有好几个模型,我们测试在public测试集上查看最小的loss,有可能在public测试集上随机的结果导致结果好,让我们误以为模型很好,但是实际上在真正的private测试集上效果会很差。kaggle的改分看的是public和private一起。

Cross Validation

交叉验证可以避免这种在测试集上的模型随机问题,因为是把训练集的一部分当做验证集去做的,因此这种方式找到的model经得起验证。

n fold validation

通过把model的training分为三份,分别做三次的loss,平均最小的mse就是最好的model,这个方式也是为了获得更好的模型,减少验证集的影响。

mismatch

mismatch就是对测试集的数据分布差距过大的问题。