当前位置: 首页 > article >正文

人工智能与机器学习原理精解【25】

文章目录

  • 正则化
    • 概述
      • 一、正则化的种类
      • 二、正则化的定义
      • 三、正则化的计算
      • 四、正则化的性质
      • 五、正则化的例子
    • 公式与计算
      • 一、正则化的种类
        • Dropout正则化
        • 一、基本思想
        • 二、实现方法
        • 三、作用机制
        • 四、使用注意事项
        • 五、总结
        • Dropout正则化的例子和公式。
            • 一、Dropout正则化的例子
            • 二、Dropout正则化的公式
            • 二、正则化的计算
      • 总结
    • 无约束最优化
      • 1. 无约束最优化
        • 定义
        • 计算
        • 性质
        • 例子
      • 2. 最小化代价函数
        • 定义
        • 计算
        • 性质
        • 例子
      • 3. 梯度算子
        • 定义
        • 计算
        • 性质
        • 例子
      • 4. 局部迭代下降
        • 定义
        • 计算
        • 性质
        • 例子
    • 岭回归
      • 岭回归的定义
      • 岭回归的公式
      • 岭回归的性质
      • 岭回归的计算
      • 岭回归的例子
      • 岭回归的例题
  • 参考文献

正则化

是机器学习中一种常见的技术,用于避免过拟合并提高模型的泛化能力

概述

一、正则化的种类

正则化有多种类型,常见的包括L1正则化(Lasso)、L2正则化(岭回归)、弹性网络正则化、Dropout正则化等。

  • L1正则化(Lasso):通过向模型参数的绝对值总和添加一个惩罚项,迫使一些参数变为零,从而实现特征选择。
  • L2正则化(岭回归):通过向模型参数的平方和添加一个惩罚项,收缩所有参数,但不会使它们变为零。
  • 弹性网络正则化:L1和L2正则化的结合,既可以进行特征选择,又可以实现平滑效果。
  • Dropout正则化:主要用于神经网络,通过在训练过程中随机丢弃一部分神经元,减少神经元之间的共适应性,提高模型的泛化能力。

二、正则化的定义

正则化是在损失函数中添加一个额外的惩罚项,以限制模型参数的大小,从而避免过拟合。这个惩罚项鼓励模型选择更简单的假设,使得模型在面对新数据时能有更好的表现。

三、正则化的计算

以L1和L2正则化为例,正则化项的计算方式如下:

  • L1正则化:惩罚项为模型参数绝对值之和,即 Ω ( w ) = ∣ ∣ w ∣ ∣ 1 = ∑ i ∣ w i ∣ \Omega(w) = ||w||_1 = \sum_i |w_i| Ω(w)=∣∣w1=iwi
  • L2正则化:惩罚项为模型参数平方和,即 Ω ( w ) = ∣ ∣ w ∣ ∣ 2 2 = ∑ i w i 2 \Omega(w) = ||w||_2^2 = \sum_i w_i^2 Ω(w)=∣∣w22=iwi2

在加入正则化项后的损失函数为:

J ˉ ( w , b ) = J ( w , b ) + λ 2 m Ω ( w ) \bar{J}(w,b) = J(w,b) + \frac{\lambda}{2m} \Omega(w) Jˉ(w,b)=J(w,b)+2mλΩ(w)

其中, J ( w , b ) J(w,b) J(w,b)是原始损失函数, Ω ( w ) \Omega(w) Ω(w)是正则化项, λ \lambda λ是正则化强度超参数, m m m是样本个数。

四、正则化的性质

  • 减少过拟合:通过限制模型参数的大小,正则化可以防止模型在训练数据上过度拟合,从而提高模型的泛化能力。
  • 特征选择:L1正则化具有特征选择的能力,可以识别出对模型最重要的特征。
  • 平滑效果:L2正则化倾向于使所有参数都较小,但不会使某些参数变为零,从而实现参数的平滑效果。

五、正则化的例子

