如下图,机器学习优化思路:
Loss on training data
large
在训练集中训练出来的Loss 之所以 Large 是有两个原因组成:
1、model的偏差(model bias) -- 偏差b取值的问题
如果model过于简单,如下图所示:
对于含有未知参数的function,由于model简单,它所表示的function set 所覆盖的范围较小。
如果真正最佳 参数function不没在function set里面,就会造成 最小化Loss 得到的参数是局部解。
解决方法:将model复杂化(如上图所示),从而增加model 的function set 弹性(即覆盖范围)
2、优化方式的选择(Optimization Issue)
在model所表示的function set所覆盖足够的范围下,如果优化方式选择不恰当,就会造成去的局部最优解,而非全局最优解。如下图所示:
3、model bias vs Optimization Issue
当Loss on the training data 过大,如何判断是由model bias 还是由 Optimization Issue 引起的呢?
判断方式的思路来源---如下图所示:
看右图,对比model 20-layer 与 56-layer 在Training Data 的表现
首先,model 56-layer 相比 20-layer来说,所表示的function set范围更大
其次,既然20-layer model在 training data中可以是loss表现如此低
那么,在training data中,56-layer的loss表现理应也可以表现的和20-layer一样好
然而,据图显示,情况并非如此
因此,可以得知,对于model 56-layer的loss 在training data 过大的原因---Optimization Issue
判断方式---如下图所示:
首先,对于我们从没做过的问题,我们可以先跑比较小的简单的network,甚至用一些不是deep learning的方法(Linear model、support vector machine(SVM))
因为,上述简单的model是比较容易做Optimization,不会有Optimize失败的问题。所以,先用简单的model 确定他到底会得到怎样的loss
其次,我们再采用一个深的model,如果发现深的model 和 浅的model比起来,明明深的model弹性(所表示的function set范围)更大,但loss却没有比浅的model压得更低
最后,这就代表Optimization有问题
那么遇到Optimization问题时,怎么解决呢?
(后期会讲解)
small--考虑Loss on the testing data
Loss on testing data
Large
关于Loss on testing data 过大,由两个因素组成:
1、 overfitting
overfitting的前提条件是Loss on training data is small,所以,这告诉我们在训练时,应记录下 training data loss,目的是排除 loss on training data 过大的问题出现
如上图,对于如何解决overfitting的问题,
最简单的方法1:增加training data。
比如,在图像识别时,我们可以Data augmentation,扩大training data,对图片进行左右翻转等操作。ps:但对于图片变形要遵循显示要求,比如,对于站在雪地上的猫,不应倒立放置。
方法2:不让model有太大的弹性,给model增加限制,那样即使training data数量少,也能学习到正确的参数,得到恰当的model。
那么,有哪些方法可以限制model呢?
1、 给model少些参数(如果是deep learning的话,就给他少的神经元数目)
or 让model共用参数(可以让一些参数有一样的数值,)eg:CNN 他就是针对影像的特性来限制模型的弹性
2、Less features
3、Early stopping
4、Regularization
5、Dropout
注意:针对限制model,不应过火,会出现如下图所示情况:
由于model被过于限制,导致所以训练的model的loss过大,这就不是overfitting问题,而是model bias 问题。
那么,针对model复杂程度,Loss在training data的变化和在testing data的变化如下图所示:
通过图可以看出,对于model复杂化,有个最佳点,可以是testing loss 最小化,且不会overfitting
那么,如何找到这样合理的model呢?--- 构建Cross Validation
我们将三个可能的models放入到Training data中训练出当前最佳的models
再将此mdels 在cross validation data 中计算出相应的loss来
最后,根据最小的loss选择合理的model
那么,如何划分出Cross Validation呢?
我们可以先将training data切分成N等分,
在下图中,假设将其拆分成3等分
切完后,将其中一份当成Cross Validation,另外两份当成training data,这样就有三种情况
具体情况如下图:
根据Avg Loss on the Cross validation 选择合适的model(从多个可能的models中选择)
2、 mismatch
mismatch相当于overfitting,唯一的区别在于
overfitting可以用收集更多的资料来克服问题
mismatch则是因为当前的training data 和 testing data 他的特征不一样,