AI笔记(二):第9章 过拟合

第9章 过拟合

机器学习的主要目的是从训练集上学习到数据的真实模型,从而能够在未见过的测试集上面也能够表现良好,这种能力叫做泛化能力。训练集和测试集采样都来自相同的数据分布。即独立同分布假设。
模型的容量: 模型的表达能力。

9.1 模型的容量

1、通俗地讲,模型的容量或者表达能力,是指模型拟合复杂函数的能力。体现模型容量的指标为模型的假设空间的大小。即模型可以表示的函数集的大小。
2、假设空间越大越完备,从假设空间种搜索出逼近真实模型的函数也就越有可能;反之,如果假设空间非常受限,就很难从中找到逼近真实模型的函数。
3、过大的假设空间会增加搜索的难度和计算的代价。由于观测误差的存在,较大的假设空间种可能包含了大量表达能力过强的函数。会把训练样本中的观测误差也学习进去,伤害模型的泛化能力。

9.2 过拟合与欠拟合

1、模型容量过大时,可能会出现训练样本上表现较好,测试样本上表现较差的现象。模型容量过小时,可能会出现在训练样本和测试样本表现皆不佳的现象。
2、过拟合: 当模型的容量过大时,网络模型除了学习到训练集数据的模态之外,还把额外的观测误差学习进来,导致学习的模型在训练集上面表现较好,在未见的样本上表现不佳,也就是泛化能力偏弱哦,这种现象叫做过拟合。
3、欠拟合: 模型的容量过小时,模型不能很好的学习到训练集数据的模态,导致训练机上变小不佳,同时在未见的样本上表现也不佳,这种现象叫做欠拟合。
4、实际场景中,真实模型往往是无法得知的,因此设计的假设空间如果过小,导致无法搜索到合适的学习模型;设计的假设空间过大,导致模型泛化能力过差。
5、如何选择假设空间?奥卡姆剃刀原理。能用最少绝对不用最多。

9.2.1 欠拟合

1、当我们发现模型在训练机上面误差一直维持较高的状态的时候,很难优化减少,同时测试集表现不佳的时候,可以考虑是否出现欠拟合的现象。
2、欠拟合的解决方法就是,通过增加神经网络的层数、增大中间维度的大小等手段。
3、现代深度神经网络模型可以很轻易达到较深的层数。用来学习模型的容量一般来说是足够的,在实际使用过程中,更多的是出现过拟合的现象。

9.2.2 过拟合

1、当假设空间远大于真实模型的函数容量时,会发现学习到的模型很有可能过分拟合训练样本,导致学习模型在训练样本上的误差非常小,甚至比真实模型在训练机上的误差小。对于测试样本,模型性能急剧下降,泛化能力很差。
2、深度神经网络中很容易出现过拟合的现象,主要原因还是因为神经网络的表达能力非常强,很容易出现神经网络的容量偏大现象。需要有效检测减少过拟合现象。

9.3 数据集划分

前面的介绍把数据集划分为训练集和测试集,但是为了挑选模型超参数的检测过拟合现象,一般需要将原来的训练集再次划分为新的训练集和验证集。即数据集,需要分为训练集、验证机和测试集3个子集。

9.3.1验证集和超参数

1、训练集用于训练模型参数,测试集用来测试模型的泛化能力。测试集中的样本不能参与模型的训练,防止模型“记忆”住数据的特征,损害模型的泛化能力。
2、测试集的性能不能作为模型训练的反馈,只能用来测试模型的泛化能力。我们需要在模型训练时挑选合适的模型超参数,判断模型是否过拟合。将训练集切分为训练集和验证集。
3、验证集用来选择模型的超参数。作为反馈。
· 根据验证集的性能表现来调整学习率、权值衰减系数、训练次数等
· 根据验证集的性能表现重新调整网络的拓扑结构
· 根据验证集的性能表现判断是否过拟合和欠拟合
训练集、验证集和测试集可以按照自定义比例来划分,常见的比例为60%-20%-20%
4、验证集和测试集的区别在于,算法设计人员可以根据验证集的表现调整模型的各种超参数设置,提升模型的泛化能力。而测试集的表现不能用来反馈模型的调整。

9.3.2 提前停止

1、训练集中的一个Batch运算更新一次叫做一个Step,对训练集的所有样本循环迭代一次叫做一个Epoch。一般建议几个Epoch后进行一次验证运算。
2、训练时,指标有训练误差、训练准确率;验证时,指标有验证误差、验证准确率;测试时,也有测试误差和测试准确率。
3、通过观测训练准确率和验证准确率可以大致判断模型是否过拟合和欠拟合。
4、观测到过拟合现象时,可以重新设计网络模型的容量,如降低网络的层数,降低网络的参数量,添加假设空间的约束,使得模型的容量降低,从而减轻或去除过拟合现象。
5、观测到欠拟合现象时,可以尝试增大网络的容量,如加深网络的层数,增加网络的参数量,舱室更复杂的网络结构。
6、如何选择合适的Epoch就停止训练,避免出现过拟合现象?当验证准确率连续P个Epoch没有下降时,可以预测已经到达最合适的Epoch附近,提前终止训练。

9.4 模型设计

1、对于神经网络来说,网络的层数和参数量是网络容量很重要的参考指标,通过减少网络的层数,减少每层中网络参数量的规模可以有效降低网络的容量。反之,如果需要增大网络容量,可以通过增加层数,增大每层的参数量等方式实现。

9.5 正则化

1、由于验证集的存在,模型的实际容量是随着网络参数的优化更新而产生变化的,具体的影响讨论如下:
2、控制多项式前面的系数为步为0来调整模型的容量。专业点来说,通过限制网络参数的稀疏性,可以来约束网络的实际容量。
3、这种约束一般通过在损失函数上添加额外的参数稀疏性惩罚项实现。
在这里插入图片描述
4、新的优化目标除了要最小化原来的损失函数外,还需要约束网络参数的稀疏性,优化算法会在降低损失函数的同时,尽可能地迫使网络参数变得稀疏。之间的权重通过/lamada来平衡。
常用的正则化方式有L0、L1、L2正则化

9.5.1 L0正则化

在这里插入图片描述
1、定义非零元素的个数,通过约束稀疏性惩罚项的大小可以迫使网络中的连接权值大部分为0,降低网络的实际参量和网络参量。但是L0范数并不可导,不能利用梯度下降算法进行优化。

9.5.2 L1正则化

在这里插入图片描述
1、定义张量中的所有元素的绝对值之和,连续可导。

9.5.3 L2正则化

在这里插入图片描述
1、张量中所有元素的平方和,连续可导

9.5.4 正则化效果

1、实际训练中,一般先尝试较小的正则系数,观测网络是否出现过拟合现象。然后舱室逐渐增大正则系数增加网络参数稀疏性,提高泛化能力。但是过高的正则系数可能导致网络不收敛,需要根据实际任务调节。

9.6 Dropout

1、Dropout通过随机断开神经网络的连接,减少每次训练时实际参与计算的模型的参数量;但是在测试时,Dropout会恢复所有的连接,保证模型测试时获得最好的性能。
2、在添加了Dropout功能的网络层中,每条连接是否断开符合某种预设的概率分布。比如,断开概率为p的伯努利分布。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值