假设我们有一个简单的线性回归模型 y = w x + b y = wx + b y=wx+b,为了防止过拟合,我们可以对模型参数 w w w进行正则化。

  • L1正则化:在损失函数中添加 w w w的绝对值之和作为惩罚项,即最小化 ∣ ∣ y − w x ∣ ∣ 2 2 + λ ∣ ∣ w ∣ ∣ 1 ||y - wx||_2^2 + \lambda ||w||_1 ∣∣ywx22+λ∣∣w1
  • L2正则化:在损失函数中添加 w w w的平方和作为惩罚项,即最小化 ∣ ∣ y − w x ∣ ∣ 2 2 + λ ∣ ∣ w ∣ ∣ 2 2 ||y - wx||_2^2 + \lambda ||w||_2^2 ∣∣ywx22+λ∣∣w22

在训练过程中,通过优化加入正则化项后的损失函数,我们可以得到既不过于复杂又能在新数据上表现良好的模型参数。

综上所述,正则化是机器学习中一种重要的技术,通过限制模型参数的大小来防止过拟合,提高模型的泛化能力。不同的正则化方法有不同的特点和适用场景,在实际应用中需要根据具体问题选择合适的正则化方法。

公式与计算

正则化(Regularization)是机器学习中一种常见的技术,用于避免过拟合(Overfitting)并提高模型的泛化能力。正则化通过对模型参数施加约束或惩罚,使模型更加简单,从而防止模型在训练数据上过度拟合。下面将详细介绍正则化的种类、定义及计算方法。

一、正则化的种类

正则化方法众多,常见的正则化方法包括L1正则化(Lasso)、L2正则化(岭回归)、弹性网络正则化、Dropout正则化等。以下是一些主要正则化方法的介绍:

  1. L1正则化(Lasso)

    • 定义:L1正则化通过向损失函数中添加模型参数的绝对值之和作为正则项,即正则化项是参数向量的L1范数。
    • 公式:设原始损失函数为 J 0 J_0 J0,L1正则化后的损失函数为 J = J 0 + λ ∑ i ∣ w i ∣ J = J_0 + \lambda \sum_{i}|w_i| J=J0+λiwi,其中 λ \lambda λ为正则化系数,用于控制正则化的强度。
    • 特点:L1正则化倾向于使一些参数变为零,从而达到特征选择的效果,有助于模型的稀疏表示。
  2. L2正则化(岭回归)

    • 定义:L2正则化通过向损失函数中添加模型参数的平方和作为正则项,即正则化项是参数向量的L2范数的平方。
    • 公式:设原始损失函数为 J 0 J_0 J0,L2正则化后的损失函数为 J = J 0 + λ ∑ i w i 2 J = J_0 + \lambda \sum_{i}w_i^2 J=J0+λiwi2,其中 λ \lambda λ为正则化系数。
    • 特点:L2正则化使所有参数都较小,但不会使某些参数为零,对异常值较为鲁棒,有助于减少模型的过度依赖单个特征的情况。
  3. 弹性网络正则化(Elastic Net)

    • 定义:弹性网络正则化是L1正则化和L2正则化的结合,通过同时引入L1和L2正则项,既可以进行特征选择,又可以实现平滑效果。
    • 公式:设原始损失函数为 J 0 J_0 J0,弹性网络正则化后的损失函数为 J = J 0 + λ 1 ∑ i ∣ w i ∣ + λ 2 ∑ i w i 2 J = J_0 + \lambda_1 \sum_{i}|w_i| + \lambda_2 \sum_{i}w_i^2 J=J0+λ1iwi+λ2iwi2,其中 λ 1 \lambda_1 λ1 λ 2 \lambda_2 λ2分别为L1和L2正则化系数。
  4. Dropout正则化

    • 定义:Dropout正则化主要用于神经网络,通过在训练过程中随机丢弃(设置为零)神经网络中的一部分神经元,减少神经元之间的共适应性,从而防止过拟合。
    • 特点:Dropout正则化是一种结构正则化方法,通过改变网络结构来减少过拟合。
Dropout正则化

是一种在深度学习领域广泛使用的正则化技术,旨在减少神经网络的过拟合现象,提高模型的泛化能力。以下是对Dropout正则化的详细解释:

一、基本思想

Dropout正则化的核心思想是在训练过程中随机丢弃(或称为“失活”)神经网络中的一部分神经元,使得网络在每次迭代时都面对一个不同的子网络结构。这种随机丢弃的方式迫使网络学习更加鲁棒的特征表示,减少对特定神经元输出的依赖,从而有效防止过拟合。

