当前位置:   article > 正文

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

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

数值优化

基础

  • N 维空间中,关于向量 W 的二次函数形式如下: N维空间中,关于向量W的二次函数形式如下: N维空间中,关于向量W的二次函数形式如下:
    f ( w ) = 1 2 w T Q w + r T w + d Q 是 N × N 的对称矩阵,即 Q = Q T , r 是 N × 1 的向量, d 是标量。 ∇ f ( w ) = Q w + r , 线性方程组 Q w = − r 的所有解均为驻点 海森矩阵 : ∇ 2 f ( w ) = 1 2 ( Q + Q T ) 如果 Q 对称, ∇ 2 f ( w ) = Q N = 2 = > Q = [ 1 0 0 2 ] ,正定,凸函数 Q = [ 0 0 0 2 ] ,即存在零特征值 , 半正定的,函数仍然是凸的 Q = [ − 2 0 0 1 ] ,不定的,函数非凸 Q 为 2 × 2 矩阵,矩阵值可任意取,所以上面分析只是一个假设, 如果 Q 对称, ∇ 2 f ( w ) = Q ,而 Q 就是对称矩阵。 f(w)=\frac 1 2 w^TQw+r^Tw+d \\Q是N\times N的对称矩阵,即Q=Q^T,r是N \times 1的向量,d是标量。 \\\nabla f(w)=Qw+r,线性方程组Qw=-r的所有解均为驻点 \\海森矩阵: \\\nabla^2 f(w)=\frac 1 2 (Q+Q^T) \\如果Q对称,\nabla^2 f(w)=Q \\N=2=> \\Q= [1002]
    [1002]
    ,正定,凸函数 \\Q= [0002]
    [0002]
    ,即存在零特征值,半正定的,函数仍然是凸的 \\ \\Q= [2001]
    [2001]
    ,不定的,函数非凸 \\Q为2 \times 2矩阵,矩阵值可任意取,所以上面分析只是一个假设, \\如果Q对称,\nabla^2 f(w)=Q,而Q就是对称矩阵 。
    f(w)=21wTQw+rTw+dQN×N的对称矩阵,即Q=QT,rN×1的向量,d是标量。f(w)=Qw+r,线性方程组Qw=r的所有解均为驻点海森矩阵:2f(w)=21(Q+QT)如果Q对称,2f(w)=QN=2=>Q=[1002],正定,凸函数Q=[0002],即存在零特征值,半正定的,函数仍然是凸的Q=[2001],不定的,函数非凸Q2×2矩阵,矩阵值可任意取,所以上面分析只是一个假设,如果Q对称,2f(w)=Q,而Q就是对称矩阵。
  • 线性模型的基本形式:

y = b + w 1 x 1 + w 2 x 2 + ⋯ + w n x n + ϵ y = b + w_1 x_1 + w_2 x_2 + \cdots + w_n x_n + \epsilon y=b+w1x1+w2x2++wnxn+ϵ

  • L1正则化的数学公式可以表示为:

Loss L1 = Loss data + λ ∑ j = 1 n ∣ w j ∣ \text{Loss}_{\text{L1}} = \text{Loss}_{\text{data}} + \lambda \sum_{j=1}^{n} |w_j| LossL1=Lossdata+λj=1nwj
Loss data = 1 2 m ∑ k = 1 m ( y k − Σ w k i x k i ) 2 \text{Loss}_{\text{data}}=\frac{1}{2m} \sum_{k=1}^{m} (y_k - \Sigma w_{ki}x_{ki})^2 Lossdata=2m1k=1m(ykΣwkixki)2

其中,
Loss data \text{Loss}_{\text{data}} Lossdata 是模型在训练数据上的损失(如均方误差等)。
λ \lambda λ是正则化参数,用于控制正则化的强度。
n n n 是模型参数的数量
w j w_j wj是模型的参数(即特征的权重)。

  • L1正则化解决以下优化问题:

min ⁡ w 1 2 m ∑ i = 1 m ( y i − f ( x i ; w ) ) 2 + λ ∑ j = 1 n ∣ w j ∣ = > min ⁡ w 1 2 m ∑ k = 1 m ( y k − Σ w k i x k i ) 2 + λ ∑ j = 1 n ∣ w k j ∣ \min_{w} \frac{1}{2m} \sum_{i=1}^{m} (y_i - f(x_i; w))^2 + \lambda \sum_{j=1}^{n} |w_j| \\=>\min_{w} \frac{1}{2m} \sum_{k=1}^{m} (y_k - \Sigma w_{ki}x_{ki})^2 + \lambda \sum_{j=1}^{n} |w_{kj}| wmin2m1i=1m(yif(xi;w))2+λj=1nwj=>wmin2m1k=1m(ykΣwkixki)2+λj=1nwkj

其中, m m m 是训练样本的数量, y i y_i yi 是样本的标签, x i x_i xi 是样本的特征, f ( x i ; w ) f(x_i; w) f(xi;w) 是模型的预测函数, λ \lambda λ 是正则化参数。
对于权重参数 w j w_j wj,其梯度为:

∂ Loss L1 ∂ w j = 1 m ∑ k = 1 m ( − x k j ( y k − Σ w i x k i ) ) + λ ⋅ sgn ( w k j ) \frac{\partial \text{Loss}_{\text{L1}}}{\partial w_j} = \frac{1}{m} \sum_{k=1}^{m} (-x_{kj}(y_k - \Sigma w_ix_{ki}) )+ \lambda \cdot \text{sgn}(w_{kj}) wjLossL1=m1k=1m(xkj(ykΣwixki))+λsgn(wkj)

  1. 固定除当前参数 w j 外的所有参数 w i ( i ≠ j ) 固定除当前参数w_j外的所有参数w_i(i \ne j) 固定除当前参数wj外的所有参数wi(i=j)计算当前参数的梯度(或次梯度,因为L1正则化项在0点处不可导)。
  2. 把截距b设为 ( w 1 , w 2 , . . . , w n ) (w_1,w_2,...,w_n) (w1,w2,...,wn)的最后一个元素 w n w_n wn,X的最后一个元素 x n x_n xn设置为1 ,其实质就是截距,就不单独对截距求偏导了。
  • L1正则化的正则化系数

下面内容引用自文心一言的自动生成
L1正则化的正则化系数(通常表示为λ)是一个重要的超参数,用于控制正则化项的强度,进而影响模型的复杂度和过拟合程度。以下是关于L1正则化正则化系数的详细解释:

一、定义与作用

  • 定义:在L1正则化中,正则化系数λ是一个非负实数,它乘以模型参数的绝对值之和,作为正则化项添加到损失函数中。
  • 作用:λ的大小决定了正则化项的强度。λ越大,正则化项的影响越大,模型参数的绝对值之和会被压缩得越小,从而导致模型更加简单,过拟合的风险降低。然而,如果λ过大,模型可能会变得过于简单,导致欠拟合。

二、如何确定λ的值

  • 交叉验证:在实际应用中,λ的最优值通常是通过交叉验证来确定的。交叉验证通过将数据集分割成训练集和验证集(或更复杂的分割方式,如k折交叉验证),在不同的λ值下训练模型,并观察模型在验证集上的性能,从而选择出最优的λ值。
  • 启发式方法:虽然没有固定的规则来确定λ的初始值,但可以根据模型的复杂度、数据集的规模等因素来估计一个合适的范围,然后在这个范围内进行搜索。然而,这种方法通常只能提供一个大致的参考,最终的λ值还是需要通过交叉验证来确定。

三、L1正则化的特点

  • 稀疏性:L1正则化倾向于产生稀疏解,即许多参数为零。这是因为L1正则化对参数的绝对值进行惩罚,当某个参数的绝对值减小时,其正则化项也会减小,从而更容易在优化过程中被压缩为零。这种稀疏性有助于特征选择,因为非零参数对应的特征通常被认为是对模型有重要贡献的。
  • 对异常值的鲁棒性:L1正则化对异常值相对鲁棒,因为它不会过分地惩罚大的权重。在存在异常值的情况下,L1正则化可以更好地保持模型的稳定性。

四、总结

L1正则化的正则化系数λ是一个关键的超参数,用于控制正则化项的强度。在实际应用中,λ的最优值通常需要通过交叉验证来确定。L1正则化具有产生稀疏解和对异常值鲁棒的特点,这些特点使得L1正则化在特征选择和模型稳定性方面具有一定的优势。然而,需要注意的是,λ的取值过大或过小都可能导致模型性能下降,因此需要根据具体情况进行调整和优化。

  • 更新参数
    w j : = w j − α ∂ Loss L1 ∂ w j w_j := w_j - \alpha \frac{\partial \text{Loss}_{\text{L1}}}{\partial w_j} wj:=wjαwjLossL1
  • L1正则化算法概述

下面内容引用自文心一言的自动生成
L1正则化(也称为Lasso正则化)是一种用于控制机器学习模型复杂度的技术,特别是在多元线性回归等统计和机器学习模型中。它通过向损失函数添加L1范数项(即模型参数的绝对值之和)来实现正则化,从而鼓励模型产生稀疏权重,即将一些特征的权重调整为0。以下是L1正则化的算法概述:

一、L1正则化的数学表达

L1正则化的数学公式可以表示为:

Loss L1 = Loss data + λ ∑ i = 1 n ∣ w i ∣ \text{Loss}_{\text{L1}} = \text{Loss}_{\text{data}} + \lambda \sum_{i=1}^{n} |w_i| LossL1=Lossdata+λi=1nwi

其中:

  • Loss data \text{Loss}_{\text{data}} Lossdata 是模型在训练数据上的损失(如均方误差等)。
  • λ \lambda λ 是正则化参数,用于控制正则化的强度。
  • w i w_i wi 是模型的参数(权重)。
  • n n n 是模型参数的数量。

二、L1正则化的算法步骤

  1. 初始化参数:首先,需要初始化模型的参数(权重)和正则化参数 λ \lambda λ

  2. 计算梯度:在每次迭代中,需要计算损失函数关于每个参数的梯度。对于L1正则化,参数的梯度会包含两部分:一部分是原始损失函数关于参数的梯度,另一部分是正则化项关于参数的梯度(即正则化参数的符号,因为L1正则化是参数的绝对值之和)。

