06 网络优化与正则化

目录

[1. 网络优化方法](#1. 网络优化方法)

[1.1 优化算法](#1.1 优化算法)

[1.1.1 批量大小选择](#1.1.1 批量大小选择)

[1.1.2 学习率调整](#1.1.2 学习率调整)

[1.1.3 梯度估计修正](#1.1.3 梯度估计修正)

[1.2 参数初始化](#1.2 参数初始化)

[1.2.1 预训练初始化](#1.2.1 预训练初始化)

[1.2.2 随机初始化](#1.2.2 随机初始化)

[1.2.3 固定值初始化](#1.2.3 固定值初始化)

[1.3 数据预处理](#1.3 数据预处理)

[1.4 逐层归一化](#1.4 逐层归一化)

[1.5 超参数优化](#1.5 超参数优化)

[2. 网络正则化](#2. 网络正则化)

[2.1 L1和L2正则化](#2.1 L1和L2正则化)

[2.2 权重衰减(Weight Decay)](#2.2 权重衰减(Weight Decay))

[2.3 提前停止(Early Stopping)](#2.3 提前停止(Early Stopping))

[2.4 丢弃法(Dropout)](#2.4 丢弃法(Dropout))

[2.5 数据增强(Data Augmentation)](#2.5 数据增强(Data Augmentation))


虽然神经网络具有非常强的表达能力,但是当应用神经网络模型到机器学习时依然存在一些难点问题。主要分为两大类:

(1)优化问题:深度神经网络的优化十分困难。首先,神经网络的损失函数是一个非凸函数,找到全局最优解通常比较困难。其次,深度神经网络的参数通常非常多,训练数据也比较大,训练效率通常比较低。此外,深度神经网络存在梯度消失或爆炸问题,导致基于梯度的优化方法经常失效。

(2)泛化问题:由于深度神经网络的复杂度比较高,并且拟合能力很强,很容易在训练集上产生过拟合。因此在训练深度神经网络时,同时也需要通过一定的正则化方法来改进网络的泛化能力。

目前已有一些经验方法可以在神经网络的表示能力、复杂度、学习效率和泛化能力之间找到比较好的平衡,并得到一个好的网络模型。本文从网络优化和网络正则化两个方面来介绍这些方法。

在网络优化方面,介绍一些常用的:

  • 优化算法
  • 参数初始化方法
  • 数据预处理方法
  • 逐层归一化方法
  • 超参数优化方法

在网络正则化方面,介绍一些提高网络泛化能力的方法,包括:

  • L1和L2正则化
  • 权重衰减
  • 提前停止
  • 丢弃法
  • 数据增强
  • 标签平滑

1. 网络优化方法

1.1 优化算法

目前,深度神经网络的参数学习主要是通过梯度下降法来寻找一组可以最小化结构风险的参数。在具体实现中,梯度下降法可以分为:批量梯度下降、随机梯度下降以及小批量梯度下降三种形式。根据不同的数据量和参数量,可以选择一种具体的实现形式。

1.1.1 批量大小选择

在小批量梯度下降法中,批量大小(Batch Size)对网络优化的影响也非常大。一般而言,批量大小不影响随机梯度的期望,但是会影响随机梯度的方差。批量越大,随机梯度的方差越小,引入的噪声也越小,训练也越稳定,因此可以设置较大的学习率。而批量较小时,需要设置较小的学习率,否则模型会不收敛。学习率通常要随着批量大小的增大而相应地增大。

一个简单有效的方法是线性缩放规则(Linear Scaling Rule):当批量大小增加m倍时,学习率也增加m倍。线性缩放规则往往在批量比较小时适用,当批量大小非常大时,线性缩放会使得训练不稳定。

在实践中,批量大小的选择通常介于几个到几千个样本之间。一些常用的批量大小包括:

  • 32
  • 64
  • 128
  • 256
  • 512

这些数值往往是2的幂次,因为在GPU上处理2的幂次的批量大小通常更高效。

批量大小确定的步骤:

  1. 开始:从一个较小的批量大小开始,比如32或64,观察模型的表现。
  2. 调整:逐渐增加批量大小,直到达到硬件限制或发现训练时间过长。
  3. 验证:在验证集上监控模型性能,确保模型在不同批量大小下的表现。
  4. 比较:比较不同批量大小下的模型性能和训练时间,选择一个平衡点。
1.1.2 学习率调整

学习率是神经网络优化时的重要超参数。在梯度下降法中,学习率 的取值非常关键,如果过大就不会收敛,如果过小则收敛速度太慢。常用的学习率调整方法包括学习率衰减、学习率预热、周期性学习率调整,以及一些自适应调整学习率的方法,比如AdaGrad、RMSprop、AdaDelta等。自适应学习率方法可以针对每个参数设置不同的学习率。

(1)学习率衰减

从经验上看,学习率在一开始要保持大些来保证收敛速度,在收敛到最优点附近时要小些以避免来回振荡。比较简单的学习率调整可以通过学习率衰减(Learning Rate Decay)的方式来实现,也称为学习率退火(Learning Rate Annealing)。

(2)学习率预热

在小批量梯度下降法中,当批量大小的设置比较大时,通常需要比较大的学习率。但在刚开始训练时,由于参数是随机初始化的,梯度住往也比较大,再加上比较大的初始学习率,会使得训练不稳定。

为了提高训练稳定性,我们可以在最初几轮迭代时,采用比较小的学习率,等梯度下降到一定程度后再恢复到初始的学习率,这种方法称为学习率预热(Learning Rate Warmup)。

(3)周期性学习率调整

为了使得梯度下降法能够逃离鞍点或尖锐最小值,一种经验性的方式是在训练过程中周期性地增大学习率。当参数处于尖锐最小值附近时,增大学习率有助于逃离尖锐最小值;当参数处于平坦最小值附近时,增大学习率依然有可能在该平坦最小值的吸引域内。因此,周期性地增大学习率虽然可能短期内损害优化过程,使得网络收敛的稳定性变差,但从长期来看有助于找到更好的局部最优解。

这里介绍两种常用的周期性调整学习率的方法:

  • **循环学习率:**即让学习率在一个区间内周期性地增大和缩小.通常可以使用线性缩放来调整学习率,称为三角循环学习率
  • **带热重启的随机梯度下降:**学习率每间隔一定周期后重新初始化为某个预先设定值,然后逐渐衰减。每次重启后模型参数不是从头开始优化,而是从重启前的参数基础上继续优化

(4)AdaGrad算法

在标准的梯度下降法中,每个参数在每次迭代时都使用相同的学习率。AdaGrad算法是借鉴L2正则化的思想,每次迭代时自适应地调整每个参数的学习率。

在AdaGrad算法中,如果某个参数的偏导数累积比较大,其学习率相对较小;相反,如果其偏导数累积较小,其学习率相对较大。但整体是随着迭代次数的增加,学习率逐渐缩小。

AdaGrad算法的缺点是在经过一定次数的迭代依然没有找到最优点时,由于这时的学习率已经非常小,很难再继续找到最优点。

此外,还有在AdaGrad算法基础上改进得到的RMSprop 算法和AdaDelta 算法。

1.1.3 梯度估计修正

在随机(小批量)梯度下降法中,如果每次选取样本数量比较小,损失会呈现振荡的方式下降。也就是说,随机梯度下降方法中每次迭代的梯度估计和整个训练集上的最优梯度并不一致,具有一定的随机性。一种有效地缓解梯度估计随机性的方式是通过使用最近一段时间内的平均梯度来代替当前时刻的随机梯度来作为参数更新的方向,从而提高优化速度。

(1)动量法

动量是模拟物理中的概念,一个物体的动量指的是该物体在它运动方向上保持运动的趋势,是该物体的质量和速度的乘积。动量法是用之前积累动量来替代真正的梯度。

动量法中:当某个参数在最近一段时间内的梯度方向不一致时,其真实的参数更新幅度变小;相反,当在最近一段时间内的梯度方向都一致时,其真实的参数更新幅度变大,起到加速作用。一般而言,在迭代初期,梯度方向都比较一致,动量法会起到加速作用,可以更快地到达最优点。在迭代后期,梯度方向会不一致,在收敛值附近振荡,动量法会起到减速作用,增加稳定性。

优点:1)加速收敛 :通过积累过去梯度的方向,可以加速收敛过程,特别是在沿着连续梯度方向时;2)减少振荡:有助于减少梯度方向的振荡,特别是在损失函数的鞍点附近。

缺点:1)局部最优 :可能会错过更优的解,特别是在损失函数中存在多个局部最小值时;2)固定学习率:学习率固定不变,可能不适合所有情况

(2)AdaGrad

优点:1)自适应学习率 :根据每个参数的历史梯度来调整学习率,有助于解决不同参数间的梯度尺度差异问题;2)鲁棒性:对于稀疏数据集特别有效,因为它能适应不同的梯度尺度。

缺点:1)累积效应 :梯度平方的累积可能会导致学习率过早衰减,这限制了长期的学习能力;2)固定衰减:梯度平方的累积没有遗忘机制,可能会导致学习率过早变得很小。

(3)RMSProp

优点:1)自适应学习率 :类似于 AdaGrad,但使用滑动窗口的梯度平方平均值,有助于避免学习率过早衰减的问题;2)灵活性:通过使用指数加权平均,可以更好地适应变化的梯度尺度。

缺点:参数选择:需要手动调整衰减率 β,选择不当可能影响性能

(4)Adam

优点:1)自适应学习率 :结合了动量法和 RMSProp 的优点,能够适应不同参数的学习率;2)快速收敛 :通常表现出较快的收敛速度;3)鲁棒性:对于各种问题和数据集都有良好的性能。

缺点:1)可能过拟合 :在某些情况下可能会导致过拟合,特别是在小数据集上;2)参数选择:需要选择动量系数 β1 和 RMSProp 的衰减率 β2。

(5)NAG

优点:1)减少振荡 :通过先向前移动一步再计算梯度,可以获得更准确的梯度方向,减少梯度方向突然变化时的摆动;2)加速收敛:有助于更快地收敛到最小值。

缺点:1)额外计算 :相比于标准动量法,需要额外的计算来预测未来的梯度方向。2)固定学习率:同样存在固定学习率的问题,可能不适合所有情况。

