当前位置:   article > 正文

深度学习 精选笔记(6)模型选择与正则化

深度学习 精选笔记(6)模型选择与正则化

学习参考:

①如有冒犯、请联系侵删。
②已写完的笔记文章会不定时一直修订修改(删、改、增),以达到集多方教程的精华于一文的目的。
③非常推荐上面(学习参考)的前两个教程,在网上是开源免费的,写的很棒,不管是开始学还是复习巩固都很不错的。

深度学习回顾,专栏内容来源多个书籍笔记、在线笔记、以及自己的感想、想法,佛系更新。争取内容全面而不失重点。完结时间到了也会一直更新下去,已写完的笔记文章会不定时一直修订修改(删、改、增),以达到集多方教程的精华于一文的目的。所有文章涉及的教程都会写在开头、一起学习一起进步。

一、模型选择、欠拟合和过拟合

模型选择是指在机器学习中选择最合适的模型来解决特定问题的过程。在解决机器学习问题时,通常会考虑多种不同的模型,每种模型有不同的复杂度、特性和适用范围。模型选择的目标是找到一个在训练数据上表现良好且能够泛化到新数据的模型。

模型选择是指在机器学习中选择最合适的模型来解决特定问题的过程。在解决机器学习问题时,通常会考虑多种不同的模型,每种模型有不同的复杂度、特性和适用范围。模型选择的目标是找到一个在训练数据上表现良好且能够泛化到新数据的模型。

模型选择通常包括以下几个步骤:

  • 选择模型类型:首先确定要使用的模型类型,例如线性模型、决策树、神经网络等。选择模型类型时需要考虑问题的特性和数据的特点。
  • 定义模型结构:对于选择的模型类型,需要定义其具体的结构,包括网络层数、每层的节点数、激活函数等参数。
  • 训练模型:使用训练数据对模型进行训练,调整模型参数使其能够更好地拟合训练数据。
  • 评估模型:使用验证集或交叉验证等方法对训练好的模型进行评估,评估模型在新数据上的泛化能力。
  • 调整模型:根据评估结果对模型进行调整,可以尝试不同的模型结构、超参数或特征工程方法,以提高模型的性能。
  • 选择最佳模型:根据评估结果选择表现最好的模型作为最终模型,用于解决实际问题。

欠拟合(Underfitting) 是指模型对训练数据学习不足,不能很好地捕捉数据中的模式和规律的现象。在训练过程中,模型没有很好地适应训练数据,导致模型在训练集上表现较差,同时在测试集上也表现不佳。欠拟合通常是由于模型过于简单或者学习能力不足导致的。例如,对于非常复杂的数据模式,使用线性模型进行建模可能会导致欠拟合。欠拟合的模型往往在训练数据上表现不佳,其预测能力较差,无法很好地泛化到新的数据上。

解决欠拟合问题的方法包括:

  • 增加模型复杂度:可以尝试使用更复杂的模型,例如增加神经网络的层数或节点数,以增加模型的表达能力。
  • 添加更多特征:可以尝试添加更多有意义的特征,以帮助模型更好地捕捉数据中的模式。
  • 减少正则化:如果模型使用了正则化项,可以尝试减少正则化的程度,以降低模型对参数的约束,提高模型的灵活性。
  • 增加训练数据:增加训练数据量可以帮助模型更好地学习数据中的模式,从而减少欠拟合的问题。
  • 调整超参数:可以调整模型的超参数,例如学习率、批次大小等,以改善模型的性能。

过拟合(Overfitting) 是指机器学习模型在训练数据上表现很好,但在测试数据或新数据上表现较差的现象。过拟合通常是由于模型过于复杂或者训练数据过少导致的,模型在训练数据上学习到了数据中的噪声和随机变化,导致模型过度拟合了训练数据的特性,无法很好地泛化到新的数据上。

过拟合的特点包括:

  • 在训练集上表现很好,但在测试集上表现较差。
  • 模型的泛化能力较差,不能很好地适应新的数据。
  • 模型的复杂度较高,包括参数数量较多或者模型结构过于复杂等。

解决过拟合问题的方法包括:

  • 简化模型:可以尝试使用更简单的模型,减少模型的复杂度,例如减少神经网络的层数或节点数。
  • 正则化:可以使用正则化技术,例如 L1 正则化或 L2 正则化,来约束模型的复杂度,防止模型过拟合训练数据。
  • 增加训练数据:增加训练数据量可以帮助模型更好地学习数据中的模式,减少过拟合的可能性。
  • 提前停止训练:可以通过监控模型在验证集上的表现,在模型性能开始下降之前停止训练,避免模型过度拟合训练数据。
  • 特征选择:可以选择最重要的特征,去除无关的特征,减少模型学习的复杂度。

1.训练误差和泛化误差

训练误差(training error) 是指, 模型在训练数据集上计算得到的误差。
泛化误差(generalization error) 是指, 模型应用在同样从原始样本的分布中抽取的无限多数据样本时,模型误差的期望。

问题是,我们永远不能准确地计算出泛化误差。 这是因为无限多的数据样本是一个虚构的对象。 在实际中,我们只能通过将模型应用于一个独立的测试集来估计泛化误差, 该测试集由随机选取的、未曾在训练集中出现的数据样本构成。