∂ Loss L1 ∂ w i = ∂ Loss data ∂ w i + λ sgn ( w i ) \frac{\partial \text{Loss}_{\text{L1}}}{\partial w_i} = \frac{\partial \text{Loss}_{\text{data}}}{\partial w_i} + \lambda \text{sgn}(w_i) wiLossL1=wiLossdata+λsgn(wi)

其中, sgn ( w i ) \text{sgn}(w_i) sgn(wi)是符号函数,当 w i > 0 w_i > 0 wi>0时, sgn ( w i ) = 1 \text{sgn}(w_i) = 1 sgn(wi)=1;当 w i < 0 w_i < 0 wi<0时, sgn ( w i ) = − 1 \text{sgn}(w_i) = -1 sgn(wi)=1;当 w i = 0 w_i = 0 wi=0时,由于L1范数在0处不可导,通常使用次梯度(subgradient)或将其视为0(这取决于具体的实现)。

  1. 更新参数:使用梯度下降(或其他优化算法)来更新模型的参数。对于L1正则化,参数的更新公式通常包括原始梯度项和正则化项的梯度项。

w i : = w i − α ( ∂ Loss data ∂ w i + λ sgn ( w i ) ) w_i := w_i - \alpha \left( \frac{\partial \text{Loss}_{\text{data}}}{\partial w_i} + \lambda \text{sgn}(w_i) \right) wi:=wiα(wiLossdata+λsgn(wi))

其中, α \alpha α 是学习率,控制参数更新的步长。

  1. 迭代优化:重复步骤2和步骤3,直到满足某个停止条件(如达到最大迭代次数、损失函数的变化量小于某个阈值等)。

三、L1正则化的特点

  1. 特征选择:L1正则化通过鼓励模型产生稀疏权重,即将一些特征的权重调整为0,从而实现特征选择。这有助于去除那些对目标变量影响较小的特征,简化模型。

  2. 防止过拟合:通过控制模型的复杂度,L1正则化有助于防止模型在训练数据上过拟合,提高模型在未知数据上的预测能力。

  3. 计算复杂度:虽然L1正则化在0点处不可导,但可以通过次梯度或软阈值(soft thresholding)等方法来近似求解。此外,一些高效的优化算法(如坐标轴下降法)也可以用于求解L1正则化问题。

四、应用实例

L1正则化在多个领域都有广泛的应用,如金融、生物信息学、图像处理等。特别是在处理高维数据时,L1正则化可以有效地减少特征数量,提高模型的解释性和泛化能力。例如,在股票预测中,可以使用L1正则化来选择对股票价格影响较大的财务指标;在生物信息学中,可以使用L1正则化来识别与疾病相关的基因等。

  • julia 实现L1正则化
#  L1正则化
# coding:未来之蓝 https://blog.csdn.net/sakura_sea

using Random 
using LinearAlgebra

function sgn(x)
    y=0
    if x>0 
       y=1
    elseif x<0
       y=-1
    end
    return y
end
m=20
Random.seed!(123)  
#AX+B=Y
X=hcat(rand(m,5)*10,ones(m,1))
# 生成均值为mu,标准差为sigma
# 生成一个包含多个这样随机数的向量
mu,sigma=3,1
B=mu.+ sigma * randn(m)
A= [2.5,0.6,-0.01,7.3,-1.3,0.8]
Y=X*A+B

W=(rand(6).-0.5)*5
wlen=length(W)
λ=0.35
a=0.0025
∂L_w=zeros(wlen)
loss=0.0
for n in range(1,5000)
    global ∂L_w
    global W
    global loss
    for i in range(1,length(W))      
        ∂L_w[i]=λ*sgn(W[i])+sum((X[:,i]*(-1)).*(Y-X*W))*(1/m)
        W[i]=W[i]-a*∂L_w[i]
    end
    println(n,"-梯度:",∂L_w)   
    println("W:",W) 
    if abs((1/2m)*sum((Y-X*W).^2)-loss)<0.0000001
        break 
    end  
    loss=(1/2m)*sum((Y-X*W).^2) 
end


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49

参数需要仔细慢慢调整,在这里就不仔细调了。

501-梯度:[0.0644682650509047, -0.11495861434774401, 0.17331158227718288, -0.11683033936096199, -0.07818088154779085, 0.18551991291496428]
W:[2.602314880939522, 0.6822762409886562, 0.2604085284976227, 7.322765947216641, -1.318823252033361, 1.0954624384207479]
502-梯度:[0.0639559994925199, -0.11420165412242816, 0.17202392832704116, -0.1160150205841809, -0.07768671927394027, 0.185490977818295]
W:[2.602154990940791, 0.6825617451239623, 0.2599784686768051, 7.323055984768101, -1.3186290352351762, 1.094998710976202]
503-梯度:[0.06344768052917826, -0.11344988151389823, 0.17074518038383235, -0.11520614600659906, -0.07719570672160819, 0.1854620937957397]
W:[2.601996371739468, 0.682845369827747, 0.2595516057258455, 7.323344000133117, -1.3184360459683722, 1.0945350557417126]
504-梯度:[0.06294327470223121, -0.11270326351741755, 0.16947528003692447, -0.11440365733352498, -0.0767078283772305, 0.18543326065968846]
W:[2.6018390135527123, 0.6831271279865405, 0.2591279175257532, 7.323630009276451, -1.3182442763974291, 1.0940714725900633]
505-梯度:[0.06244274888686946, -0.11196176728345936, 0.16821416919932522, -0.11360749692526728, -0.07622306870617701, 0.18540447822085213]
W:[2.601682906680495, 0.6834070324047492, 0.2587073821027549, 7.3239140280187645, -1.3180537187256638, 1.093607961394511]
506-梯度:[0.06194607028822696, -0.11122536011820777, 0.16696179010720066, -0.11281760778773325, -0.07574141215531843, 0.18537574628834308]
W:[2.6015280415047743, 0.6836850958050448, 0.2582899776274869, 7.324196072038234, -1.3178643651952755, 1.0931445220287903]
507-梯度:[0.061453206437381724, -0.11049400948403137, 0.1657180853191306, -0.11203393356327945, -0.07526284315564041, 0.18534706466974185]
W:[2.601374408488681, 0.6839613308287549, 0.25787568241418907, 7.324476156872142, -1.3176762080873865, 1.092681154367116]
508-梯度:[0.06096412518739286, -0.10976768300004863, 0.1644829977154624, -0.111256418521687, -0.07478734612485977, 0.1853184331711459]
W:[2.6012219981757125, 0.684235750036255, 0.25746447491990043, 7.324754297918446, -1.3174892397220743, 1.0922178582841882]
 *  Terminal will be reused by tasks, press any key to close it. 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • L1正则化作用

以下内容由文心一言自动生成
是一种线性回归的扩展,用于增强模型的泛化能力,避免过拟合,并可以自动进行特征选择。它的主要作用可以概括为以下几点:

  1. 避免过拟合:在机器学习模型中,尤其是当模型参数过多且训练数据量相对较少时,模型容易学习到训练数据中的噪声,导致在未见过的数据上表现不佳,即过拟合。Lasso正则化通过向损失函数中添加一个与模型参数绝对值之和成正比的惩罚项(正则化项),来限制模型参数的复杂度,从而防止过拟合。

  2. 特征选择:Lasso正则化通过强制模型系数的绝对值之和不超过一个常数,使得某些系数的值在优化过程中逐渐减小到0,这实际上是一种自动的特征选择过程。对于最终模型中系数为0的特征,可以认为这些特征对于预测目标没有贡献,因此在模型解释或应用时可以忽略这些特征。

  3. 增强模型的泛化能力:由于Lasso正则化能够减少模型复杂度,并去除对预测目标贡献不大的特征,因此它通常能够提升模型在未见过的数据上的表现,即增强模型的泛化能力。

  4. 提升计算效率:在大数据和高维特征空间中,模型的计算复杂度和存储需求可能会非常高。通过Lasso正则化进行特征选择,可以减少模型需要考虑的特征数量,从而降低计算复杂度和存储需求,提升计算效率。

  5. 适用于稀疏数据的场景:Lasso正则化特别适合处理那些数据本身就比较稀疏的场景,因为它能够自动选择出重要的非零特征,同时忽略那些不重要的零特征或接近零的特征。

总之,Lasso正则化是一种强大的工具,它能够在增强模型泛化能力的同时,自动进行特征选择,减少模型的复杂度,并提升计算效率。这使得Lasso正则化在机器学习和统计建模领域得到了广泛的应用。

理论

下面来自于文心一言的自动生成。

线性模型

线性模型(Linear Model)是统计学和机器学习中最为基础且广泛使用的模型之一。它基于这样的假设:目标变量(因变量)与一个或多个自变量之间存在线性关系。换句话说,线性模型试图通过线性方程来预测或解释一个或多个自变量(也称为特征或解释变量)与目标变量之间的关系。

基本形式

线性模型的基本形式可以表示为:

y = β 0 + β 1 x 1 + β 2 x 2 + ⋯ + β n x n + ϵ y = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \cdots + \beta_n x_n + \epsilon y=β0+β1x1+β2x2++βnxn+ϵ

其中:

  • y y y 是目标变量(因变量)。
  • x 1 , x 2 , … , x n x_1, x_2, \ldots, x_n x1,x2,,xn 是自变量(解释变量或特征)。
  • β 0 , β 1 , … , β n \beta_0, \beta_1, \ldots, \beta_n β0,β1,,βn 是模型参数(也称为系数或权重),其中 β 0 \beta_0 β0 是截距项(常数项), β 1 , … , β n \beta_1, \ldots, \beta_n β1,,βn 是斜率项,表示每个自变量对因变量的影响大小。
  • ϵ \epsilon ϵ 是误差项,表示模型未能解释的部分或随机噪声。
特性
  • 简单性:线性模型易于理解和实现,其参数具有直观的解释性。
  • 可解释性:线性模型的系数直接反映了自变量对因变量的影响程度和方向。
  • 泛化能力:在许多情况下,尽管现实世界的关系可能并非完全线性,但线性模型仍能提供合理的预测和解释。
  • 灵活性:通过引入交互项、多项式项或转换自变量(如对数转换、平方根转换等),可以扩展线性模型以处理更复杂的关系。