(6)Weight Decay (L2 正则化)

优点:1)防止过拟合 :通过在损失函数中加入正则化项,有助于防止过拟合;2)简单易用:实现简单,不需要额外的参数调整。

缺点:1)梯度估计 :本身并不直接修正梯度估计,而是通过改变损失函数来间接影响梯度;2)可能抑制学习:如果正则化强度选择不当,可能会抑制学习过程

下表:神经网络常用优化方法的汇总

下图: 不同优化方法的比较

1.2 参数初始化

神经网络的参数学习是一个非凸优化问题,当使用梯度下降法来进行优化网络参数时,参数初始值的选取十分关键,关系到网络的优化效率和泛化能力。

参数初始化的方式通常有以下三种:

1.2.1 预训练初始化

不同的参数初始值会收敛到不同的局部最优解。虽然这些局部最优解在训练集上的损失比较接近,但是它们的泛化能力差异很大。一个好的初始值会使得网络收敛到一个泛化能力高的局部最优解。通常情况下,一个已经在大规模数据上训练过的模型可以提供一个好的参数初始值,这种初始化方法称为预训练初始化(Pre-trained Initialization)。

预训练任务可以为监督学习或无监督学习任务。由于无监督学习任务更容易获取大规模的训练数据,因此被广泛采用。预训练模型在目标任务上的学习过程也称为精调(Fine-Tuning)。

