Datawhale X 李宏毅苹果书 AI 夏令营 —— Part 05 @深度学习 @AI

机器学习任务攻略

大部分机器学习任务的形式类似,训练数据(Training data)包含特征 x 和标签 y,测试数据(Testing data)只包含特征 x
像 Part01 中所述,训练过程都包含以下三个步骤:

  1. 写出带有未知数的函数
    y = f θ ( x ) y = f_\theta(x) y=fθ(x)

  2. 通过训练数据计算损失 L(θ)

  3. 最优化
    θ ∗ = a r g min ⁡ θ L \theta^* = arg \min_\theta L θ=argθminL
    预测过程只需要把输入 x 代入函数中,求得输出。通常预测之前都需要线训练模型,如果训练数据的损失很大,显然它在训练集上面也没有训练好。如图所示,接下来再分析一下在训练集上面没有学好的原因。

在这里插入图片描述

模型偏差(Model Bias)

假设模型过于简单,如图所示,一个有未知参数的函数代入 θ1,得到一个函数 fθ1(x),同理代入 θ2 可得到另一个函数 fθ2(x),把所有的函数集合起来得到一个函数的集合。但是该集合太小了,没有包含损失变低的函数。
在这里插入图片描述
解决方法:给予模型更大的灵活性。具体方法如下

  • 增加更多的特征
  • 设计更大的模型
  • 使用深度学习

优化问题

常用的优化方法是梯度下降法,这种优化的方法存在很多的问题。
比如可能会卡在局部最小值或鞍点,无法找到可以让损失最低的参数。具体解决方法在 Part02 中有提及,包括动量法。
还可能有梯度很大但损失无法下降的问题,具体解决方法在 Part04 中有提及,包括自适应学习率。

过拟合

假设根据训练集,某一个很废的机器学习的方法找出了一个一无是处的函数。只要输入 x 有出现在训练集里面,就把它对应的 y 当做输出。如果 x 没有出现在训练集里面,就输出一个随机的值。 但是因为损失为 0 ,模型错误地理解它为训练效果很好。
这里我们指的很废的方法和无用的模型不具有预测作用,在私人测试集上的效果很差。

解决方法:

  • 增加训练集
    • 收集额外的数据
    • 数据增强(data augmentation)(更常用)
  • 给模型一些限制
    • 给模型比较少的参数
      • 如果是深度学习的话,就给它比较少的神经元的数量
      • 让模型共用参数,让一些参数有一样的数值
    • 用比较少的特征
    • 正则化:添加正则化项以限制模型参数的大小和复杂性,常见的正则化方法包括L1正则化、L2正则化等
    • 早停:在训练损失完成下降之前停止模型训练过程
    • 丢弃法:用于深度学习,随机丢弃一部分神经元。

交叉验证

比较合理的模型选择(Model selection)方法是把训练的数据分成两半,一部分称为训练集(training set),一部分是验证集(validation set)。

在训练集上训练出来的模型会使用验证集来衡量它们的分数,根据验证集上面的分数去挑选结果,再把这个结果上传到公开数据平台上面得到的公开分数。所以,在挑分数的时候,是用验证集来挑模型,公开(pubilc)测试集分数就可以反映私人(private)测试集的分数。
但假设这个循环做太多次,根据公开测试集上的结果调整模型太多次,就又有可能出现在公开测试集上面过拟合,在私人测试集上面得到差的结果的问题。
其他做法举例:

  • 用验证损失,最小的直接挑就好了,不要管公开测试集的结果,有过比较好的基线(baseline)算法以后,就不要再去动它了,就可以避免在测试集上面过拟合。 在实现上,不太可能这么做,因为公开数据集的结果对模型的选择,可能还是会有些影响的。
  • k 折交叉验证:避免随机分验证集,可能会分得不好的问题,先把训练集切成 k 等份,将其中一份拿来训练,以此类推得到 k 个模型。把每个模型在相应的训练跟验证数据集上再跑一遍,看看哪个模型的结果最好,就把这个模型用在全部的训练集上,训练后用在测试集上。

Q:为什么要把测试集分成公开和私人?
A:假设所有的数据都是公开,就算是一个一无是处的模型,它也有可能在公开的数据上面得到好的结果。如果只有公开的测试集,没有私人测试集,写一个程序不断随机产生输出就好,不断把随机的输出上传到 平台,可以随机出一个好的结果。这个显然没有意义。而且如果公开的测试数据是公开的,公开的测试数据的结果是已知的,一个很废的模型也可能得到非常好的结果。不要用公开的测试集调模型,因为可能会在私人测试集上面得到很差的结果,不过因为在公开测试集上面的好的结果也有算分数。

不匹配

不匹配是指训练集跟测试集的分布不同,比如训练集上出现反常情况。
考验我们对训练集跟测试集的产生方式的理解,来鉴别不匹配情况,因为即使增大训练数据集也无法解决这类问题。

参考资料:
[1] 李宏毅《深度学习详解》电子版:https://github.com/datawhalechina/leedl-tutorial
[2] 视频讲解:https://www.bilibili.com/video/BV1JA411c7VT/?p=4&vd_source=3efd40f637f094c1da27b1a24b410e12

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值