应用

线性模型广泛应用于各种领域,包括但不限于:

  • 回归分析:预测连续型目标变量的值。
  • 分类问题的简化处理:在某些情况下,通过逻辑回归(一种广义的线性模型)可以将线性模型应用于分类问题。
  • 经济和金融分析:研究经济变量之间的关系,如收入与消费之间的关系。
  • 生物学和医学研究:分析不同因素对疾病风险、治疗效果等的影响。
  • 工程和物理学:模拟和预测物理过程,如电路中的电压与电流关系。
学习算法

线性模型的学习通常涉及估计模型参数(即系数),使得模型对训练数据的预测误差最小。常见的参数估计方法包括最小二乘法(用于回归问题)和最大似然估计(更广泛地应用于包括分类在内的各种统计模型)。在机器学习中,还可以使用梯度下降等优化算法来训练线性模型。

向量输入的二次函数的凸性概述

在分析向量输入的二次函数的凸性时,我们首先需要明确二次函数的一般形式以及凸函数的定义。

二次函数的一般形式

对于向量输入 x ∈ R n \mathbf{x} \in \mathbb{R}^n xRn,二次函数可以表示为:

f ( x ) = x T A x + b T x + c f(\mathbf{x}) = \mathbf{x}^T A \mathbf{x} + \mathbf{b}^T \mathbf{x} + c f(x)=xTAx+bTx+c

其中, A ∈ R n × n A \in \mathbb{R}^{n \times n} ARn×n 是一个对称矩阵(因为 A T = A A^T = A AT=A), b ∈ R n \mathbf{b} \in \mathbb{R}^n bRn 是一个向量, c ∈ R c \in \mathbb{R} cR 是一个常数。

凸函数的定义

一个函数 f : R n → R f: \mathbb{R}^n \rightarrow \mathbb{R} f:RnR 是凸的,如果对于所有 x , y ∈ R n \mathbf{x}, \mathbf{y} \in \mathbb{R}^n x,yRn 和所有 0 ≤ θ ≤ 1 0 \leq \theta \leq 1 0θ1,都有:

f ( θ x + ( 1 − θ ) y ) ≤ θ f ( x ) + ( 1 − θ ) f ( y ) f(\theta \mathbf{x} + (1-\theta) \mathbf{y}) \leq \theta f(\mathbf{x}) + (1-\theta) f(\mathbf{y}) f(θx+(1θ)y)θf(x)+(1θ)f(y)

分析二次函数的凸性
  1. 忽略线性项和常数项
    由于线性项和常数项在凸性分析中不影响函数的凸性或凹性(它们可以向上或向下平移函数图像,但不改变其形状),我们可以暂时忽略 b T x + c \mathbf{b}^T \mathbf{x} + c bTx+c,只关注 x T A x \mathbf{x}^T A \mathbf{x} xTAx

  2. 利用Hessian矩阵
    对于二次函数,其Hessian矩阵就是二次项系数矩阵 A A A。一个函数是凸的当且仅当其Hessian矩阵在所有点上都是非负的(即对于所有非零向量 z \mathbf{z} z,都有 z T A z ≥ 0 \mathbf{z}^T A \mathbf{z} \geq 0 zTAz0)。

  3. 判断 A A A 的非负性
    如果 A A A 是一个对称非负定矩阵(即对于所有非零向量 z \mathbf{z} z,都有 z T A z ≥ 0 \mathbf{z}^T A \mathbf{z} \geq 0 zTAz0),则函数 f ( x ) = x T A x f(\mathbf{x}) = \mathbf{x}^T A \mathbf{x} f(x)=xTAx 是凸的。

  4. 结论
    因此,对于给定的二次函数 f ( x ) = x T A x + b T x + c f(\mathbf{x}) = \mathbf{x}^T A \mathbf{x} + \mathbf{b}^T \mathbf{x} + c f(x)=xTAx+bTx+c,如果 A A A 是对称非负定矩阵,则该函数是凸的。如果 A A A 是对称负定矩阵(即对于所有非零向量 z \mathbf{z} z,都有 z T A z < 0 \mathbf{z}^T A \mathbf{z} < 0 zTAz<0),则该函数是凹的。如果 A A A 既不是非负定也不是负定(即存在正特征值和负特征值),则该函数既不是凸的也不是凹的。

注意
  • 如果 A A A 是正定矩阵(即对于所有非零向量 z \mathbf{z} z,都有 z T A z > 0 \mathbf{z}^T A \mathbf{z} > 0 zTAz>0),则函数是严格凸的。
  • 如果 A A A 是零矩阵(即所有元素都是0),则函数退化为线性函数,虽然在这种情况下函数也是凸的,但它不是严格凸的(除非加上非零的线性项或常数项)。

详细解释向量输入的二次函数的凸性分析

详细解释向量输入的二次函数的凸性分析,我们可以从以下几个方面进行:

一、二次函数的一般形式

对于向量输入 x ∈ R n \mathbf{x} \in \mathbb{R}^n xRn,二次函数的一般形式可以表示为:

f ( x ) = x T A x + b T x + c f(\mathbf{x}) = \mathbf{x}^T A \mathbf{x} + \mathbf{b}^T \mathbf{x} + c f(x)=xTAx+bTx+c

其中, A ∈ R n × n A \in \mathbb{R}^{n \times n} ARn×n 是一个对称矩阵, b ∈ R n \mathbf{b} \in \mathbb{R}^n bRn 是一个向量, c ∈ R c \in \mathbb{R} cR 是一个常数。这里, A A A 的对称性( A = A T A = A^T A=AT)是二次函数的一个重要性质,它简化了后续的分析。

二、凸函数的定义

在数学中,一个函数 f : R n → R f: \mathbb{R}^n \rightarrow \mathbb{R} f:RnR 被称为凸函数,如果对于所有 x , y ∈ R n \mathbf{x}, \mathbf{y} \in \mathbb{R}^n x,yRn 和所有 0 ≤ θ ≤ 1 0 \leq \theta \leq 1 0θ1,都有:

f ( θ x + ( 1 − θ ) y ) ≤ θ f ( x ) + ( 1 − θ ) f ( y ) f(\theta \mathbf{x} + (1-\theta) \mathbf{y}) \leq \theta f(\mathbf{x}) + (1-\theta) f(\mathbf{y}) f(θx+(1θ)y)θf(x)+(1θ)f(y)

这个定义描述了凸函数图像在任意两点之间的线段总是位于函数图像之下或与之相切的性质。

三、二次函数的Hessian矩阵

对于二次函数 f ( x ) = x T A x + b T x + c f(\mathbf{x}) = \mathbf{x}^T A \mathbf{x} + \mathbf{b}^T \mathbf{x} + c f(x)=xTAx+bTx+c,其Hessian矩阵是一个二阶偏导数矩阵,但在这种情况下,由于函数是二次的,Hessian矩阵实际上就是一个常数矩阵,即二次项系数矩阵 A A A

