神经网络基础之正则化

打印 上一主题 下一主题

主题 977|帖子 977|积分 2931

引言:正则化 (Regularization) 是机器学习中一种用于防止模子过拟合技术。核心头脑是通过在模子损失函数中添加一个惩罚项 (Penalty Term),对模子的复杂度举行约束,从而提升模子在新数据上的泛化能力。
  一、正则化目的



  • 防止过拟合:当模子过于复杂(比方神经网络层数过多、参数过多)时,容易在训练数据上“记忆”噪声或细节,导致在测试数据上体现差。
  • 简化模子:正则化通过限制模子参数的大小或数量,迫使模子学习更通用的特征,而非过度依靠训练数据的细节。
二、正则化原理

正则化的本质是在损失函数(Loss Function)中添加一个 惩罚项,其形式为:
                                         总损失                            =                            原始损失                            +                            λ                            ⋅                            惩罚项                                  \text{总损失} = \text{原始损失} + \lambda \cdot \text{惩罚项}                     总损失=原始损失+λ⋅惩罚项


  • 原始损失:模子在训练数据上的偏差(如均方偏差、交叉熵等)。
  • 惩罚项:对模子参数的约束,比方参数的大小或稀疏性。
  • λ:正则化系数,控制惩罚项的强度。λ越大,惩罚越强,模子越简单。
三、 常见正则化方法

1. L1 正则化(Lasso 正则化):



  • 界说:通过在损失函数中添加权重的 L1 范数惩罚项,使部分权重趋于零到达特征选择的结果。
  • 算法原理

在机器学习中,模子通过最小化损失函数举行训练。L1 正则化在原始损失函数中添加一个基于参数 L1 范数的惩罚项,优化目的变为:
                                         J                            (                            θ                            )                            =                            L                            (                            θ                            )                            +                            λ                            ⋅                            R                            (                            θ                            )                                  J(\theta) = L(\theta) + \lambda \cdot R(\theta)                     J(θ)=L(θ)+λ⋅R(θ)
其中:


  •                                         J                            (                            θ                            )                                  J(\theta)                     J(θ):总损失函数(带正则化的目的函数)。
  •                                         L                            (                            θ                            )                                  L(\theta)                     L(θ):原始损失函数(比方均方偏差、交叉熵等),衡量模子预测与真实值的差距。
  •                                         R                            (                            θ                            )                            =                            ∥                            θ                                       ∥                               1                                      =                                       ∑                               i                                      ∣                                       θ                               i                                      ∣                                  R(\theta) = \|\theta\|_1 = \sum_{i} |\theta_i|                     R(θ)=∥θ∥1​=∑i​∣θi​∣ 惩罚项:L1 正则化项,即参数绝对值之和。
  •                                         λ                                  \lambda                     λ:正则化强度的超参数(惩罚系数),控制正则化的影响水平,                                        λ                            ≥                            0                                  \lambda \geq 0                     λ≥0。
  •                                         θ                                  \theta                     θ:模子的参数(权重)。
通过最小化                                    J                         (                         θ                         )                              J(\theta)                  J(θ),模子不但要拟合数据,还要尽量减少参数的绝对值总和,这会导致部分参数被压缩到 0。



  • 梯度更新原理

由于 L1 范数的绝对值函数在 0 点不可导,梯度更新需要利用次梯度(subgradient)。以一个权重                                   w                              w                  w 为例:


  • 原始梯度更新(无正则化):                                        w                            ←                            w                            −                            η                                                   ∂                                  L                                                      ∂                                  w                                                       w \leftarrow w - \eta \frac{\partial L}{\partial w}                     w←w−η∂w∂L​。
  • 带 L1 正则化的次梯度更新:
                                                  w                               ←                               w                               −                               η                                           (                                                             ∂                                        L                                                                ∂                                        w                                                           +                                  λ                                  ⋅                                  sign                                  (                                  w                                  )                                  )                                                 w \leftarrow w - \eta \left( \frac{\partial L}{\partial w} + \lambda \cdot \text{sign}(w) \right)                        w←w−η(∂w∂L​+λ⋅sign(w))

    •                                                   η                                          \eta                           η:学习率。
    •                                                                              ∂                                        L                                                                ∂                                        w                                                                   \frac{\partial L}{\partial w}                           ∂w∂L​:原始损失对权重的梯度。
    •                                                   sign                                  (                                  w                                  )                                          \text{sign}(w)                           sign(w):符号函数,                                                  w                                  >                                  0                                          w > 0                           w>0时为 1,                                                  w                                  <                                  0                                          w < 0                           w<0时为 -1,                                                  w                                  =                                  0                                          w = 0                           w=0时次梯度取值范围为                                                  [                                  −                                  1                                  ,                                  1                                  ]                                          [-1, 1]                           [−1,1]。