1.2.2 随机初始化

在线性模型的训练(比如感知器和Logistic回归)中,我们一般将参数全部初始化为0,但是这在神经网络的训练中会存在一些问题。因为如果参数都为0,在第一遍前向计算时,所有的隐藏层神经元的激活值都相同;在反向传播时,所有权重的更新也都相同,这样会导致隐藏层神经元没有区分性,这种现象也称为对称权重现象。为了打破这个平衡,比较好的方式是对每个参数都随机初始化(Random Initialization),使得不同神经元之间的区分性更好。

虽然预训练初始化通常具有更好的收敛性和泛化性,但是灵活性不够,不能在目标任务上任意地调整网络结构。因此,好的随机初始化方法对训练神经网络模型来说依然十分重要。这里介绍三类常用的随机初始化方法:

(1)基于固定方差的参数初始化

一种最简单的随机初始化方法是从一个固定均值(通常为0)和方差 的分布中采样来生成参数的初始值。基于固定方差的参数初始化方法主要有以下两种:

  • 高斯分布初始化:使用一个高斯分布 对每个参数进行随机初始化
  • 均匀分布初始化:在一个给定的区间 [-r,r] 内采用均匀分布来初始化参数

在基于固定方差的随机初始化方法中,比较关键的是如何设置方差。如果参数范围取的太小 ,一是会导致神经元的输出过小,经过多层之后信号就慢慢消失了;二是还会使得Sigmoid型激活函数丢失非线性的能力。以Sigmoid型函数为例,在0附近基本上是近似线性的,这样多层神经网络的优势也就不存在了。如果参数范围取的太大,会导致输入状态过大。对于Sigmoid型激活函数来说,激活值变得饱和,梯度接近于0,从而导致梯度消失问题。

