status
type
date
slug
summary
tags
category
password
icon
Total Videos
Link
Video Duration

机器学习(ML)基本框架

0:26 机器学习的框架基本上都是大同小异,就是会有一堆的data,它们分为:
  • Traing data:
  • Testing data:
其中:训练资料包含,input_feature )和对应的(真值);测试资料只包含
让我再简单的回顾一下模型的训练过程:
  1. 定义未知函数:,式中输入为 ,称为feature为未知参数
  1. 从训练数据中定义Loss函数:,输入为,以此判断未知参数的好坏
  1. 最优化算法找出,通过最优化算法,找出能使Loss最小的
对于测试过程:
代入模型得到预测值
这就是基本的模型训练测试过程,但以上的方式往往只能得到模型的及格线(baseline),那要如何让模型变得更好呢?

通用指南

notion image
  1. 检查训练数据:先检查模型是否在训练数据上训练起来,如果在训练集上的Loss很大,那么跳到2,反之跳到3。
  1. 训练集的Loss很大,有两种可能:
    1. model bias 问题:模型过于简单,我们所要找的函数不在模型范围内,解决方法是重新划定更有弹性的模型范围比如将 Linear model 变为 Sigmoid 函数以增加更多的 features,或者增加更多的Sigmoid 函数,也就是深度学习,增加更多的Neurons,Layer。
    2. optimization 问题:我们划定的模型范围包含了函数,但是我们选择的演算法找不出能使这个函数Loss最小的,这就是前文提到的Gradient Descent方法的Local minima问题。
    3. 那么如何区分上面两种导致Loss值增大的原因呢?
      notion image
      以上图为例,这是一个56层的DNN和20层的DNN的对比,在测试数据上可以很明显的看出20层的Loss要小于56层,按前文所述步骤,我们先去看训练集的Loss,发现同样也是20层的Loss更小,这说明不是model bias问题,因为56层DNN的Feature一定会大于20层;只有可能是optimization问题。
      因此对于一个不了解的问题,我们可以尝试用一些简单的DNN或着机器学习中的model,因为这类模型通常不会有optimization问题。接下来再用一个更复杂的DNN,如果该DNN在训练集中没有获得更低的Loss,说明optimization方法不行。
      具体的optimization问题的解决方法请看下一讲。
  1. 如果训练集的Loss小,而测试集的Loss大,这就遇到了overfitting(过拟合)问题。举个极端的例子:假设我们有一个训练集:,然后找出了一个函数,它能将所有存在于训练集里的输入,输出为对应的;对于不存在于训练集里的输入,它则会返回一个随机值。这个函数的Loss在训练集上当然为0,(因为它压根没有学习),但在测试集上Loss会非常大,这就是过拟合现象。
    1. 那么为什么会出现overfitting呢?
      如下图所示,模型真实的情况应该如左图,但现在模型在训练集(蓝点)上虽然有低的Loss但且过于有弹性(右上图),也就是说给机器自由发挥的空间太多了,当我们用测试集(绿点)测试时,反而不能落在模型找出的函数(右下图)上了,此时Loss值就变的很大,也就是说模型过度拟合了。
      notion image
      我们要怎么解决过拟合现象呢?
      • 使用更多的训练资料或共享训练资料:训练数据越多就越能限制模型的弹性。
      • 数据增强(Data augmentation):不直接增加训练数据,而是通过一些合理的手段在原数据集上变换以间接增加数据集。比如图像识别中,把图像水平翻转,放大等操作(但不能上下翻转,因为会改变图像主体的正常形态,导致模型无法学习正确的影像)。
      • 限制模型的范围(弹性):这取决于你对问题的理解,比如预判到我们要找的函数是一个二次方程,那么即使我们的训练集很有限,但我们选到最好的那个函数的概率也会大大增加。对于DNN我们可以限制神经元的数目来达到限制模型弹性的效果,比如CNN。
      • 减少输入模型的feature(Less features):通过输入模型的feature以避免模型过拟合。比如我给了4天的训练数据,但发现只用前3天的更好,那么就只给前3天的数据。
      • 提前结束(Early stopping):在模型Loss值不在降低时,提前结束训练,避免过拟合。
      • 正则化(Regularization):正则化,可以使模型更加平滑和简单,从而提高其在新样本上的表现。正则化技术可以通过添加惩罚项来实现,惩罚项会惩罚模型中的复杂度,使其倾向于选择更简单的解决方案。常见的正则化方法有L1正则化和L2正则化。
      • Dropout:Dropout 是一种在深度学习中常用的正则化技术。它用于减少模型的过拟合和提高泛化能力。在训练过程中,dropout 会随机地将部分神经元的输出置为零,即将它们"丢弃"掉。这样可以强制神经网络学习到更加健壮和稳定的特征,避免对训练样本的过度拟合。通过在每个训练批次中随机丢弃不同的神经元,dropout 可以有效地减轻模型对于特定神经元的依赖,在一定程度上类似于集成多个不同的神经网络。这种技术的引入,促进了神经网络的泛化能力和预测性能的提升。
      ⚠️
      要注意不能过度的限制模型弹性,否则会从overfitting问题转变为model bias问题
  1. mismatch问题:还有一种会使模型在测试集上的Loss增大的原因是mismatch,与overfitting不同,mismatch无法通过限制模型的弹性来降低loss,这是因为训练资料和现实情况完全脱节,这时需要依靠自身对训练资料的理解来判断是否遇到了mismatch。比如图像识别,训练集是真实的动物照片,但测试集却是抽象的简笔画,这种情况的测试结果是惨不忍睹的。
notion image
要注意,随着我们不断增大模型的复杂度,训练集和测试集的Loss都会不断的减小;但对于测试集而言,随着模型复杂度的增大可能会因为overfitting问题而使Loss重新变大。
对于我们而言选择中间的模型是最理想的,但选择到这种模型并不容易,很多时候,我们的模型在不同的测试集上表现的却天差地别。因此我们会使用验证集的Loss来衡量我们的训练集模型的质量。
比较常用的方法是N-fold Cross Validation
notion image
它通过将训练数据分为三份,取其中的两份做训练,留一份做验证,重复三次,取平均loss最低的模型为最好。
2.2类神经网络训练不起来怎么办 (一): 局部最小值 (local minima) 与鞍点 (saddle point)关于GPT-4o你需要知道的一些细节(附带强开GPT-4o的方法)
Loading...