李宏毅ML-机器学习任务功略

文章探讨了训练机器学习模型时遇到的训练损失大和小的问题,以及对应的解决方案。训练损失大可能是模型过于简单或优化问题,可以通过增加特征或改进优化算法来解决。训练损失小但测试损失大可能表明过拟合,可以通过增加数据量或应用正则化来缓解。最佳情况是训练和测试损失都小,这需要平衡模型的复杂度和偏差。选择模型应基于验证集的表现,而非公共测试集的结果,并且可以使用交叉验证来分割数据集。
摘要由CSDN通过智能技术生成

机器学习任务功略

机器学习框架

在这里插入图片描述

训练模型通用指南

在这里插入图片描述

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 上进行预测。
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值