为了降低固定方差对网络性能以及优化效率的影响,基于固定方差的随机初始化方法一般需要配合逐层归一化来使用。

(2)基于方差缩放的参数初始化

要高效地训练神经网,给参数选取一个合适的随机初始化区间是非常重要的。一般而言,参数初始化的区间应该根据神经元的性质进行差异化的设置。如果一个神经元的输入连接很多,它的每个输入连接上的权重就应该小一些,以避免神经元的输出过大(当激活函数为ReLU时)或过饱和(当激活函数为Sigmoid函数时)。

初始化一个深度网络时,为了缓解梯度消失或爆炸问题,我们尽可能保持每个神经元的输入和输出的方差一致,根据神经元的连接数量来自适应地调整初始化分布的方差,这类方法称为方差缩放(Variance Scaling)。

表:两种常用方法Xavier初始化和He初始化的具体设置情况

(3)正交初始化

上面介绍的两种基于方差的初始化方法都是对权重矩阵中的每个参数进行独立采样,由于采样的随机性,采样出来的权重矩阵依然可能存在梯度消失或梯度爆炸问题。

一种更加直接的方式是将参数初始化为正交矩阵,即 ,这种方法称为正交初始化。正交初始化的具体实现过程可以分为两步:1)用均值为0、方差为1的高斯分布初始化一个矩阵;2)将这个矩阵用奇异值分解得到两个正交矩阵,并使用其中之一作为权重矩阵。

根据正交矩阵的性质,这个线性网络在信息的前向传播过程和误差的反向传播过程中都具有范数保持性,从而可以避免在训练开始时就出现梯度消失或梯度爆炸现象。

1.2.3 固定值初始化

对于一些特殊的参数,我们可以根据经验用一个特殊的固定值来进行初始化。比如偏置(Bias)通常用0来初始化,但是有时可以设置某些经验值以提高优化效率。在LSTM网络的遗忘门中,偏置通常初始化为1或2,使得时序上的梯度变大。对于使用ReLU的神经元,有时也可以将偏置设为0.01,使得ReLU神经元在训练初期更容易激活,从而获得一定的梯度来进行误差反向传播。

1.3 数据预处理

一般而言,样本特征由于来源以及度量单位不同,它们的尺度(即取值范围)往往差异很大。以描述长度的特征为例,当用"米"作单位时令其值为x,那么当用"厘米"作单位时其值为100x。

