文章目录
- 机器学习任务功略
- 机器学习框架
- 训练模型通用指南
- 1. training loss is large
- 2. training loss is small
- 2.1 training loss is small and testing loss is large
- 2.2 training loss is small and testing loss is small
- 3. 偏差与复杂度的平衡
机器学习任务功略
机器学习框架
训练模型通用指南
1. training loss is large
(1) model bias
Model Bias:模型太简单了,在优化的时候,无论给参数怎样的取值,都不能使 Loss 变小。
Solution:为了使模型更具有弹性,可以增加输入的 feature,或者让模型变得更深,即增加更多的神经元数量、增加更多的隐藏层。
(2) optimization issue
Optimization Issue:使用 gradient descent 进行优化,不断更新参数后获得的 θ ∗ \theta^* θ∗ 并不是使得 Loss 最低的 θ \theta θ,可能会遇到 Local Minima.
当 training loss 比较大的时候,到底是哪个问题呢?Model Bias or Optimization Issue?
从下面的图是 Residual Network 训练与测试的误差。从第一张图中可以看出随着更新次数的增加,56 层 和 20 层的模型的 test error 都在下降,但是 56 层的 test error 比较大,从理论上来说,模型越深,它预测的效果也就越好,而在这里却有所违背,人们会第一直觉地以为出现了 overfitting 的现象。
其实不然,从第二张图中可以看出,随着更新次数的增加,56 层和 20 层的模型的 train error 都在下降,但是 56 层的 train error 也比 20 层的模型要来得大, 我们可以试想,56 层的模型具有更大的弹性,20 层的模型所能达到的效果 56 层一样可以,因此可以判断出,是 56 层的模型没有做好 optimization.
那如何判断是否为 Optimization Issue 呢?
我们可以将模型与其他模型训练所得的结果进行比较。
从一些比较浅层的网络开始训练,或者是 linear model, support vector machine 开始训练,因为它们相对深层的网络来说,较为容易优化。
然后训练深层的网络,如果深层网络的 training loss 要比浅层网络还要大,就说明存在 optimization issue.
如何解决 optimization issue,看下节课的笔记。
2. training loss is small
2.1 training loss is small and testing loss is large
(1) overfitting
从下图中可以看出,更加 flexible 的模型,如果在一些点没有给出试练资料,就会有 freestyle,那么在预测结果时,就会产生更大的误差。
增加训练资料
为了避免 flexible model 在训练时出现 overfitting 现象,我们可以增加更多的训练资料。
1)在网络上搜集更多的资料;
2)data augmentation:根据自己对要解决问题的理解,可以自行创建资料。例如:把图片左右翻转、局部放大等,但不能上下翻转,有违常规。
给模型一些限制
我们现在所学得的模型都是全连接网络,具有很大的弹性,而 CNN 针对影像的特性给出很大的限制,取得比较好的效果。
但也要注意,不能太限制模型,限制地太多又回到了 model bias 的问题。
(2) mismatch
mismatch:训练资料与测试资料的分布是不同的。
2.2 training loss is small and testing loss is small
This is the best result we want.
3. 偏差与复杂度的平衡
如果模型太简单,会有 model bias 的问题,相反,太复杂,则会有 overfitting 的问题,折中的模型是我们想要的,那究竟如何 select the model?
在 public testing set 上取得很好的预测效果,但并不代表在 private testing set 上也能表现出色。
因此,我们不要根据在 public testing set 上的结果,来挑选模型。
那究竟根据什么的结果来选择模型呢?
根据 validation set 上的结果来挑选 model,那 public testing set 上的分数就反映了在 private testing set 上的分数。
那在 public testing set 上的分数多少会影响你对模型的选择,其实我们只要根据 validation set 上的结果来挑选 model 就可以了,public testing set 上的分数过了 strong baseline 就可以不用管他了。
如何分 training set,那为了使得被分到的 validation set 不会太差,可以使用 N 折交叉验证方法。
从下图中可以看出,model 1 的 avg mse 最小,取得的效果也最好,那我们就将 model 1 挑出来,重新在整个 training set 上训练,最后在 public testing set 上进行预测。