这是一个基于Obsidian以及Vercel的个人学习知识库

1. 梯度下降关心的是什么?

首先,梯度下降算法本身并不关心损失函数是什么形式。它的工作流程非常“机械”:

  1. 给我一个可微的损失函数 L(θ)
  2. 我计算出 L(θ) 关于参数 θ 的梯度 L(θ)
  3. 我沿着负梯度方向更新 θ

所以,无论是均方误差 (Mean Squared Error, MSE) 还是负对数似然 (Negative Log-Likelihood, NLL),只要它们是可微的,梯度下降都能用它们来优化模型。

2. 均方误差 vs. 负对数似然

我们来仔细看看这两个损失函数:

均方误差 (MSE)

LMSE(θ)=1Nn=1N(ynf(xn,θ))2

负对数似然 (NLL)

LNLL(θ)=n=1Nlogp(yn|xn,θ)

3. 两者何时等价?【关键点】

现在到了最关键的部分。为什么看起来完全不同的两个东西,都能用来做回归任务?

答案是:当我们假设模型的预测误差服从高斯分布(正态分布)时,最小化均方误差就等价于最大化对数似然!

让我们来推导一下:

  1. 做出假设: 我们假设对于一个给定的输入 xn,模型的预测值 f(xn,θ) 是真实值 yn 加上一个服从高斯分布的噪声 ϵ

    yn=f(xn,θ)+ϵ

    其中,ϵN(0,σ2),即噪声的均值为0,方差为 σ2

  2. 写出似然函数: 根据这个假设,给定 xnθyn 的条件概率分布就是一个高斯分布,其均值为模型的预测值 f(xn,θ)

    p(yn|xn,θ)=N(yn|f(xn,θ),σ2)

    根据高斯分布的概率密度函数公式:

    p(yn|xn,θ)=12πσ2exp((ynf(xn,θ))22σ2)
  3. 计算负对数似然 (NLL):

    Ln(θ)=logp(yn|xn,θ)=log(12πσ2exp((ynf(xn,θ))22σ2))

    利用对数性质 log(ab)=loga+logblog(exp(x))=x

    =[log(12πσ2)(ynf(xn,θ))22σ2]=12σ2(ynf(xn,θ))2+log(2πσ2)
  4. 计算总损失:

    LNLL(θ)=n=1NLn(θ)=n=1N[12σ2(ynf(xn,θ))2+log(2πσ2)]=12σ2n=1N(ynf(xn,θ))2+Nlog(2πσ2)
  5. 进行优化: 我们的目标是找到使 LNLL(θ) 最小的参数 θ。观察上式,第二项 Nlog(2πσ2) 是一个与 θ 无关的常数,在求导和优化过程中可以忽略。第一项前面的系数 12σ2 也是一个正的常数。
    因此,最小化 LNLL(θ) 就等价于最小化

    n=1N(ynf(xn,θ))2

    这正是平方误差(或均方误差,只差一个常数因子 1/N

结论

所以,你的疑惑非常有价值,它揭示了机器学习中不同方法背后深层的统计学联系。