不同机器学习模型对数据特征尺度的敏感程度不一样。如果一个机器学习算法在缩放全部或部分特征后不影响它的学习和预测,我们就称该算法具有尺度不变性。比如线性分类器是尺度不变的,而最近邻分类器就是尺度敏感的。当我们计算不同样本之间的欧氏距离时,尺度大的特征会起到主导作用。因此,对于尺度敏感的模型,必须先对样本进行预处理,将各个维度的特征转换到相同的取值区间,并且消除不同特征之间的相关性,才能获得比较理想的结果。

理论上,神经网络应该具有尺度不变性,可以通过参数的调整来适应不同特征的尺度。但实际情况是,尺度不同的输入特征会增加训练难度,有时甚至使得神经网络难以训练。

这里,介绍三种神经网络中常用的数据预处理方法:

(1)最小最大值归一化

最小最大值归一化(Min-Max Normalization)是一种非常简单的归一化方法,通过缩放将每一个特征的取值范围归一到 [0,1]或 [-1,1]之间。假设有N个样本 ,对于每一维特征 ,归一化后为:

其中, 分别是第n维特征 在所有样本上的最小值和最大值。

(2)标准化

标准化(Standardization)也叫Z值归一化 (Z-Score Normalization),将每维特征调整为均值为0,方差为1。假设有N个样本 ,对于每一维特征 ,需先计算其均值和方差:

然后,进行数据标准化处理:

其中,标准差 不能为0 。如果标准差为0,说明特征没有任何区分性,可以直接删掉。

(3)白化

白化(Whitening)是一种重要的预处理方法,用来降低输入数据特征之间的冗余性。输入数据经过白化处理后,特征之间相关性较低,并且所有特征具有相同的方差。

白化的一个主要实现方式是使用主成分分析(Principal Component Analysis,PCA)方法去除掉各个成分之间的相关性。

图:标准归一化和PCA白化的比较

1.4 逐层归一化

逐层归一化(Layer Normalization)是一种用于神经网络训练的技术,它与数据预处理有所区别。虽然两者都涉及数据的标准化处理,但它们的作用对象和目的不同。

数据预处理通常指的是在将数据送入模型之前进行的一系列操作,目的是使数据更适合模型训练。

逐层归一化是为了解决训练深层神经网络时遇到的一些问题,如内部协变量偏移(internal covariate shift),并且帮助加速训练过程。它是在每一层的前向传播过程中直接对数据进行归一化的操作。具体来说,逐层归一化会对每个样本的特征维度进行归一化,而不是像批量归一化那样对整个批次的数据进行归一化。


逐层归一化不是一种数据预处理技术,而是一种模型内部的技术,用于改善训练过程。


逐层归一化可以有效提高训练效率的原因有以下几个方面:

(1)更好的尺度不变性:在深度神经网络中,一个神经层的输入是之前神经层的输出。当使用随机梯度下降来训练网络时,每次参数更新都会导致神经层的输入分布发生改变。越高的层,其输入分布会改变得越明显。就像一栋高楼,低楼层发生一个较小的偏移,可能会导致高楼层较大的偏移。从机器学习角度来看,如果一个神经层的输入分布发生了改变,那么其参数需要重新学习,这种现象叫作内部协变量偏移(Internal Covariate Shift)。为了缓解这个问题,我们可以对每一个神经层的输入进行归一化操作,使其分布保持稳定。

把每个神经层的输入分布都归一化为标准正态分布,可以使得每个神经层对其输入具有更好的尺度不变性。不论低层的参数如何变化,高层的输入保持相对稳定。另外,尺度不变性可以使得我们更加高效地进行参数初始化以及超参选择。

(2)更平滑的优化地形:逐层归一化一方面可以使得大部分神经层的输入处于不饱和区域,从而让梯度变大,避免梯度消失问题;另一方面还可以使得神经网络的优化地形(Optimization Landscape)更加平滑,以及使梯度变得更加稳定,从而允许我们使用更大的学习率,并提高收敛速度。