当                                   w                              w                  w 的更新步长不足以抵消                                    λ                         ⋅                         sign                         (                         w                         )                              \lambda \cdot \text{sign}(w)                  λ⋅sign(w) 时,                                   w                              w                  w会被压缩到 0,从而产生稀疏性。



  • 作用

    • 稀疏解:L1 正则化倾向于将不重要的参数直接置为 0,形成稀疏的权重向量。这使得模子只保留对预测最重要的特征。
    • 特征选择:由于部分权重变为 0,L1 正则化可以自动识别和剔除不相关或冗余的特征,特别实用于高维数据。
    • 防止过拟合:通过减少有效参数数量,L1 正则化低落了模子复杂度,从而提升了泛化能力。

  • 优缺点

    • 长处:

      • 特征选择能力: L1 正则化能够生成稀疏模子,自动筛选重要特征,实用于特征维度高或需要解释性的场景。
      • 低落模子复杂度:通过剔除不必要参数,简化模子结构,减少计算开销。
      • 对噪声鲁棒:忽略不相关特征后,模子对数据中的噪声更不敏感。

    • 缺点:

      • 不稳固性:当特征之间高度相关时,L1 正则化可能随机选择其中一个特征置为非 0,而忽略其他相关特征,导致结果不稳固。
      • 优化难度:由于 L1 范数不可导,优化过程需要利用次梯度或近端梯度下降等方法,计算复杂度可能高于 L2 正则化。
      • 依靠超参数                                                             λ                                                  \lambda                                 λ:正则化强度                                                            λ                                                  \lambda                                 λ 的选择至关重要,过大可能导致重要特征也被置为 0,过小则正则化结果不足。


  1. import numpy as np
  2. from sklearn.linear_model import LinearRegression, Lasso
  3. from sklearn.datasets import make_regression
  4. from sklearn.model_selection import train_test_split
  5. from sklearn.metrics import mean_squared_error
  6. # 1、生成模拟数据
  7. X, y = make_regression(n_samples=100, n_features=10, noise=0.1, random_state=42)
  8. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
  9. # 2、普通线性回归
  10. lr = LinearRegression()
  11. lr.fit(X_train, y_train)
  12. y_predict_lr = lr.predict(X_test)
  13. mse_lr = mean_squared_error(y_test, y_predict_lr)
  14. print(f"普通线性回归 MSE: {mse_lr:.4f}")
  15. # 3、L1 正则化(Lasso)
  16. lasso = Lasso(alpha=0.1)  # alpha 是正则化强度,对应 λ
  17. lasso.fit(X_train, y_train)
  18. y_predict_lasso = lasso.predict(X_test)
  19. mse_lasso = mean_squared_error(y_test, y_predict_lasso)
  20. print(f"L1 正则化(Lasso) MSE: {mse_lasso:.4f}")
  21. # 4、查看权重
  22. print("普通线性回归权重:", lr.coef_[:10])
  23. print("L1 正则化权重:", lasso.coef_[:10])
复制代码
  1. 普通线性回归 MSE: 0.0103
  2. L1 正则化(Lasso) MSE: 0.1824
  3. 普通线性回归权重: [16.7712358  54.13782324  5.18097686 63.64362199 93.61309994 70.63686589 87.0713662  10.43882574  3.15690876 70.90887261]
  4. L1   正则化权重: [16.68551572 54.04466658  5.03023843 63.54923618 93.45872786 70.54211442 86.95689868 10.27114941  3.06974112 70.78354482]
