0


【Datawhale X 李宏毅苹果书 AI夏令营】Task 3《深度学习详解》-2 机器学习框架&实践攻略

本次的学习内容是一次关于机器学习作业实践的攻略。过程如下面的树状图所示:

在这里插入图片描述

接下来让我们来具体解释一下图中的内容。

机器学习框架&实践攻略

模型偏差

在完成函数的构造之后,我们应该先来看看训练集中的loss大小。
若 loss on Training data 过大,则第一步就是注意一下在模型偏差与优化上面的问题。

模型偏差可能会影响模型训练
举个例子,假设模型过于简单,一个有未知参数的函数代

      θ 
     
    
      1 
     
    
   
  
    \theta_1 
   
  
θ1​ 得到一个函数  
 
  
   
    
    
      f 
     
     
     
       θ 
      
     
       1 
      
     
    
   
     ( 
    
   
     x 
    
   
     ) 
    
   
  
    f_{θ_1}(x) 
   
  
fθ1​​(x),同理可得到另一个函数  
 
  
   
    
    
      f 
     
     
     
       θ 
      
     
       2 
      
     
    
   
     ( 
    
   
     x 
    
   
     ) 
    
   
  
    f_{θ_2}(x) 
   
  
fθ2​​(x),把所有的函数集合起来得到一个函数的集合。但是该函数的集合太小了,没有包含任何一个函数,可以让损失变低的函数不在模型可以描述的范围内。在这种情况下,就算找出了一个  
 
  
   
    
    
      θ 
     
    
      ∗ 
     
    
   
  
    θ^∗ 
   
  
θ∗,虽然它是这些蓝色的函数里面最好的一个,但损失还是不够低。

这种情况就是因为模型弹性过小,造成的想要在大海里面捞针(一个损失低的函数),结果针根本就不在海里的情况。这个时候重新设计一个模型,给模型更大的灵活性。
在这里插入图片描述

优化问题

但是并不是训练的时候,损失大就代表一定是模型偏差,可能会遇到另外一个问题:优化做得不好。
一般只会用到梯度下降进行优化,这种优化的方法有着很多的问题。比如可能会卡在局部最小值的地方,无法找到一个真的可以让损失很低的参数,如下图所示。这个模型的弹性是足够大的,里面存在着某一个函数的损失是够低的,但是梯度下降没有给出这一个函数。
这就像是想大海捞针,针确实在海里,但是无法把针捞起来。

在这里插入图片描述
训练数据的损失不够低的时候,到底是模型偏差,还是优化的问题呢。找不到一个损失低的函数,到底是因为模型的灵活性不够,海里面没有针。还是模型的灵活性已经够了,只是优化梯度下降不给力,它没办法把针捞出来 到底是哪一个。到底模型已经够大了,还是它不够大,怎么判断这件事呢?

一个建议判断的方法,通过比较不同的模型来判断模型现在到底够不够大

如下图的例子,我们可以发现:56层的优化反而没有20层的优化造成的loss小,由此可以得知,该模型是优化问题导致的loss过大。
在这里插入图片描述

过拟合

small loss on training data,large loss on testing data —— 可能是因为过拟合的问题

为什么会有过拟合这样的情况呢?举一个极端的例子,这是训练集。假设根据这些训练集,某一个很废的机器学习的方法找出了一个一无是处的函数。这个一无是处的函数,只要输入 x 有出现在训练集里面,就把它对应的 y 当做输出。如果 x 没有出现在训练集里面,就输出一个随机的值。这个函数啥事也没有干,其是一个一无是处的函数,但它在训练数据上的损失是 0。把训练数据通通丢进这个函数里面,它的输出跟训练集的标签是一模一样的,所以在训练数据上面,这个函数的损失可是 0 呢,可是在测试数据上面,它的损失会变得很大,因为它其实什么都没有预测,这是一个比较极端的例子,在一般的情况下,也有可能发生类似的事情。

在这里插入图片描述
如下图所示,举例来说,假设输入的特征为 x,输出为 y,x 和 y 都是一维的。x 和 y之间的关系是 2 次的曲线,曲线用虚线来表示,因为通常没有办法,直接观察到这条曲线。我们真正可以观察到的是训练集,训练集可以想像成从这条曲线上面,随机采样出来的几个点。
模型的能力非常的强,其灵活性很大,只给它这 3 个点。在这 3 个点上面,要让损失低,所以模型的这个曲线会通过这 3 个点,但是其它没有训练集做为限制的地方,因为它的灵活性很大,它灵活性很大,所以模型可以变成各式各样的函数,没有给它数据做为训练,可以产生各式各样奇怪的结果。

在这里插入图片描述
怎么解决过拟合的问题呢,有两个可能的方向:

  • 第一个方向是往往是最有效的方向,即增加训练集。因此如果训练集,蓝色的点变多了,虽然模型它的灵活性可能很大,但是因为点非常多,它就可以限制住,它看起来的形状还是会很像,产生这些数据背后的 2 次曲线,如图下所示。可以做数据增强data augmentation,这个方法并不算是使用了额外的数据。在这里插入图片描述
  • 另外一个解法是给模型一些限制,让模型不要有过大的灵活性。假设 x 跟 y 背后的关系其实就是一条 2 次曲线,只是该 2 次曲线里面的参数是未知的。如下图所示,要用多限制的模型才会好取决于对这个问题的理解。因为这种模型是自己设计的,设计出不同的模型,结果不同。所以当训练集有限的时候,来来去去只能够选几个函数。所以虽然说只给了 3 个点,但是因为能选择的函数有限,可能就会正好选到跟真正的分布比较接近的函数,在测试集上得到比较好的结果。

具体来说,可以有这几种限制方法:给模型比较少的参数、用比较少的特征或使用早停

early stopping

、正则化

regularization

和丢弃法

dropout method

等方法。

在这里插入图片描述

验证

在loss on training data较少时,我们可以使用交叉验证的方法使得testing data 的loss也接近最低值。
将训练集切成 k 等份,轮流进行训练和验证

在这里插入图片描述


本文转载自: https://blog.csdn.net/2402_84069573/article/details/141825092
版权归原作者 乐下星。 所有, 如有侵权,请联系我们删除。

“【Datawhale X 李宏毅苹果书 AI夏令营】Task 3《深度学习详解》-2 机器学习框架&实践攻略”的评论:

还没有评论