四、判断二次函数的凸性
  1. 忽略线性项和常数项
    由于线性项 b T x \mathbf{b}^T \mathbf{x} bTx 和常数项 c c c 在凸性分析中不影响函数的凸性或凹性(它们可以向上或向下平移函数图像,但不改变其凹凸形状),我们可以暂时忽略它们,只关注 x T A x \mathbf{x}^T A \mathbf{x} xTAx 部分。

  2. 利用Hessian矩阵(即 A A A
    一个函数是凸的当且仅当其Hessian矩阵在所有点上都是非负的(即对于所有非零向量 z \mathbf{z} z,都有 z T A z ≥ 0 \mathbf{z}^T A \mathbf{z} \geq 0 zTAz0)。对于二次函数,这等价于判断矩阵 A A A 是否是对称非负定矩阵。

  3. 判断 A A A 的非负性

    • 如果 A A A 是对称非负定矩阵(即对于所有非零向量 z \mathbf{z} z,都有 z T A z ≥ 0 \mathbf{z}^T A \mathbf{z} \geq 0 zTAz0),则函数 f ( x ) = x T A x f(\mathbf{x}) = \mathbf{x}^T A \mathbf{x} f(x)=xTAx 是凸的。
    • 如果 A A A 是对称正定矩阵(即对于所有非零向量 z \mathbf{z} z,都有 z T A z > 0 \mathbf{z}^T A \mathbf{z} > 0 zTAz>0),则函数是严格凸的。
    • 如果 A A A 是对称负定矩阵(即对于所有非零向量 z \mathbf{z} z,都有 z T A z < 0 \mathbf{z}^T A \mathbf{z} < 0 zTAz<0),则函数是凹的(注意这里的凹性与某些文献或教材中的定义可能相反,具体取决于凹凸性的定义方式)。
    • 如果 A A A 既不是非负定也不是负定(即存在正特征值和负特征值),则函数既不是凸的也不是凹的。
  4. 考虑完整函数
    由于线性项和常数项不影响函数的凸性或凹性,因此当我们将它们加回到函数中时,函数的凸性或凹性不会改变。但是,这些项会影响函数的最小值或最大值的位置。

五、结论

综上所述,对于给定的二次函数 f ( x ) = x T A x + b T x + c f(\mathbf{x}) = \mathbf{x}^T A \mathbf{x} + \mathbf{b}^T \mathbf{x} + c f(x)=xTAx+bTx+c,其凸性完全由矩阵 A A A 的性质决定。如果 A A A 是对称非负定矩阵,则该函数是凸的;如果 A A A 是对称正定矩阵,则该函数是严格凸的;如果 A A A 是对称负定矩阵,则该函数是凹的(注意定义可能相反);如果 A A A 既不是非负定也不是负定,则该函数既不是凸的也不是凹的。

牛顿法

牛顿法(Newton’s Method),也称为牛顿-拉弗森方法(Newton-Raphson method),是一种用于求解数值优化和非线性方程求解问题的迭代数值方法。其工作原理主要基于泰勒级数展开,通过不断逼近函数的根或极小值点来寻找函数的最优解。以下是牛顿法工作的详细步骤:

一、基本思想

牛顿法的基本思想是使用局部线性逼近来逼近函数的根或极小值点。具体来说,它通过在每一个迭代点处,用函数的泰勒级数展开的前几项来近似函数,并求解这个近似函数的根或极值点,以此作为下一个迭代点。

二、迭代过程
  1. 初始解选择:首先,选择一个初始点 x 0 x_0 x0作为迭代的起点。

  2. 迭代更新

    • 在每一步迭代中,计算函数 f ( x ) f(x) f(x)在当前点 x x x的梯度(一阶导数) d f ( x ) df(x) df(x)(对于优化问题)或函数值 f ( x ) f(x) f(x)(对于方程求解问题)。
    • 对于优化问题,还需要计算海森矩阵(二阶导数) H ( x ) H(x) H(x)
    • 然后,根据牛顿法的迭代公式,计算更新方向 d x dx dx。对于方程求解问题,迭代公式为 x n e w = x − f ( x ) / f ′ ( x ) x_{new} = x - f(x)/f'(x) xnew=xf(x)/f(x);对于优化问题,迭代公式可能涉及解一个线性方程组 H ( x ) ∗ d x = − d f ( x ) H(x) * dx = -df(x) H(x)dx=df(x)来得到 d x dx dx
  3. 更新点:将更新方向 d x dx dx加到当前点 x x x,得到新的点 x n e w = x + d x x_{new} = x + dx xnew=x+dx(对于方程求解问题,可能是 x n e w = x − f ( x ) / f ′ ( x ) x_{new} = x - f(x)/f'(x) xnew=xf(x)/f(x))。

  4. 收敛检测:检查 d x dx dx的大小(或函数值的变化量)是否小于一个预定的容忍度 t o l tol tol。如果满足条件,则算法停止,x_new即为所求的根或极小值点;否则,继续迭代。

  5. 迭代重复:重复步骤2到4,直到满足收敛条件为止,或达到最大迭代次数。

三、特点与应用
  • 收敛速度快:牛顿法通常比梯度下降法等一阶优化方法具有更快的收敛速度。
  • 精度高:在求解非线性方程和优化问题时,牛顿法通常能够达到较高的精度。
  • 需要计算二阶导数:在优化问题中,牛顿法需要计算目标函数的二阶导数(海森矩阵),这可能会增加计算量并引入数值稳定性问题。
  • 应用广泛:牛顿法在机器学习、数值分析和优化领域有着广泛的应用。
四、注意事项
  • 初始点的选择对牛顿法的收敛性有很大影响,需要选择一个接近真实解的点作为初始点。
  • 在实际应用中,可能需要对牛顿法进行改进或与其他方法结合使用,以提高其稳定性和效率。

综上所述,牛顿法通过不断逼近函数的根或极小值点来求解问题,具有收敛速度快、精度高等优点,但也需要注意其计算量和数值稳定性问题。

牛顿法应用的例子

以下是几个牛顿法应用的例子,涵盖了方程求解和优化问题两个方面:

方程求解

例1:求解方程 x 2 − 4 = 0 x^2 - 4 = 0 x24=0

这是一个简单的二次方程,其解为 x = 2 或 x = -2。我们可以使用牛顿法来求解这个方程。

  1. 定义函数 f ( x ) = x 2 − 4 f(x) = x^2 - 4 f(x)=x24
  2. 计算导数 f ′ ( x ) = 2 x f'(x) = 2x f(x)=2x
  3. 选择初始点:例如,选择 x 0 = 1 x_0 = 1 x0=1
  4. 应用牛顿法迭代公式 x n + 1 = x n − f ( x n ) f ′ ( x n ) x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)} xn+1=xnf(xn)f(xn)
    • 第一次迭代: x 1 = 1 − 1 2 − 4 2 ⋅ 1 = 1 + 3 2 = 2.5 x_1 = 1 - \frac{1^2 - 4}{2 \cdot 1} = 1 + \frac{3}{2} = 2.5 x1=121124=1+23=2.5
    • 第二次迭代: x 2 = 2.5 − 2. 5 2 − 4 2 ⋅ 2.5 = 2.5 − 2.25 5 = 2.05 x_2 = 2.5 - \frac{2.5^2 - 4}{2 \cdot 2.5} = 2.5 - \frac{2.25}{5} = 2.05 x2=2.522.52.524=2.552.25=2.05
    • 重复迭代,直到满足某个停止条件(如 ∣ x n + 1 − x n ∣ < tol |x_{n+1} - x_n| < \text{tol} xn+1xn<tol
  5. 结果:经过几次迭代后,我们将逼近到 x = 2 x = 2 x=2(或 x = − 2 x = -2 x=2,取决于初始点的选择)
优化问题

例2:最小化函数 f ( x ) = ( x − 3 ) 2 f(x) = (x-3)^2 f(x)=(x3)2

这是一个简单的二次函数,其最小值在 x = 3 x = 3 x=3 处取得,此时 f ( x ) = 0 f(x) = 0 f(x)=0

  1. 定义函数 f ( x ) = ( x − 3 ) 2 f(x) = (x-3)^2 f(x)=(x3)2
  2. 计算一阶导数 d f ( x ) = 2 ( x − 3 ) df(x) = 2(x-3) df(x)=2(x3)
  3. 计算二阶导数(海森矩阵):由于这是一个单变量函数,海森矩阵实际上就是一个数 H ( x ) = 2 H(x) = 2 H(x)=2
  4. 选择初始点:例如,选择 x 0 = 0 x_0 = 0 x0=0
  5. 应用牛顿法优化公式(对于单变量函数,优化和方程求解的迭代公式相同,但这里我们是在寻找最小值点):
    • 第一次迭代: x 1 = 0 − 2 ( 0 − 3 ) 2 = 0 + 3 = 3 x_1 = 0 - \frac{2(0-3)}{2} = 0 + 3 = 3 x1=022(03)=0+3=3
    • 由于函数是二次的,且我们已经找到了最小值点,所以实际上只需要一次迭代。但在更复杂的情况下,可能需要多次迭代。
  6. 结果 x = 3 x = 3 x=3 是函数的最小值点。
注意事项
  • 在实际应用中,牛顿法可能需要多次迭代才能收敛到足够的精度。
  • 初始点的选择对牛顿法的收敛速度和是否收敛有很大影响。
  • 在优化问题中,牛顿法需要计算目标函数的二阶导数(或海森矩阵),这可能会增加计算量。
  • 当目标函数是高度非线性或存在多个极值点时,牛顿法可能会陷入局部极小值而非全局最小值。

以上例子展示了牛顿法在方程求解和优化问题中的应用。

海森矩阵

海森矩阵(Hessian Matrix)是一个在数学和优化问题中非常重要的概念,特别是在处理多元函数的极值问题时。以下将详细介绍海森矩阵的计算方法、例子以及一个例题。

一、海森矩阵的计算

海森矩阵是一个由多元函数的二阶偏导数组成的方阵。对于n元函数f(x1, x2, …, xn),其海森矩阵H是一个n×n的矩阵,其中元素Hij是函数f关于xi和xj的二阶偏导数。具体计算步骤如下:

  1. 计算一阶偏导数:首先,需要求出函数f关于每个自变量的一阶偏导数。
  2. 计算二阶偏导数:然后,对每个一阶偏导数再次求导,得到二阶偏导数。注意,由于偏导数的交换性,即∂²f/∂xi∂xj = ∂²f/∂xj∂xi,海森矩阵是对称的。
  3. 构造海森矩阵:将计算得到的二阶偏导数按照自变量顺序排列,构成海森矩阵。
二、海森矩阵的例子

考虑二元函数 f ( x , y ) = x 2 + 3 x y + y 2 f(x, y) = x^2 + 3xy + y^2 f(x,y)=x2+3xy+y2,我们可以计算其海森矩阵。

  1. 一阶偏导数

    • ∂f/∂x = 2x + 3y
    • ∂f/∂y = 3x + 2y
  2. 二阶偏导数

    • ∂²f/∂x² = 2
    • ∂²f/∂x∂y = ∂²f/∂y∂x = 3
    • ∂²f/∂y² = 2
  3. 海森矩阵
    H = [ 2 3 3 2 ] H = [2332]

    [2332]
    H=[2332]

三、海森矩阵的例题

例题:求函数 f ( x , y ) = x 2 + 3 x y + y 2 f(x, y) = x^2 + 3xy + y^2 f(x,y)=x2+3xy+y2的极值点,并判断其类型。

  1. 求一阶偏导数

    • ∂f/∂x = 2x + 3y
    • ∂f/∂y = 3x + 2y
  2. 求驻点:令一阶偏导数等于0,解得(x, y) = (0, 0)。

  3. 计算海森矩阵:已在上面的例子中计算过,为 [ 2 3 3 2 ] [2332]

    [2332]
    [2332]

  4. 判断海森矩阵的定性:计算海森矩阵的特征值。对于此矩阵,其特征值为λ1 = 5(正)和λ2 = -1(负),因此海森矩阵是不定的。

  5. 判断极值类型:由于海森矩阵是不定的,我们不能直接确定(0, 0)是极大值点、极小值点还是鞍点。但可以通过其他方法(如方向导数)进一步分析。在此例中,可以观察到函数在(0, 0)处沿不同方向有增加和减少的趋势,因此(0, 0)是一个鞍点。

总结

海森矩阵是多元函数二阶偏导数组成的方阵,对于优化问题和极值问题有重要应用。通过计算海森矩阵并分析其特征值,我们可以判断函数的极值类型和极值点。然而,对于复杂函数和实际应用问题,可能需要结合其他数学工具和方法进行综合分析和求解。

海森矩阵(Hessian Matrix)与梯度

海森矩阵(Hessian Matrix)与梯度是数学和优化问题中两个重要的概念,它们之间有着密切的联系,但各自描述的是函数不同方面的性质。

海森矩阵
  • 定义:海森矩阵是一个多元函数的二阶偏导数构成的方阵,描述了函数的局部曲率。它是一个n×n的矩阵,其中n是函数的自变量个数。对于实值多元函数f(x1,x2,…,xn),如果其二阶偏导数都存在,则海森矩阵的元素Hij为函数f关于xi和xj的二阶偏导数。
  • 性质:如果函数f在某一区域内二阶连续可导,那么其海森矩阵在该区域内为对称矩阵。这是因为二阶偏导数的求导顺序不影响结果,即Hij = Hji。
  • 应用:海森矩阵常用于牛顿法解决优化问题。在优化问题中,海森矩阵的特征值和特征向量提供了关于函数在某点附近的凹凸性和最优化方向的重要信息。
梯度
  • 定义:梯度是一个向量,表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(梯度的方向)变化最快,变化率最大(为梯度的模)。对于多元函数,梯度是由函数在该点的各个一阶偏导数组成的向量。
  • 性质:梯度的方向是函数值上升最快的方向,梯度的大小(模长)表示函数值在该方向上的变化率。此外,梯度的方向与过该点的等值线或等值面的切线或切平面相垂直。
  • 应用:梯度在优化问题中用于指导搜索方向,即沿着梯度的反方向(即函数值下降最快的方向)进行搜索,可以更快地找到函数的极值点。

海森矩阵计算、例子以及例题

海森矩阵(Hessian Matrix)在数学中是一个重要概念,特别是在处理多元函数的极值问题时。以下将详细介绍海森矩阵的计算、例子以及例题。

一、海森矩阵的定义

海森矩阵是一个自变量为向量的实值函数的二阶偏导数组成的方块矩阵。对于一个n元函数f(x1, x2, …, xn),其海森矩阵H定义为:

H = [ ∂ 2 f ∂ x 1 2 ∂ 2 f ∂ x 1 ∂ x 2 ⋯ ∂ 2 f ∂ x 1 ∂ x n ∂ 2 f ∂ x 2 ∂ x 1 ∂ 2 f ∂ x 2 2 ⋯ ∂ 2 f ∂ x 2 ∂ x n ⋮ ⋮ ⋱ ⋮ ∂ 2 f ∂ x n ∂ x 1 ∂ 2 f ∂ x n ∂ x 2 ⋯ ∂ 2 f ∂ x n 2 ] H = [2fx212fx1x22fx1xn2fx2x12fx222fx2xn2fxnx12fxnx22fx2n]

2fx212fx2x12fxnx12fx1x22fx222fxnx22fx1xn2fx2xn2fx2n
H= x122fx2x12fxnx12fx1x22fx222fxnx22fx1xn2fx2xn2fxn22f

注意,由于混合偏导数与求导顺序无关(即 ∂ 2 f ∂ x i ∂ x j = ∂ 2 f ∂ x j ∂ x i \frac{\partial^2 f}{\partial x_i \partial x_j} = \frac{\partial^2 f}{\partial x_j \partial x_i} xixj2f=xjxi2f),海森矩阵总是对称的。

二、海森矩阵的计算

海森矩阵的计算涉及对函数f的二阶偏导数的计算。具体步骤如下:

  1. 确定函数f:首先明确需要计算海森矩阵的多元函数f。
  2. 计算二阶偏导数:对函数f分别求关于每个变量的二阶偏导数,以及关于不同变量的混合二阶偏导数。
  3. 构建海森矩阵:将计算得到的二阶偏导数按照海森矩阵的定义填充到矩阵的相应位置。
三、海森矩阵的例子

假设有一个二元函数 f ( x , y ) = x 2 + 3 x y + y 2 f(x, y) = x^2 + 3xy + y^2 f(x,y)=x2+3xy+y2,我们需要计算其在点(1, 2)处的海森矩阵。

  1. 计算二阶偏导数

    • ∂ 2 f ∂ x 2 = 2 \frac{\partial^2 f}{\partial x^2} = 2 x22f=2
    • ∂ 2 f ∂ y 2 = 2 \frac{\partial^2 f}{\partial y^2} = 2 y22f=2
    • ∂ 2 f ∂ x ∂ y = ∂ 2 f ∂ y ∂ x = 3 \frac{\partial^2 f}{\partial x \partial y} = \frac{\partial^2 f}{\partial y \partial x} = 3 xy2f=yx2f=3
  2. 构建海森矩阵
    H = [ 2 3 3 2 ] H = [2332]

    [2332]
    H=[2332]

四、海森矩阵的例题

例题:求函数 f ( x , y ) = x 2 + 3 x y + y 2 f(x, y) = x^2 + 3xy + y^2 f(x,y)=x2+3xy+y2在点(1, 2)处的海森矩阵,并判断该点是否为极值点,是极大值点还是极小值点。

解答

  1. 计算海森矩阵:如上所述,海森矩阵为
    H = [ 2 3 3 2 ] H = [2332]

    [2332]
    H=[2332]

  2. 判断矩阵的正定性:计算海森矩阵的特征值。特征多项式为
    ∣ λ I − H ∣ = ∣ λ − 2 − 3 − 3 λ − 2 ∣ = ( λ − 2 ) 2 − 9 = λ 2 − 4 λ − 5 |\lambda I - H| = |λ233λ2|

    λ233λ2
    = (\lambda - 2)^2 - 9 = \lambda^2 - 4\lambda - 5 λIH= λ233λ2 =(λ2)29=λ24λ5
    解得特征值为 λ 1 = 5 , λ 2 = − 1 \lambda_1 = 5, \lambda_2 = -1 λ1=5,λ2=1

  3. 判断极值点:由于特征值中有正有负,因此海森矩阵是不定矩阵。根据海森矩阵的性质,当矩阵为不定矩阵时,该点不是极值点。

综上所述,点(1, 2)不是函数 f ( x , y ) = x 2 + 3 x y + y 2 f(x, y) = x^2 + 3xy + y^2 f(x,y)=x2+3xy+y2的极值点。

海森矩阵与梯度的关系
  • 在优化问题中,梯度和海森矩阵都是用来描述函数性质的重要工具。梯度描述的是函数值变化最快的方向,而海森矩阵则描述了函数在该点附近的曲率情况。
  • 当梯度为0时,表示函数在该点的一阶导数为0,可能是极值点或鞍点。此时,需要进一步分析海森矩阵来判断该点的性质。如果海森矩阵是正定的,则函数在该点是局部极小值;如果海森矩阵是负定的,则函数在该点是局部极大值;如果海森矩阵是不定的,则函数在该点可能是鞍点。
  • 特别地,当海森矩阵的特征值为0时,意味着在对应的特征向量方向上,函数的二阶导数为0,即函数的曲率为0。这通常表示在该方向上,函数的一阶导数(梯度)不会变化,可能是一个平坦的区域或鞍点。

综上所述,海森矩阵和梯度在优化问题中各自扮演着重要的角色,它们之间既有联系又有区别。通过综合分析梯度和海森矩阵的信息,可以更准确地判断函数的性质和优化方向。

向量输入的二次函数

概述

向量输入的二次函数通常指的是一个函数,其输入是一个向量,输出是该向量及其元素通过某种二次方式组合后的结果。这种函数在机器学习、优化问题、物理建模等领域中非常常见。下面,我将通过一个具体的例子来解释这类函数。

假设我们有一个二维向量 x = [ x 1 , x 2 ] T \mathbf{x} = [x_1, x_2]^T x=[x1,x2]T,我们想要定义一个以这个向量为输入的二次函数。一个简单且常见的形式是二次型(Quadratic Form),它可以表示为:

f ( x ) = x T A x + b T x + c f(\mathbf{x}) = \mathbf{x}^T A \mathbf{x} + \mathbf{b}^T \mathbf{x} + c f(x)=xTAx+bTx+c

其中:

  • A A A 是一个 n × n n \times n n×n 的对称矩阵(在这个例子中, n = 2 n=2 n=2),它定义了向量 x \mathbf{x} x 中各元素之间的二次交互。
  • b \mathbf{b} b 是一个 n × 1 n \times 1 n×1 的向量,它定义了向量 x \mathbf{x} x 中各元素的一次项系数。
  • c c c 是一个标量,代表常数项。

对于二维向量 x = [ x 1 , x 2 ] T \mathbf{x} = [x_1, x_2]^T x=[x1,x2]T,上述函数可以展开为:

f ( x 1 , x 2 ) = a 11 x 1 2 + 2 a 12 x 1 x 2 + a 22 x 2 2 + b 1 x 1 + b 2 x 2 + c f(x_1, x_2) = a_{11}x_1^2 + 2a_{12}x_1x_2 + a_{22}x_2^2 + b_1x_1 + b_2x_2 + c f(x1,x2)=a11x12+2a12x1x2+a22x22+b1x1+b2x2+c

其中, A = [ a 11 a 12 a 12 a 22 ] A = [a11a12a12a22]

[a11a12a12a22]
A=[a11a12a12a22](注意 A A A 是对称的,所以 a 12 = a 21 a_{12} = a_{21} a12=a21), b = [ b 1 b 2 ] \mathbf{b} = [b1b2]
b=[b1b2]

这个二次函数非常灵活,可以通过调整矩阵 A A A、向量 b \mathbf{b} b 和标量 c c c 来表示各种不同类型的二次曲面(在二维空间中为抛物线或椭圆等)。

示例

假设我们有一个具体的二次函数,其参数如下:

A = [ 1 0 0 2 ] , b = [ − 1 3 ] , c = 2 A = [1002]

, \quad \mathbf{b} = [13]
, \quad c = 2 A=[1002],b=[13],c=2

则对应的二次函数为:

f ( x 1 , x 2 ) = x 1 2 + 2 x 2 2 − x 1 + 3 x 2 + 2 f(x_1, x_2) = x_1^2 + 2x_2^2 - x_1 + 3x_2 + 2 f(x1,x2)=x12+2x22x1+3x2+2

这个函数描述了一个在二维空间中的特定抛物线或椭圆(具体形状取决于 A A A 的特征值)。通过计算或绘图,我们可以进一步分析这个函数的性质,如最小值、最大值、对称轴等。

向量输入的二次函数在数学和工程领域非常常见,特别是在优化、物理建模和机器学习中。下面,我将给出几个具体的例题和计算步骤,以帮助你更好地理解这类函数。

例题 1: 二次型函数的最小值

假设有一个二维向量 x = [ x 1 , x 2 ] T \mathbf{x} = [x_1, x_2]^T x=[x1,x2]T,以及一个二次型函数

f ( x ) = x T A x f(\mathbf{x}) = \mathbf{x}^T A \mathbf{x} f(x)=xTAx

其中,

A = [ 2 1 1 2 ] A = [2112]

A=[2112]

我们需要找到这个函数的最小值。

  1. 确认矩阵 A A A 是正定的:在这个例子中, A A A 的所有特征值都是正的(可以通过计算特征多项式并求解得到),因此 A A A 是正定的。正定矩阵意味着函数 f ( x ) f(\mathbf{x}) f(x) 有一个全局最小值。

  2. 找到最小值点:对于正定二次型,最小值出现在梯度为零的点。计算梯度 ∇ f ( x ) \nabla f(\mathbf{x}) f(x),得到

    ∇ f ( x ) = 2 A x = [ 4 x 1 + 2 x 2 2 x 1 + 4 x 2 ] \nabla f(\mathbf{x}) = 2A\mathbf{x} = [4x1+2x22x1+4x2]

    f(x)=2Ax=[4x1+2x22x1+4x2]

    ∇ f ( x ) = 0 \nabla f(\mathbf{x}) = \mathbf{0} f(x)=0,解得 x = 0 \mathbf{x} = \mathbf{0} x=0

  3. 计算最小值:将 x = 0 \mathbf{x} = \mathbf{0} x=0 代入原函数,得到 f ( 0 ) = 0 f(\mathbf{0}) = 0 f(0)=0

例题 2: 带线性项和常数项的二次函数

考虑一个二维向量 x = [ x 1 , x 2 ] T \mathbf{x} = [x_1, x_2]^T x=[x1,x2]T,以及一个更一般的二次函数

f ( x ) = x T A x + b T x + c f(\mathbf{x}) = \mathbf{x}^T A \mathbf{x} + \mathbf{b}^T \mathbf{x} + c f(x)=xTAx+bTx+c

其中,

A = [ 1 0 0 1 ] , b = [ − 2 3 ] , c = 1 A = [1001]

, \quad \mathbf{b} = [23]
, \quad c = 1 A=[1001],b=[23],c=1

我们需要找到这个函数的最小值(或最大值,但在这个例子中由于 A A A 是正定的,所以只有最小值)。

  1. 完成平方:首先,我们可以尝试将函数重写为完全平方的形式,但这通常不是必需的,因为我们可以直接通过求梯度来找到极值点。不过,为了说明,我们可以将 b T x \mathbf{b}^T \mathbf{x} bTx 项与 A A A 合并,但这会引入额外的项。

  2. 求梯度:计算梯度 ∇ f ( x ) \nabla f(\mathbf{x}) f(x)

    ∇ f ( x ) = 2 A x + b = [ 2 x 1 − 2 2 x 2 + 3 ] \nabla f(\mathbf{x}) = 2A\mathbf{x} + \mathbf{b} = [2x122x2+3]

    f(x)=2Ax+b=[2x122x2+3]

  3. 找到极值点:令 ∇ f ( x ) = 0 \nabla f(\mathbf{x}) = \mathbf{0} f(x)=0,解得 x 1 = 1 , x 2 = − 3 2 x_1 = 1, x_2 = -\frac{3}{2} x1=1,x2=23

  4. 计算极值:将 x 1 = 1 , x 2 = − 3 2 x_1 = 1, x_2 = -\frac{3}{2} x1=1,x2=23 代入原函数,计算得到最小值。

    f ( 1 , − 3 2 ) = 1 2 + 0 + ( − 2 ⋅ 1 + 3 ⋅ ( − 3 2 ) ) + 1 = 1 − 2 − 9 2 + 1 = − 9 2 f\left(1, -\frac{3}{2}\right) = 1^2 + 0 + \left(-2 \cdot 1 + 3 \cdot \left(-\frac{3}{2}\right)\right) + 1 = 1 - 2 - \frac{9}{2} + 1 = -\frac{9}{2} f(1,23)=12+0+(21+3(23))+1=1229+1=29

注意:在第二个例题中,我跳过了将函数重写为完全平方的步骤,因为这通常不是求解这类问题的必要步骤。直接求梯度并找到梯度为零的点通常更为直接和有效。

正则化概述

1. 定义

正则化(Regularization)是机器学习、统计学和数学中常用的一种技术,旨在解决模型过拟合问题,提高模型的泛化能力。在线性代数理论中,正则化常用于处理不适定问题,即那些由于条件数过大而导致解不稳定的线性方程组。在机器学习中,正则化通过在模型的损失函数中添加一个正则项(也称为惩罚项)来实现,这个正则项通常基于模型参数的大小,以限制模型参数的规模,从而避免模型过于复杂而学习到训练数据中的噪声。

2. 方法

正则化的方法多种多样,但最常见和广泛使用的是以下几种:

  • L1正则化(Lasso)

    • 定义:通过在损失函数中添加模型参数的绝对值之和作为正则项,即 λ ∑ i = 1 n ∣ w i ∣ \lambda \sum_{i=1}^{n}|w_i| λi=1nwi,其中 λ \lambda λ是正则化系数, w i w_i wi是模型参数。
    • 效果:L1正则化倾向于使一些参数变为零,从而达到特征选择的效果,并减少模型复杂度。这种特性使得L1正则化在需要稀疏解的场景下非常有用。
    • 应用:适用于特征数量较多,且需要进行特征选择的场景。
  • L2正则化(Ridge)

    • 定义:通过在损失函数中添加模型参数的平方和作为正则项,即 1 2 λ ∑ i = 1 n w i 2 \frac{1}{2}\lambda \sum_{i=1}^{n}w_i^2 21λi=1nwi2
    • 效果:L2正则化倾向于使所有参数都较小,但没有明确地将某些参数设置为零。它通过对参数的平方进行惩罚,使得模型参数更加平滑,从而避免过拟合。
    • 应用:适用于大多数需要防止过拟合的场景,特别是对异常值较为鲁棒。
  • Elastic Net正则化

    • 定义:Elastic Net正则化是L1正则化和L2正则化的结合,即同时添加模型参数的绝对值之和与平方和作为正则项。
    • 效果:Elastic Net正则化既可以进行特征选择(类似于L1正则化),又可以实现平滑效果(类似于L2正则化),从而在处理复杂数据集时更加灵活。
    • 应用:适用于需要同时考虑特征选择和参数平滑的场景。
  • Dropout正则化

    • 定义:Dropout正则化是一种在神经网络训练过程中随机丢弃部分神经元的方法。具体来说,在每次迭代中,以一定的概率将神经网络中的部分神经元置零,然后仅使用剩余的神经元进行前向传播和反向传播。
    • 效果:Dropout正则化通过减少神经元之间的依赖关系,迫使网络学习到更加鲁棒的特征表示,从而防止过拟合。
    • 应用:广泛应用于深度神经网络的训练中,特别是在图像识别和自然语言处理等领域。
  • 其他正则化方法

    • 除了上述几种常见的正则化方法外,还有数据增强(如旋转、翻转、裁剪等)、早停法(Early Stopping)、权重衰减(Weight Decay,与L2正则化类似但实现方式不同)等正则化技术。这些方法通过不同的方式增加模型训练过程中的数据可变性或限制模型参数的规模,从而防止过拟合。

综上所述,正则化是机器学习中一种重要的技术手段,通过引入额外的约束条件来限制模型参数的规模或复杂度,从而防止模型在训练数据上过度拟合,提高模型的泛化能力。不同的正则化方法适用于不同的场景和需求,选择合适的正则化方法对于提高模型性能具有重要意义。

正则化算法

正则化(Regularization)是机器学习中的一种技术,用于防止模型过拟合,提高模型的泛化能力。它通过在损失函数中添加一个正则项(惩罚项)来实现,这个正则项通常基于模型参数的大小。下面我将详细解释正则化的计算和给出一个具体的例子。

正则化的计算

正则化的计算主要涉及到损失函数和正则项的结合。在机器学习中,我们通常需要优化一个损失函数,该函数衡量了模型预测值与真实值之间的差异。为了防止模型过拟合,我们会在损失函数中添加一个正则项,以惩罚过大的模型参数。

通用形式

正则化的一般形式可以表示为:

Regularized Loss = Loss Function + λ ⋅ Regularization Term \text{Regularized Loss} = \text{Loss Function} + \lambda \cdot \text{Regularization Term} Regularized Loss=Loss Function+λRegularization Term

其中, Loss Function \text{Loss Function} Loss Function 是原始的损失函数, Regularization Term \text{Regularization Term} Regularization Term 是正则项, λ \lambda λ 是正则化系数,用于控制正则化的强度。

L1正则化和L2正则化
  • L1正则化(Lasso):正则项为模型参数的绝对值之和。

L1 Regularization Term = λ ∑ i = 1 n ∣ w i ∣ \text{L1 Regularization Term} = \lambda \sum_{i=1}^{n} |w_i| L1 Regularization Term=λi=1nwi

  • L2正则化(Ridge):正则项为模型参数的平方和。

L2 Regularization Term = 1 2 λ ∑ i = 1 n w i 2 \text{L2 Regularization Term} = \frac{1}{2} \lambda \sum_{i=1}^{n} w_i^2 L2 Regularization Term=21λi=1nwi2

例子:线性回归中的L2正则化
损失函数

假设我们有一个线性回归模型,其损失函数为均方误差(MSE):

Loss Function = 1 N ∑ i = 1 N ( y i − ( β 0 + β 1 x i ) ) 2 \text{Loss Function} = \frac{1}{N} \sum_{i=1}^{N} (y_i - (\beta_0 + \beta_1 x_i))^2 Loss Function=N1i=1N(yi(β0+β1xi))2

其中, N N N 是样本数量, y i y_i yi 是真实值, x i x_i xi 是特征值, β 0 \beta_0 β0 β 1 \beta_1 β1 是模型参数。

为了防止过拟合,我们在损失函数中添加L2正则项:

Regularized Loss = 1 N ∑ i = 1 N ( y i − ( β 0 + β 1 x i ) ) 2 + 1 2 λ ( β 0 2 + β 1 2 ) \text{Regularized Loss} = \frac{1}{N} \sum_{i=1}^{N} (y_i - (\beta_0 + \beta_1 x_i))^2 + \frac{1}{2} \lambda (\beta_0^2 + \beta_1^2) Regularized Loss=N1i=1N(yi(β0+β1xi))2+21λ(β02+β12)

在优化这个正则化后的损失函数时,我们需要找到使损失最小的 β 0 \beta_0 β0 β 1 \beta_1 β1。这通常通过梯度下降等优化算法来实现。

计算步骤
  1. 初始化参数:随机初始化 β 0 \beta_0 β0 β 1 \beta_1 β1
  2. 计算梯度:根据正则化后的损失函数计算梯度。
  3. 更新参数:使用梯度下降算法更新 β 0 \beta_0 β0 β 1 \beta_1 β1
  4. 重复:重复步骤2和3,直到满足停止条件(如达到最大迭代次数或损失函数值的变化小于某个阈值)。
结论

正则化通过在损失函数中添加一个基于模型参数大小的惩罚项来防止过拟合。L1正则化和L2正则化是两种常见的正则化方法,它们分别通过添加模型参数的绝对值之和和平方和作为正则项来实现。在实际应用中,我们可以根据具体问题和数据特性选择合适的正则化方法。

L1正则化

L1正则化(也称为Lasso正则化)是一种常用的正则化方法,主要用于解决高维数据和稀疏特征学习等问题。下面将详细解释L1正则化的算法与计算。

算法原理
  • L1正则化是在损失函数中添加模型参数的绝对值之和作为正则化项。其数学公式可以表示为:
    Loss L1 = Loss data + λ ∑ i = 1 n ∣ w i ∣ \text{Loss}_{\text{L1}} = \text{Loss}_{\text{data}} + \lambda \sum_{i=1}^{n} |w_i| LossL1=Lossdata+λi=1nwi

其中, Loss data \text{Loss}_{\text{data}} Lossdata 是模型在训练数据上的损失, λ \lambda λ 是正则化参数,用于控制正则化的强度, w i w_i wi 是模型的参数, n n n 是参数的数量。

  • L1正则化的核心算法原理是通过引入L1正则项,将原始优化问题转换为一个带有L1正则项的优化问题。具体来说,我们需要解决以下优化问题:

min ⁡ w 1 2 m ∑ i = 1 m ( y i − f ( x i ; w ) ) 2 + λ ∑ j = 1 n ∣ w j ∣ \min_{w} \frac{1}{2m} \sum_{i=1}^{m} (y_i - f(x_i; w))^2 + \lambda \sum_{j=1}^{n} |w_j| wmin2m1i=1m(yif(xi;w))2+λj=1nwj

其中, m m m 是训练样本的数量, y i y_i yi 是样本的标签, x i x_i xi 是样本的特征, f ( x i ; w ) f(x_i; w) f(xi;w) 是模型的预测函数, λ \lambda λ 是正则化参数。

L1正则化(也称为Lasso正则化)是一种在机器学习中常用的正则化技术,旨在通过向损失函数中添加模型参数的绝对值之和作为惩罚项,来限制模型复杂度,防止过拟合,并提高模型的泛化能力。下面详细解释L1正则化的算法与计算。

L1正则化的算法

L1正则化的算法通常与模型的优化算法(如梯度下降、坐标下降等)结合使用。以下以梯度下降算法为例,说明L1正则化的计算过程。

1. 梯度计算

在梯度下降算法中,需要计算损失函数关于每个参数的梯度。对于L1正则化,由于正则项包含绝对值操作,导致损失函数在参数为零处不可导。因此,在实际计算中,通常采用次梯度(subgradient)或采用其他优化技术(如坐标下降)来处理不可导点。

对于L1正则化项 λ ∑ i = 1 n ∣ w i ∣ \lambda \sum_{i=1}^{n} |w_i| λi=1nwi,当 w i > 0 w_i > 0 wi>0 时,其梯度为 λ \lambda λ;当 w i < 0 w_i < 0 wi<0 时,其梯度为 − λ -\lambda λ;当 w i = 0 w_i = 0 wi=0 时,其梯度可以是 [ − λ , λ ] [-\lambda, \lambda] [λ,λ] 中的任意值(因为绝对值函数在0点不可导),但在实践中通常选择0或根据具体情况进行处理。

2. 参数更新

在得到每个参数的梯度后,根据梯度下降算法进行参数更新。对于第 i i i 个参数 w i w_i wi,其更新公式为:

w i : = w i − α ( ∂ Loss data ∂ w i + λ ⋅ sgn ( w i ) ) w_i := w_i - \alpha \left( \frac{\partial \text{Loss}_{\text{data}}}{\partial w_i} + \lambda \cdot \text{sgn}(w_i) \right) wi:=wiα(wiLossdata+λsgn(wi))

其中, α \alpha α 是学习率,用于控制参数更新的步长; ∂ Loss data ∂ w i \frac{\partial \text{Loss}_{\text{data}}}{\partial w_i} wiLossdata 是原始损失函数关于 w i w_i wi 的梯度; sgn ( w i ) \text{sgn}(w_i) sgn(wi) 是符号函数,当 w i > 0 w_i > 0 wi>0 时为1,当 w i < 0 w_i < 0 wi<0 时为-1,当 w i = 0 w_i = 0 wi=0 时通常为0(但需注意,由于绝对值函数在0点不可导,这里的处理可能因具体实现而异)。

L1正则化的特点
  1. 稀疏性:L1正则化倾向于使一些参数变为零,从而产生稀疏的权重矩阵。这有助于进行特征选择,即自动剔除那些对模型贡献不大的特征。
  2. 鲁棒性:由于L1正则化对异常值不那么敏感(与L2正则化相比),因此它在某些情况下可以提供更好的鲁棒性。
  3. 计算复杂度:L1正则化的计算相对简单,但在处理大规模数据集时,由于需要处理绝对值操作和可能的不可导点,其计算复杂度可能会增加。
总结

L1正则化是一种有效的正则化技术,通过向损失函数中添加模型参数的绝对值之和作为惩罚项,来限制模型复杂度、防止过拟合,并提高模型的泛化能力。其算法通常与模型的优化算法结合使用,通过计算梯度并更新参数来实现。L1正则化具有稀疏性、鲁棒性等特点,在机器学习中有着广泛的应用。

注意事项
  • 在实际应用中,需要选择合适的正则化参数 λ \lambda λ,以平衡模型的拟合能力和泛化能力。
  • 由于L1正则化在0处不可导,因此在实现时需要注意处理这一点,通常的做法是在 w i = 0 w_i = 0 wi=0 时使用未经正则化的更新方程。
  • L1正则化的计算复杂度相对较高,因为它涉及到对每个参数的绝对值运算和符号函数的判断。然而,随着计算技术的发展,这一问题已经得到了较好的解决。

L1正则化(也称为Lasso正则化)是机器学习中常用的一种正则化方法,它通过向损失函数中添加模型参数的绝对值之和作为正则项,来限制模型复杂度,防止过拟合,并提高模型的泛化能力。下面将通过一个详细的例子和例题来解释L1正则化的工作原理。

例子1

假设我们有一个简单的线性回归模型,其目标是预测房屋价格(y)与房屋面积(x)之间的关系。模型可以表示为:

y = β 0 + β 1 x y = \beta_0 + \beta_1 x y=β0+β1x

其中, β 0 \beta_0 β0 是截距项, β 1 \beta_1 β1 是斜率项(即我们感兴趣的参数)。

原始损失函数

在没有正则化的情况下,我们通常使用均方误差(MSE)作为损失函数来评估模型的性能:

Loss data = 1 N ∑ i = 1 N ( y i − ( β 0 + β 1 x i ) ) 2 \text{Loss}_{\text{data}} = \frac{1}{N} \sum_{i=1}^{N} (y_i - (\beta_0 + \beta_1 x_i))^2 Lossdata=N1i=1N(yi(β0+β1xi))2

其中, N N N 是样本数量, y i y_i yi 是第 i i i 个样本的真实标签, x i x_i xi 是第 i i i 个样本的特征值。

L1正则化损失函数

为了应用L1正则化,我们在损失函数中添加了一个正则项,该正则项是参数绝对值之和的线性组合:

Loss L1 = Loss data + λ ∑ j = 1 p ∣ β j ∣ \text{Loss}_{\text{L1}} = \text{Loss}_{\text{data}} + \lambda \sum_{j=1}^{p} |\beta_j| LossL1=Lossdata+λj=1pβj

在本例中,由于我们只关注斜率项 β 1 \beta_1 β1(假设截距项 β 0 \beta_0 β0 不受正则化影响,这在某些情况下是合理的,但并非总是如此),因此正则项简化为 λ ∣ β 1 ∣ \lambda |\beta_1| λβ1。于是,L1正则化后的损失函数为:

Loss L1 = 1 2 N ∑ i = 1 N ( y i − ( β 0 + β 1 x i ) ) 2 + λ ∣ β 1 ∣ \text{Loss}_{\text{L1}} = \frac{1}{2N} \sum_{i=1}^{N} (y_i - (\beta_0 + \beta_1 x_i))^2 + \lambda |\beta_1| LossL1=2N1i=1N(yi(β0+β1xi))2+λβ1

参数更新

在训练过程中,我们使用梯度下降(或其他优化算法)来更新模型的参数。对于L1正则化,由于正则项包含绝对值操作,导致损失函数在参数为零处不可导。因此,在实际计算中,通常采用次梯度(subgradient)或采用其他优化技术(如坐标下降)来处理不可导点。

对于 β 1 \beta_1 β1 的更新,其梯度(或次梯度)为:

∂ Loss L1 ∂ β 1 = 1 N ∑ i = 1 N − ( y i − ( β 0 + β 1 x i ) ) x i + λ ⋅ sgn ( β 1 ) \frac{\partial \text{Loss}_{\text{L1}}}{\partial \beta_1} = \frac{1}{N} \sum_{i=1}^{N} -(y_i - (\beta_0 + \beta_1 x_i)) x_i + \lambda \cdot \text{sgn}(\beta_1) β1LossL1=N1i=1N(yi(β0+β1xi))xi+λsgn(β1)

其中, sgn ( β 1 ) \text{sgn}(\beta_1) sgn(β1) 是符号函数,当 β 1 > 0 \beta_1 > 0 β1>0 时为1,当 β 1 < 0 \beta_1 < 0 β1<0 时为-1,当 β 1 = 0 \beta_1 = 0 β1=0 时通常为0(但需注意,由于绝对值函数在0点不可导,这里的处理可能因具体实现而异)。

然后,使用梯度下降算法更新 β 1 \beta_1 β1

β 1 : = β 1 − α ∂ Loss L1 ∂ β 1 \beta_1 := \beta_1 - \alpha \frac{\partial \text{Loss}_{\text{L1}}}{\partial \beta_1} β1:=β1αβ1LossL1

其中, α \alpha α 是学习率。

例子2

假设我们有一组数据点,目标是通过线性回归模型拟合这些数据点,并引入L1正则化来防止过拟合。具体步骤如下:

  1. 定义损失函数

    首先,定义带有L1正则项的损失函数:

Loss L1 = 1 2 m ∑ i = 1 m ( y i − ( w x i + b ) ) 2 + λ ∣ w ∣ \text{Loss}_{\text{L1}} = \frac{1}{2m} \sum_{i=1}^{m} (y_i - (wx_i + b))^2 + \lambda |w| LossL1=2m1i=1m(yi(wxi+b))2+λw

  1. 初始化参数

    随机初始化权重参数 w w w和偏置项 b b b

  2. 梯度下降优化

    使用梯度下降算法来迭代更新参数。对于权重参数 w w w,其梯度为:

∂ Loss L1 ∂ w = 1 m ∑ i = 1 m ( − x i ( y i − ( w x i + b ) ) ) + λ ⋅ sgn ( w ) \frac{\partial \text{Loss}_{\text{L1}}}{\partial w} = \frac{1}{m} \sum_{i=1}^{m} (-x_i(y_i - (wx_i + b))) + \lambda \cdot \text{sgn}(w) wLossL1=m1i=1m(xi(yi(wxi+b)))+λsgn(w)

其中, sgn ( w ) \text{sgn}(w) sgn(w) 是符号函数,当 w > 0 w > 0 w>0时为1,当 w < 0 w < 0 w<0时为-1,当 w = 0 w = 0 w=0时通常为0(但需注意,由于绝对值函数在0点不可导,这里的处理可能因具体实现而异)。

然后,根据梯度下降公式更新 w w w b b b

w : = w − α ∂ Loss L1 ∂ w w := w - \alpha \frac{\partial \text{Loss}_{\text{L1}}}{\partial w} w:=wαwLossL1

b : = b − α ∂ Loss L1 ∂ b b := b - \alpha \frac{\partial \text{Loss}_{\text{L1}}}{\partial b} b:=bαbLossL1

其中, α \alpha α 是学习率,用于控制参数更新的步长。

  1. 迭代直至收敛

    重复步骤3,直到满足停止条件(如损失函数值不再显著下降,或达到预设的迭代次数)。

  2. 结果分析

    检查最终得到的权重参数 w w w和偏置项 b b b。由于L1正则化的作用,一些 w w w的值可能会变为0,表明对应的特征对模型的影响较小,被模型自动忽略。

通过以上例题,我们可以看到L1正则化如何在线性回归模型中引入稀疏性,从而帮助防止过拟合并提高模型的泛化能力。在实际应用中,L1正则化也被广泛用于其他类型的机器学习模型,如逻辑回归、神经网络等。

L2正则化

L2正则化(也称为权重衰减、岭回归或Tikhonov正则化)是一种在机器学习中广泛使用的技术,特别是用于减少模型的复杂度,防止过拟合,并提高模型的泛化能力。在深度学习中,L2正则化通过向损失函数中添加一个正则化项来实现,这个正则化项是模型权重的平方和的一个比例因子。

原理

对于线性模型,假设我们的模型预测函数为 y ^ = w T x + b \hat{y} = w^T x + b y^=wTx+b,其中 w w w 是权重向量, x x x 是输入特征向量, b b b 是偏置项, y ^ \hat{y} y^ 是预测值。没有正则化的损失函数(如均方误差)可以表示为:

L ( w , b ) = 1 N ∑ i = 1 N ( y ^ i − y i ) 2 L(w, b) = \frac{1}{N} \sum_{i=1}^{N} (\hat{y}_i - y_i)^2 L(w,b)=N1i=1N(y^iyi)2

其中 N N N 是样本数量, y i y_i yi 是真实值。

加入L2正则化后,损失函数变为:

L ( w , b ) = 1 N ∑ i = 1 N ( y ^ i − y i ) 2 + λ 2 N ∑ j w j 2 L(w, b) = \frac{1}{N} \sum_{i=1}^{N} (\hat{y}_i - y_i)^2 + \frac{\lambda}{2N} \sum_{j} w_j^2 L(w,b)=N1i=1N(y^iyi)2+2Nλjwj2

其中 λ \lambda λ 是正则化强度(或称为超参数),用于控制正则化项对损失函数的影响程度。权重 w w w 的平方和(不包括偏置项 b b b,因为偏置项通常不被正则化)被添加到损失函数中,这鼓励权重向量 w w w 的值趋于零,但并非完全为零,因为正则化项和原始损失项之间存在权衡。

优点
  1. 减少过拟合:通过惩罚大的权重值,L2正则化可以减少模型的复杂度,从而帮助防止过拟合。
  2. 提高泛化能力:通过降低模型对训练数据的特定噪声的敏感度,L2正则化可以提高模型在未见过的数据上的性能。
  3. 数学上的便利性:L2正则化项是可微的,这使得它易于与基于梯度的优化算法(如随机梯度下降)一起使用。
应用

在深度学习框架中,如TensorFlow和PyTorch,L2正则化可以通过在优化器中添加权重衰减项来实现,或者通过在模型定义时直接在权重上应用正则化项来实现。

例如,在PyTorch中,可以在优化器(如SGD)的构造函数中通过weight_decay参数来指定L2正则化的强度:

optimizer = torch.optim.SGD(model.parameters(), lr=0.01, weight_decay=1e-5)
  • 1

这里,weight_decay参数实际上就是L2正则化项的系数 $ \frac{\lambda}{2} $(注意PyTorch的实现中可能有一个2的因子差异,具体取决于实现细节)。

L2正则化是机器学习和深度学习中常用的一种正则化方法,它通过向损失函数中添加一个与模型权重平方和成正比的项来限制模型复杂度,防止过拟合。以下是关于L2正则化的计算、例子和例题的详细说明。

L2正则化的计算

在机器学习中,L2正则化的损失函数通常表示为:

L ( w , b ) = Cost ( w , b ) + λ 2 n ∑ j w j 2 L(w, b) = \text{Cost}(w, b) + \frac{\lambda}{2n} \sum_{j} w_j^2 L(w,b)=Cost(w,b)+2nλjwj2

其中:

  • L ( w , b ) L(w, b) L(w,b) 是带有L2正则化的总损失函数。
  • Cost ( w , b ) \text{Cost}(w, b) Cost(w,b) 是原始的损失函数,如均方误差、交叉熵等。
  • λ \lambda λ 是正则化系数,用于控制正则化的强度。
  • n n n 是样本数量,但在某些实现中可能省略(直接对权重向量应用正则化),或者将其视为1(特别是在批量梯度下降中)。
  • w j w_j wj 是模型中的权重参数。
  • b b b 是偏置项,通常不被正则化。
例子

假设我们有一个简单的线性回归模型,目标是最小化预测值与真实值之间的均方误差。在没有正则化的情况下,损失函数为:

MSE = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 = 1 n ∑ i = 1 n ( y i − ( w x i + b ) ) 2 \text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 = \frac{1}{n} \sum_{i=1}^{n} (y_i - (wx_i + b))^2 MSE=n1i=1n(yiy^i)2=n1i=1n(yi(wxi+b))2

加入L2正则化后,损失函数变为:

L ( w , b ) = 1 n ∑ i = 1 n ( y i − ( w x i + b ) ) 2 + λ 2 n w 2 L(w, b) = \frac{1}{n} \sum_{i=1}^{n} (y_i - (wx_i + b))^2 + \frac{\lambda}{2n} w^2 L(w,b)=n1i=1n(yi(wxi+b))2+2nλw2

注意,在这个例子中,我们假设只有一个权重参数 w w w(为了简化说明)。在实际应用中,模型可能包含多个权重参数。

例题

例题:给定一组数据点 ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x n , y n ) (x_1, y_1), (x_2, y_2), \ldots, (x_n, y_n) (x1,y1),(x2,y2),,(xn,yn) 和一个线性回归模型 y ^ = w x + b \hat{y} = wx + b y^=wx+b,使用梯度下降法结合L2正则化来训练该模型。

  1. 初始化参数:随机初始化权重 w w w 和偏置 b b b

  2. 计算梯度

    • 对于权重 w w w,其梯度包括两部分:一部分来自原始损失函数(MSE)的梯度,另一部分来自L2正则化项的梯度。
      ∂ L ∂ w = 2 n ∑ i = 1 n ( y i − ( w x i + b ) ) ( − x i ) + λ n w \frac{\partial L}{\partial w} = \frac{2}{n} \sum_{i=1}^{n} (y_i - (wx_i + b))(-x_i) + \frac{\lambda}{n} w wL=n2i=1n(yi(wxi+b))(xi)+nλw
    • 对于偏置 b b b,其梯度仅来自原始损失函数(因为偏置不被正则化)。
      ∂ L ∂ b = 2 n ∑ i = 1 n ( y i − ( w x i + b ) ) \frac{\partial L}{\partial b} = \frac{2}{n} \sum_{i=1}^{n} (y_i - (wx_i + b)) bL=n2i=1n(yi(wxi+b))
  3. 更新参数:使用学习率 α \alpha α 来更新权重和偏置。
    w ← w − α ∂ L ∂ w w \leftarrow w - \alpha \frac{\partial L}{\partial w} wwαwL
    b ← b − α ∂ L ∂ b b \leftarrow b - \alpha \frac{\partial L}{\partial b} bbαbL

  4. 重复步骤2和3:直到满足某个停止条件(如达到最大迭代次数、损失函数值小于某个阈值等)。

注意:在实际应用中,通常会对数据进行预处理(如归一化),并选择合适的超参数(如学习率 α \alpha α、正则化系数 λ \lambda λ)来训练模型。此外,为了加快训练速度和提高模型性能,还可以使用更高级的优化算法(如Adam、RMSprop等)来替代基本的梯度下降法。

参考文献

1.文心一言
2.《机器学习精讲 基础 算法及应用》

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

闽ICP备14008679号