二、实现方法

在训练过程中,Dropout层会随机选择一部分神经元,并将其输出设置为0(或非常接近于0的值),这些被丢弃的神经元在当前迭代中不会参与前向传播和反向传播。具体来说,每个神经元被丢弃的概率是事先设定的,这个概率通常称为“dropout rate”(丢弃率)。在常用的深度学习框架中,Dropout层通常作为一个独立的层插入到网络模型中。

三、作用机制
  1. 减少神经元间的共适应:由于Dropout在每次迭代中都会随机丢弃一部分神经元,使得网络中的神经元不能过度依赖于其他神经元的存在,这有助于减少神经元间的共适应现象,提高网络的鲁棒性。

  2. 集成学习的思想:Dropout可以被视为一种隐式的集成学习方法。在训练过程中,由于Dropout的随机性,网络实际上在同时训练多个不同的子网络。这些子网络在测试时通过共享参数的方式组合在一起,形成最终的预测结果。这种集成学习的效果有助于提升模型的泛化能力。

  3. 权重收缩效果:Dropout在训练过程中通过随机丢弃神经元的方式,实际上对网络的权重产生了一种收缩效果,类似于L2正则化。这种权重收缩效果有助于减轻神经网络的过拟合现象。

四、使用注意事项
  1. dropout rate的选择:dropout rate是一个超参数,需要根据具体任务和网络结构进行调整。一般来说,较大的dropout rate有助于减少过拟合,但也可能导致模型欠拟合;较小的dropout rate则可能不足以有效防止过拟合。常用的dropout rate范围在0.2到0.5之间。

  2. 仅在训练过程中使用Dropout:在测试或预测阶段,应该关闭Dropout功能,使用完整的网络结构进行前向传播。为了保持训练和测试阶段的一致性,通常需要将所有神经元的输出乘以(1 - dropout rate),以补偿训练过程中由于Dropout导致的输出缩放。但在一些深度学习框架中,这个缩放步骤是自动完成的。

  3. 与其他正则化方法的结合使用:Dropout可以与其他正则化方法(如L1正则化、L2正则化、早停法等)结合使用,以进一步提高模型的泛化能力。然而,需要注意的是,正则化方法的叠加使用可能会增加模型的训练难度和计算成本。

五、总结

Dropout正则化是一种简单而有效的正则化技术,通过随机丢弃神经网络中的一部分神经元来减少过拟合现象,提高模型的泛化能力。在实践中,Dropout已被广泛应用于各种深度学习模型中,并取得了显著的效果。然而,需要注意的是,dropout rate的选择、Dropout的使用时机以及与其他正则化方法的结合使用都是影响Dropout效果的重要因素。

Dropout正则化的例子和公式。
一、Dropout正则化的例子

假设有一个包含多个隐藏层的神经网络,为了防止过拟合,可以在某些隐藏层的输出之后添加Dropout层。在训练过程中,Dropout层会按照设定的概率随机丢弃一部分神经元的输出,使得这些神经元在本次迭代中不参与前向传播和反向传播。以下是一个简化的例子:

  • 网络结构:假设有一个包含输入层、两个隐藏层和输出层的神经网络。
  • Dropout应用:在第一个隐藏层的输出之后添加一个Dropout层,设定丢弃概率为0.5。
  • 训练过程
    • 在每次迭代中,Dropout层会随机丢弃第一个隐藏层中一半的神经元。
    • 被丢弃的神经元在本次迭代中不参与前向传播和反向传播。
    • 剩余的神经元继续正常传播,更新权重和偏置。
  • 测试过程
    • 在测试阶段,不应用Dropout,使用完整的网络结构进行前向传播。
    • 为了保持输出期望的一致性,通常需要将隐藏层的输出乘以(1 - 丢弃概率),但在许多深度学习框架中,这一步是自动完成的。
二、Dropout正则化的公式

在训练阶段,对于每个神经元,以概率p将其输出置为0,以概率1-p保留其输出。这里的p被称为保留概率或者丢弃概率。在前向传播过程中,对于每个神经元的输出y,应用Dropout操作后的输出y’可以通过以下公式计算得到:

y ′ = m ⊙ y y' = m \odot y y=my