值得一提的是,逐层归一化不但可以提高优化效率,还可以作为一种隐形的正则化方法.在训练时,神经网络对一个样本的预测不仅和该样本自身相关,也和同一批次中的其他样本相关。由于在选取批次时具有随机性,因此使得神经网络不会"过拟合"到某个特定样本,从而提高网络的泛化能力。

1.5 超参数优化

在神经网络中,除了可学习的参数之外,还存在很多超参数,这些超参数对网络性能的影响也很大。不同的机器学习任务往往需要不同的超参数,常见的超参数有以下三类:

  • 网络结构,包括神经元之间的连接关系、层数、每层的神经元数量、激活函数的类型等
  • 优化参数,包括优化方法、学习率、小批量的样本数量等
  • 正则化系数

超参数优化(Hyperparameter Optimization)主要存在两方面的困难:1)超参数优化是一个组合优化问题,无法像一般参数那样通过梯度下降方法来优化,也没有一种通用有效的优化方法;2)评估一组超参数配置(Configuration)的时间代价非常高,从而导致一些优化方法(比如演化算法)在超参数优化中难以应用。

超参数的配置方法有:

(1)网格搜索

方法: 通过尝试所有超参数的组合,并根据这些超参数的不同组合分别训练一个模型,然后测试这些模型在开发集上的性能,选取一组性能最好的配置。优点: 简单易行,确保覆盖了所有指定的超参数组合。**缺点:**计算成本高,尤其是在超参数空间较大时效率低下。

(2) 随机搜索

方法 :从定义的超参数分布中随机抽样,而不是穷尽所有组合。优点 :相比于网格搜索,可以更快地找到较好的超参数组合。缺点:结果依赖于随机性,可能错过最佳超参数组合。

(3) 贝叶斯优化

方法 :使用概率模型(如高斯过程)来建模超参数与模型性能之间的关系,并利用此模型来指导搜索过程。优点 :高效,能够快速逼近最优解。缺点:实现复杂度较高,需要一定的数学背景理解。

(4)进化算法

方法 :模拟自然选择和遗传学原理,通过迭代产生新的超参数组合。优点 :能够处理非凸、非连续的搜索空间。缺点:计算成本相对较高,可能需要更多的迭代次数才能找到较好的解。

(5)基于模型的方法

方法 :使用代理模型来预测超参数的性能,然后根据代理模型的结果来选择下一个要评估的超参数。优点 :高效,可以利用先前的信息来指导搜索。缺点:代理模型的准确性影响最终结果。

2. 网络正则化

机器学习模型的关键是泛化问题,即在样本真实分布上的期望风险最小化。而训练数据集上的经验风险最小化和期望风验并不一致。由于神经网络的拟合能力非常强,其在训练数据上的错误率往往都可以降到非常低,甚至可以到0,从而导致过拟合。因此,如何提高神经网络的泛化能力反而成为影响模型能力的最关键因素。
正则化 是一类通过限制模型复杂度,从而避免过拟合,提高泛化能力的方法,比如引入约束、增加先验、提前停止等。

2.1 L1和L2正则化

L1和L2范数正则优化问题可写为:

L1正则得到模型的参数具有稀疏性可能导致信息丢失,而L2优化不具备特征选择的能力,因此可以折中一下,同时加入L1和L2范数正则优化:

2.2 权重衰减(Weight Decay)

在损失函数中加入权重衰减项,实质上是 L2 正则化的一种形式。在标准的随机梯度下降中,权重衰减正则化和L2正则化的效果相同。因此,权重衰减在一些深度学习框架中通过,正则化来实现。但是,在较为复杂的优化方法(比如Adam)中,权重衰减正则化和L2正则化并不等价。

权重衰减在每次参数更新时,引入一个衰减系数:

**优点:**减少权重的绝对值,降低模型复杂度;提高模型泛化能力。

缺点:需要调整衰减系数。

2.3 提前停止(Early Stopping)