简单的模型和大量的数据,会期望泛化误差与训练误差相近。 当有更复杂的模型和更少的样本时,预计训练误差会下降,但泛化误差会增大。 模型复杂性由什么构成是一个复杂的问题。 一个模型是否能很好地泛化取决于很多因素。

通常对于神经网络,认为需要更多训练迭代的模型比较复杂, 而需要早停(early stopping)的模型(即较少训练迭代周期)就不那么复杂。

2.模型选择

通常在评估几个候选模型后选择最终的模型。 这个过程叫做模型选择。 有时,需要进行比较的模型在本质上是完全不同的(比如,决策树与线性模型)。 又有时,需要比较不同的超参数设置下的同一类模型。

2.1训练集、测试集、验证集

训练集、测试集和验证集是在机器学习中常用的数据集划分方式,用于模型训练、评估和调优。

将数据分成三份, 除了训练和测试数据集之外,还增加一个验证数据集(validation dataset), 也叫验证集(validation set)。 但现实是验证数据和测试数据之间的边界模糊得令人担忧。

(1)训练集(Training Set):训练集是用来训练模型的数据集,模型通过训练集学习数据中的模式和特征。训练集通常包含大量的样本数据,用于模型参数的学习和优化
(2)测试集(Test Set):测试集是用来评估模型性能的数据集,模型在测试集上进行测试,评估模型在新数据上的泛化能力。测试集通常是从原始数据中独立抽取的,确保测试集和训练集没有重叠的样本。
(3)验证集(Validation Set)验证集是用来调整模型超参数和选择模型的数据集,通过在验证集上评估不同参数或模型的性能,选择最佳的模型和参数组合。验证集通常是从训练集中独立抽取的一部分数据,与测试集、训练集没有交集。

区别:

  • 训练集用于训练模型,测试集用于评估模型性能,验证集用于调整模型参数和选择模型。
  • 训练集和验证集通常用于模型的训练和调优过程,测试集用于最终评估模型的泛化能力。
  • 训练集和验证集是在模型开发过程中使用的,测试集是在模型开发完成后使用的。
  • 测试集是不能用来更新模型和调整超参数的,验证集才可以。

2.2 K折交叉验证

K折交叉验证的主要目的包括:

  • 评估模型性能:通过多次训练和验证,可以更准确地评估模型在不同数据子集(测试集)上的性能,避免因为单次划分数据而引入偶然性。
  • 选择最佳超参数:在交叉验证过程中,可以尝试不同的超参数组合,并选择在验证集上性能最好的模型作为最终模型,从而提高模型泛化能力。
  • 减少过拟合风险:通过K折交叉验证,可以更好地评估模型在未见数据(测试集) 上的泛化能力,减少过拟合的风险。

注意:很多文章在交叉验证中有的把除训练集之外的另一个数据集称为测试集、有的称为验证集。难有统一的称呼。在这里统一唤作验证集即可。

具体来说,K折交叉验证的步骤如下:

  • 将原始数据集分成K个子集,其中一个子集作为验证集,剩下的K-1个子集作为训练集。
  • 对于每个子集,使用K-1个子集进行训练,并在剩下的一个验证集上评估模型的性能。
  • 重复上述步骤K次,每次选择不同的验证集。
  • 最终将K次验证的结果进行平均,得到最终的评估结果。

3.欠拟合、过拟合

欠拟合(Underfitting)和过拟合(Overfitting)是机器学习中常见的两种模型训练问题,它们分别表示模型在训练数据上表现不佳或过度学习训练数据的特征,而无法泛化到新数据上。
在这里插入图片描述

训练误差和验证误差都很严重, 但它们之间仅有一点差距。 如果模型不能降低训练误差,这可能意味着模型过于简单(即表达能力不足), 无法捕获试图学习的模式。此外,由于训练和验证误差之间的泛化误差很小, 有理由相信可以用一个更复杂的模型降低训练误差。 这种现象被称为欠拟合(underfitting)。
欠拟合(Underfitting):

  • 指模型无法在训练数据上学习到数据的基本模式和规律,导致模型在训练集和测试集上表现均不佳。
  • 原因可能是模型过于简单,无法捕捉数据中的复杂关系,或者数据特征过于多样化,模型无法很好地拟合。
  • 解决方法包括增加模型复杂度、添加更多特征、减少正则化等。

训练误差明显低于验证误差时要小心, 这表明严重的过拟合(overfitting)。过拟合并不总是一件坏事。最好的预测模型在训练数据上的表现往往比在保留(验证)数据上好得多。 最终,通常更关心验证误差,而不是训练误差和验证误差之间的差距。

过拟合(Overfitting):

  • 指模型在训练数据上表现良好,但在未见数据(如测试集)上表现不佳,因为模型过度学习了训练数据的噪声和细节。
  • 过拟合可能是因为模型过于复杂,训练数据量太少,或者模型没有合适的正则化。
  • 解决方法包括减少模型复杂度、增加训练数据、使用正则化技术(如L1正则化、L2正则化)等。

欠拟合是指模型无法继续减少训练误差。过拟合是指训练误差远小于验证误差。

4.多项式回归来对比欠拟合、过拟合

import math
import numpy as np
import tensorflow as tf
from d2l import tensorflow as d2l
  • 1
  • 2
  • 3
  • 4

4.1生成数据集

使用以下三阶多项式来生成训练和测试数据的标签:
噪声项

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/190022
推荐阅读
相关标签