其中, ⊙ \odot 表示逐元素乘法,m是一个与y相同维度的二进制掩码向量,元素取值为0或1,以概率p为1,以概率1-p为0。在实际实现中,通常不会显式地生成掩码向量m,而是通过随机生成一个与y相同维度的向量,并将其与(1-p)相乘来实现类似的效果。然后,将这个结果与原输出y进行逐元素乘法,得到Dropout后的输出y’。

在反向传播过程中,为了保持梯度的正确性,需要将梯度乘以掩码向量m(或者其等价形式),以实现对应位置的梯度乘以0的效果。然而,在深度学习框架中,这一步通常是自动完成的,用户无需手动干预。

在测试阶段,为了保持期望输出值的一致性,通常需要将每个神经元的输出乘以保留概率p。但是,由于在实际实现中,我们通常在训练时就对保留的神经元输出进行了缩放(即除以(1-p)),以补偿被丢弃神经元的影响,因此在测试时通常不需要再显式地乘以p。

需要注意的是,以上公式和描述是基于Dropout正则化的基本原理,具体实现时可能会有所不同,具体取决于所使用的深度学习框架和库。

二、正则化的计算

正则化的计算通常涉及到在优化过程中,根据正则化后的损失函数对模型参数进行更新。以梯度下降法为例,对于L1和L2正则化,其参数更新公式会有所不同。

  1. L1正则化的梯度下降法

    • 由于L1正则项在零点不可导,通常使用次梯度(subgradient)进行参数更新。
  2. L2正则化的梯度下降法

    • 假设原始损失函数关于参数 w w w的梯度为 ∇ J 0 ( w ) \nabla J_0(w) J0(w),则L2正则化后的梯度下降法参数更新公式为:
      w ( k + 1 ) = w ( k ) − α ( ∇ J 0 ( w ( k ) ) + 2 λ w ( k ) ) = ( 1 − 2 λ α ) w ( k ) − α ∇ J 0 ( w ( k ) ) w^{(k+1)} = w^{(k)} - \alpha \left( \nabla J_0(w^{(k)}) + 2\lambda w^{(k)} \right) = (1 - 2\lambda\alpha)w^{(k)} - \alpha \nabla J_0(w^{(k)}) w(k+1)=w(k)α(J0(w(k))+2λw(k))=(12λα)w(k)αJ0(w(k))
      其中, α \alpha α为学习率。

总结

正则化是机器学习中一种重要的技术,通过引入额外的约束条件来防止模型过拟合,提高模型的泛化能力。常见的正则化方法包括L1正则化、L2正则化、弹性网络正则化和Dropout正则化等。在计算过程中,根据正则化后的损失函数对模型参数进行更新,以达到优化模型的目的。

针对您提出的无约束最优化、最小化代价函数、梯度算子、局部迭代下降的定义、计算、性质和例子,以下是对这些概念的详细阐述:

无约束最优化

1. 无约束最优化

定义

无约束最优化是指在没有等式或不等式约束条件的情况下,求解一个目标函数的最优值(最大值或最小值)的问题。

计算

无约束最优化的计算方法多种多样,包括但不限于梯度下降法、牛顿法、共轭梯度法等。这些方法的核心思想是通过迭代更新解向量,逐步逼近最优解。例如,在梯度下降法中,每次迭代都沿着目标函数在当前点的负梯度方向前进一定的步长,以期望减少目标函数值。

性质
  • 无约束最优化问题的解可能不唯一。
  • 在某些条件下(如目标函数凸性),无约束最优化问题的局部最优解即为全局最优解。
例子

考虑目标函数 f ( x ) = x 2 f(x) = x^2 f(x)=x2的无约束最小化问题。显然,该函数在 x = 0 x = 0 x=0 处取得最小值 0。

2. 最小化代价函数

定义

在机器学习和优化问题中,代价函数(或损失函数、成本函数)用于衡量模型预测值与实际值之间的差异。最小化代价函数的目标是通过调整模型参数,使得这种差异尽可能小。

计算

最小化代价函数通常通过梯度下降法、牛顿法、随机梯度下降法等优化算法来实现。这些算法通过迭代更新模型参数,逐步降低代价函数值。