由于深度神经网络的拟合能力非常强,因此比较容易在训练集上过拟合。在使用梯度下降法进行优化时,我们可以使用一个和训练集独立的样本集合,称为验证集(Validation Set),并用验证集上的错误来代替期望错误。当验证集上的错误率不再下降,就停止迭代。然而在实际操作中,验证集上的错误率变化曲线并不一定平衡曲线,很可能是先升高再降低。因此,提前停止的具体停止标准需要根据实际任务进行优化。

优点:自动控制模型复杂度,防止过拟合;节省计算资源。

缺点:需要确定合适的验证频率和停止条件;对于噪声较大的数据集可能不够稳定。

2.4 丢弃法(Dropout)

当训练一个深度神经网络时,我们可以随机丢弃一部分神经元(同时丢弃其对应的连接边)来避免过拟合,这种方法称为丢弃法,每次选择丢弃的神经元是随机的。

丢弃法一般是针对神经元进行随机丢弃,但是也可以扩展到对神经元之间的连接进行随机丢弃或每一层进行随机丢弃。

当在循环神经网络上应用丢弃法时,不能直接对每个时刻的隐状态进行随机丢弃,这样会损害循环网络在时间维度上的记忆能力.一种简单的方法是对非时间维度的连接(即非循环连接)进行随机丢失。

优点:有效地缓解过拟合问题;可以看作是集成学习的一种形式,提高了模型的泛化能力。

缺点:增加了训练时间;需要调整丢弃率等超参数。

2.5 数据增强(Data Augmentation)

深度神经网络一般都需要大量的训练数据才能获得比较理想的效果。在数据量有限的情沉下,可以通过数据增强来增加数据量,提高模型鲁棒性,避免过拟合。

目前,数据增强还主要应用在图像数据上,在文本等其他类型的数据上还没有太好的方法。

图像数据的增强主要是通过算法对图像进行转变,引入噪声等方法来增加数据的多样性。增强的方法主要有几种:

  • 旋转(Rotation):将图像按顺时针或逆时针方向随机旋转一定角度
  • 翻转(Flip):将图像沿水平或垂直方向随机翻转一定角度
  • 缩放(Zoom In/Out):将图像放大或缩小一定比例
  • 平移(Shift):将图像沿水平或垂直方法平移一定步长
  • 加噪声(Noise):加入随机噪声

每种正则化方法都有其适用场景和局限性。选择哪种正则化技术取决于具体问题的需求、数据特性以及可用的计算资源。在实际应用中,通常会结合多种正则化方法来达到更好的效果。

相关推荐
不去幼儿园36 分钟前
【MARL】深入理解多智能体近端策略优化(MAPPO)算法与调参
人工智能·python·算法·机器学习·强化学习
Mr_Xuhhh38 分钟前
重生之我在学环境变量
linux·运维·服务器·前端·chrome·算法
想成为高手49942 分钟前
生成式AI在教育技术中的应用:变革与创新
人工智能·aigc
YSGZJJ2 小时前
股指期货的套保策略如何精准选择和规避风险?
人工智能·区块链
无脑敲代码,bug漫天飞2 小时前
COR 损失函数
人工智能·机器学习
盼海2 小时前
排序算法(五)--归并排序
数据结构·算法·排序算法
HPC_fac130520678163 小时前
以科学计算为切入点:剖析英伟达服务器过热难题
服务器·人工智能·深度学习·机器学习·计算机视觉·数据挖掘·gpu算力
网易独家音乐人Mike Zhou5 小时前
【卡尔曼滤波】数据预测Prediction观测器的理论推导及应用 C语言、Python实现(Kalman Filter)
c语言·python·单片机·物联网·算法·嵌入式·iot
小陈phd5 小时前
OpenCV从入门到精通实战(九)——基于dlib的疲劳监测 ear计算
人工智能·opencv·计算机视觉
Guofu_Liao6 小时前
大语言模型---LoRA简介;LoRA的优势;LoRA训练步骤;总结
人工智能·语言模型·自然语言处理·矩阵·llama