复制代码
2. L2 正则化(Ridge 正则化):



  • 界说:在损失函数中添加权重的 L2 范数平方惩罚项,防止权重过大,促进模子的平滑性。
  • 算法原理

在机器学习中,模子通常通过最小化一个损失函数(比方均方偏差)来训练。L2 正则化通过在原始损失函数中添加一个额外的项,改变优化的目的。数学上,带 L2 正则化的损失函数可以表示为:
                                         J                            (                            θ                            )                            =                            L                            (                            θ                            )                            +                            λ                            ⋅                            R                            (                            θ                            )                                  J(\theta) = L(\theta) + \lambda \cdot R(\theta)                     J(θ)=L(θ)+λ⋅R(θ)
其中:


  •                                         J                            (                            θ                            )                                  J(\theta)                     J(θ):总损失函数(带正则化的目的函数)。
  •                                         L                            (                            θ                            )                                  L(\theta)                     L(θ):原始损失函数(比方均方偏差、交叉熵等),衡量模子预测与真实值之间的差距。
  •                                         R                            (                            θ                            )                            =                                       1                               2                                      ∥                            θ                                       ∥                               2                               2                                      =                                       1                               2                                                 ∑                               i                                                 θ                               i                               2                                            R(\theta) = \frac{1}{2} \|\theta\|_2^2 = \frac{1}{2} \sum_{i} \theta_i^2                     R(θ)=21​∥θ∥22​=21​∑i​θi2​:L2 正则化项,即参数的 L2 范数平方,即参数权重平方和。
  •                                         λ                                  \lambda                     λ:正则化强度的超参数(也叫惩罚系数),控制正则化的影响水平,                                        λ                            ≥                            0                                  \lambda \geq 0                     λ≥0。
  •                                         θ                                  \theta                     θ:模子的参数(权重)。
优化目的变为同时最小化原始损失                                    L                         (                         θ                         )                              L(\theta)                  L(θ) 和正则化项                                    λ                         ⋅                         R                         (                         θ                         )                              \lambda \cdot R(\theta)                  λ⋅R(θ),从而均衡模子的拟合能力和复杂性。



  • 梯度更新

在梯度下降优化中,L2 正则化会影响参数的更新规则。以一个权重 ( w ) 为例:


  • 原始梯度更新(无正则化):                                        w                            ←                            w                            −                            η                                                   ∂                                  L                                                      ∂                                  w                                                       w \leftarrow w - \eta \frac{\partial L}{\partial w}                     w←w−η∂w∂L​。
  • 带 L2 正则化的梯度更新:
                                                  w                               ←                               w                               −                               η                                           (                                                             ∂                                        L                                                                ∂                                        w                                                           +                                  λ                                  w                                  )                                                 w \leftarrow w - \eta \left( \frac{\partial L}{\partial w} + \lambda w \right)                        w←w−η(∂w∂L​+λw)

    •                                                   η                                          \eta                           η:学习率。
    •                                                                              ∂                                        L                                                                ∂                                        w                                                                   \frac{\partial L}{\partial w}                           ∂w∂L​:原始损失对权重的梯度。
    •                                                   λ                                  w                                          \lambda w                           λw:                                                  L                                  2                                          L2                           L2 正则化的梯度贡献。

可以看到,L2 正则化在每次更新时额外引入了一个衰减项                                    λ                         w                              \lambda w                  λw,使得权重倾向于变小。因此,L2 正则化也被称为 权重衰减(weight decay)。



  • 作用

    • 克制过拟合:只需在损失函数中添加一项即可,计算和优化都很直接。使参数值团体变小(但不会变为 0),克制参数过大导致过拟合。
    • 提升模子的稳固性:通过限制权庞大小,L2 正则化使模子更能反抗数据中的非常值或噪声。 提升模子的稳固性(减少参数波动)。
    • 广泛实用:可用于线性回归、逻辑回归、神经网络等多种模子。

  • 范围性

    • 无法产生稀疏解:与 L1 正则化(Lasso)差别,L2 正则化不会将权重变为 0,因此不具备特征选择的能力。
    • 依靠超参数 :正则化强度
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

立聪堂德州十三局店

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表