性质
  • 代价函数的选择直接影响模型的训练效果和泛化能力。
  • 在过拟合的情况下,代价函数在训练集上可能取得很小的值,但在测试集上可能表现不佳。
例子

在线性回归问题中,常用的代价函数是均方误差(MSE),其表达式为 1 n ∑ i = 1 n ( y i − y ^ i ) 2 \frac{1}{n}\sum_{i=1}^{n}(y_i - \hat{y}_i)^2 n1i=1n(yiy^i)2,其中 y i y_i yi是实际值, y ^ i \hat{y}_i y^i是预测值。通过梯度下降法等优化算法最小化MSE,可以得到线性回归模型的参数。

3. 梯度算子

定义

梯度算子是一个向量算子,用于描述函数在某一点上沿各个方向的变化率。在标量场中,梯度算子指向函数值增加最快的方向,其大小等于该方向上函数值的变化率。

计算

梯度算子可以通过对函数求偏导数并组合成向量的方式来计算。对于多元函数 f ( x 1 , x 2 , . . . , x n ) f(x_1, x_2, ..., x_n) f(x1,x2,...,xn),其梯度算子为 ∇ f = ( ∂ f ∂ x 1 , ∂ f ∂ x 2 , . . . , ∂ f ∂ x n ) \nabla f = \left( \frac{\partial f}{\partial x_1}, \frac{\partial f}{\partial x_2}, ..., \frac{\partial f}{\partial x_n} \right) f=(x1f,x2f,...,xnf)

性质
  • 梯度算子总是指向函数值增加最快的方向。
  • 在优化问题中,负梯度方向是函数值减少最快的方向。
例子

对于函数 f ( x , y ) = x 2 + y 2 f(x, y) = x^2 + y^2 f(x,y)=x2+y2,其梯度算子为 ∇ f = ( 2 x , 2 y ) \nabla f = (2x, 2y) f=(2x,2y)。在点 ( 1 , 1 ) (1, 1) (1,1)处,梯度算子为 ( 2 , 2 ) (2, 2) (2,2),指向函数值增加最快的方向。

4. 局部迭代下降

定义

局部迭代下降算法是一类通过迭代更新解向量来逐步逼近目标函数局部最优解的算法。这类算法在每次迭代中都会选择一个下降方向(通常是负梯度方向或近似负梯度方向),并沿该方向前进一定的步长。

计算

局部迭代下降算法的计算过程通常包括以下几个步骤:

  1. 选择一个初始点作为迭代起点。
  2. 计算当前点处的梯度或近似梯度。
  3. 选择一个下降方向(通常是负梯度方向或基于某种策略的改进方向)。
  4. 确定一个步长,使得沿该方向前进后目标函数值有所降低。
  5. 更新解向量,并检查是否满足终止条件(如目标函数值变化小于阈值、迭代次数达到上限等)。
性质
  • 局部迭代下降算法可能陷入局部最优解而非全局最优解。
  • 算法的收敛速度和效果受步长选择、下降方向选择等因素的影响。
例子

梯度下降法就是一种典型的局部迭代下降算法。在每次迭代中,它都沿着当前点处的负梯度方向前进一定的步长,以期望减少目标函数值。通过不断迭代更新解向量,最终逼近目标函数的局部最优解(或全局最优解,在目标函数凸性的条件下)。

岭回归

岭回归的定义

岭回归(英文名: ridge regression, Tikhonov regularization)是一种专用于共线性数据分析的有偏估计回归方法,实质上是改良的最小二乘估计法。它通过引入正则化项(L2正则化)来防止过拟合,并处理多重共线性问题,以损失部分信息、降低精度为代价获得回归系数更为符合实际、更可靠的回归方法。岭回归对病态数据的拟合要强于最小二乘法。

岭回归的公式

岭回归的回归系数公式为:

β ( k ) = ( X ′ X + k I ) − 1 X ′ Y \beta(k) = (X'X + kI)^{-1}X'Y β(k)=(XX+kI)1XY

其中, β ( k ) \beta(k) β(k) 是回归系数的岭估计, X X X 是特征值矩阵, Y Y Y 是目标值矩阵, k k k 是岭参数(也称为正则化强度或lambda), I I I 是单位矩阵。当 k = 0 k=0 k=0 时,岭回归退化为普通的最小二乘回归。

岭回归的性质

  1. 有偏估计:岭回归通过引入正则化项,放弃了最小二乘法的无偏性,以换取更高的数值稳定性和可靠性。
  2. 处理多重共线性:岭回归特别适用于处理多重共线性问题,通过引入岭参数,可以有效减少共线性变量对回归系数的影响。
  3. 提高泛化能力:岭回归通过正则化项限制模型复杂度,防止过拟合,从而提高模型的泛化能力。

岭回归的计算

岭回归的计算通常涉及以下步骤:

  1. 数据预处理:包括特征缩放、缺失值处理等。
  2. 选择岭参数 k k k:岭参数的选择对模型性能有重要影响,通常通过交叉验证等方法来确定。
  3. 求解回归系数:使用岭回归公式计算回归系数。
  4. 模型评估:使用测试集评估模型的性能,如通过计算均方误差等指标。

岭回归的例子

假设我们有一组数据,包括自变量(如房间面积、楼层高度、是否有电梯等)和因变量(房价)。如果自变量之间存在较强的共线性,我们可以使用岭回归来分析它们对房价的影响。通过岭回归,我们可以得到每个自变量的回归系数,这些系数反映了自变量对房价的影响程度。

岭回归的例题

例题:使用岭回归预测房价,自变量包括房间面积( X 1 X_1 X1)、楼层高度( X 2 X_2 X2)、是否有电梯(虚拟变量, X 3 X_3 X3),因变量为房价( Y Y Y)。

  1. 数据预处理:对房间面积和楼层高度进行标准化处理,将是否有电梯转换为0或1的虚拟变量。

  2. 选择岭参数 k k k:通过交叉验证等方法选择合适的岭参数 k k k

  3. 求解回归系数:使用岭回归公式计算回归系数 β ( k ) = ( X ′ X + k I ) − 1 X ′ Y \beta(k) = (\mathbf{X}'\mathbf{X} + kI)^{-1}\mathbf{X}'Y β(k)=(XX+kI)1XY,其中 X \mathbf{X} X 是包含所有自变量的设计矩阵。

  4. 模型评估:使用测试集评估模型的性能,如计算均方误差等指标,并与最小二乘回归等模型进行比较。

请注意,以上例题仅为示例性描述,并未给出具体的数据和计算结果。在实际应用中,需要根据具体的数据集和问题进行详细的分析和计算。

参考文献

  1. 文心一言

http://www.kler.cn/news/314316.html

相关文章:

  • 【电路笔记】-运算放大器积分器
  • 数模方法论-整数规划
  • Python类及元类的创建流程
  • C#进阶-基于雪花算法的订单号设计与实现
  • [Python数据可视化] Plotly:交互式数据可视化的强大工具
  • 15.9 grafana-deployment-yaml讲解
  • 掌上高考爬虫逆向分析
  • [Python数据可视化]探讨数据可视化的实际应用:三个案例分析
  • lvs-nat模式实验详解
  • 【全网最全】2024年华为杯研赛A题成品论文获取入口(后续会更新)
  • 面试时被问的问题
  • 后台数据管理系统 - 项目架构设计-Vue3+axios+Element-plus(0917)
  • 新版ssh客户端无法连接旧版服务器sshd的方法
  • PHP基础语法入门指南
  • CMake中的PUBLIC、PRIVATE 和 INTERFACE用法
  • C++ | Leetcode C++题解之第423题从英文中重建数字
  • 【CPU】CPU的物理核、逻辑核、超线程判断及L1、L2、L3缓存、CacheLine和CPU的TBL说明
  • vue-入门速通
  • C++_数据结构详解
  • MATLAB入门基础篇
  • 一个安卓鸿蒙化工具
  • SpringBoot环境配置(Spring Boot Profile)
  • sql执行流程经典案例分析
  • 从Profinet到Ethernet IP网关技术重塑工业网络,数据传输更流畅
  • Go语言并发编程中的超时与取消机制解析
  • 基于菜鸟教程的flask学习记录 —— Flask视图函数
  • Java.猜数字小游戏
  • Go 语言字典探秘:操作指南与约束解析
  • Git之如何删除Untracked文件(六十八)
  • MySQL的索引——提高查找算法的数据结构 B+树