前言

因为没有深度学习的实践经历,很多理论的知识有些淡忘了,本系列旨在对深度学习过程中一些重难点知识再次梳理。

频率学派认知的线性回归问题——极大似然估计

极大似然估计

极大似然估计(Maximum Likelihood Estimation,MLE)是一种基于频率学派的参数估计方法,其核心思想是在所有可能的参数值中,找到一个使得已观测到的样本数据出现概率最大的参数值。
考虑一个概率模型,其概率密度函数表示为

f(x;θ)f(x; \theta)

,其中

θ\theta

是需要估计的参数,

xx

是观测到的样本数据。
给定样本集

X={x1,x2,...,xn}X = {x_1, x_2, ..., x_n}

,似然函数

L(θ)L(\theta)

定义为所有样本数据在参数

θ\theta

下出现的联合概率:

L(θ)=i=1nf(xi;θ)L(\theta) = \prod_{i=1}^{n} f(x_i; \theta)

极大似然估计值

θ^\hat{\theta}

是使似然函数

L(θ)L(\theta)

最大化的

θ\theta

值:

θ^=argmaxθL(θ)\hat{\theta} = \arg \max_\theta L(\theta)

。为了简化求解过程,通常使用对数似然函数

(θ)=logL(θ)\ell(\theta) = \log L(\theta)

,即:

(θ)=i=1nlogf(xi;θ)\ell(\theta) = \sum_{i=1}^{n} \log f(x_i; \theta)

因此,求极大似然估计值

θ^\hat{\theta}

也可以转化为最大化对数似然函数。

θ^=argmaxθ(θ)\hat{\theta} = \arg \max_\theta \ell(\theta)

最小二乘法和极大似然估计

最小二乘法(Least Sqaure Method, LSM)是线性回归中最常用的参数估计方法之一。它的目标是最小化预测值与实际观察值之间差异的平方和。对于模型

y=Xw+ϵy = Xw + \epsilon

,其中

yy

是因变量,

XX

是设计矩阵,

ww

是系数向量(为了简化问题,

bb

可以合并到

ww

中),

ϵ\epsilon

是误差项,最小二乘法通过求解以下优化问题来估计

ww

w^=argminwi=1n(yixiTw)2\hat{w} = \arg\min_w \sum_{i=1}^{n}(y_i - x_i^Tw)^2

这可以通过求解正规方程(Normal Equation)

XTXw^=XTyX^TX\hat{w} = X^Ty

来实现。最小二乘法的意义是不证自明的。
如前所述,极大似然估计是一种在给定观测数据的条件下,通过最大化似然函数来估计模型参数的方法。在线性回归模型中,如果假设误差项

ϵ\epsilon

遵循正态分布

ϵN(0,σ2I)\epsilon \sim N(0, \sigma^2I)

,那么对于给定的数据

(xi,yi)(x_i, y_i)

,似然函数为:

L(w)=i=1n12πσexp((yixiTw)22σ2)L(w) = \prod_{i=1}^{n}\frac{1}{\sqrt{2\pi}\sigma}exp\left(-\frac{(y_i - x_i^Tw)^2}{2\sigma^2}\right)

对数似然函数为:

logL(w)=n2log(2π)nlogσ12σ2i=1n(yixiTw)2\log L(w) = -\frac{n}{2}\log(2\pi) - n\log\sigma - \frac{1}{2\sigma^2}\sum_{i=1}^{n}(y_i - x_i^Tw)^2

最大化

logL(w)\log L(w)

相当于最小化

i=1n(yixiTw)2\sum_{i=1}^{n}(y_i - x_i^Tw)^2

,这与最小二乘法的目标一致。
事实上,极大似然估计视角下线性回归更贴近一个传统认知上的优化问题。对于任何一个参数

ww

,任意的

xx

都会产生一个

yy

的分布。由此,线性回归问题就变成了,我期待给定的参数

ww

能让

yy

十分可能从上述分布中采集出来,即一个极大似然问题。单纯的认知误差项是不符合直觉的,但倘若从分布去思考,二者的联系便豁然开朗了。然而,必须指出的是:机器学习和统计学习问题都在假定样本误差的前提下进行,某种意义上:采样误差最小的优化过程和极大似然估计是一致的。

Softmax函数和多分类问题

Softmax函数

线性回归通常用于预测连续值,但当我们想要处理分类问题时,可以利用Softmax函数将线性回归模型扩展到多分类问题。本文将介绍Softmax函数的基本概念、损失函数以及求导过程。Softmax函数是一个将任意实数向量转换为概率分布的函数。对于一个给定的实数向量

oo

,Softmax函数定义为:

Softmax(oi)=eoijeoj\text{Softmax}(o_i) = \frac{e^{o_i}}{\sum_{j} e^{o_j}}

其中,

oio_i

是向量

oo

中的第

ii

个元素,分母是所有

eoje^{o_j}

的和,确保了所有输出值的和为1,从而构成一个概率分布。
在多类分类问题中,每个类别都有一个得分,这些得分通过Softmax函数转换为概率。模型的输出是一个概率分布,表示输入属于每个类别的概率。对于一个有

KK

个类别的分类问题,模型输出为:

P(y=kx)=Softmax(ok)=eokj=1KeojP(y=k|x) = \text{Softmax}(o_k) = \frac{e^{o_k}}{\sum_{j=1}^{K} e^{o_j}}

其中,

ok=wkTx+bko_k = w_k^T x + b_k

是类别

kk

的得分,

wkw_k

bkb_k

是模型参数。

损失函数

Softmax回归通常使用交叉熵损失函数(Cross-Entropy Loss),为每个样本定义如下:

Li=k=1Kyiklog(P(y=kxi))L_i = - \sum_{k=1}^{K} y_{ik} \log(P(y=k|x_i))

其中,

yiky_{ik}

是一个指示变量,如果样本

ii

属于类别

kk

,则

yik=1y_{ik}=1

,否则为

00

P(y=kxi)P(y=k|x_i)

是模型预测样本

ii

属于类别

kk

的概率。
对于所有样本,损失函数是每个样本损失

LiL_i

的平均值。
下面,我们使用极大似然估计推到损失函数:
假设我们有一个数据集,其中包含

nn

个独立同分布的样本,每个样本

ii

属于

KK

个类别中的一个。模型预测的概率

P(y=kxi)P(y=k|x_i)

表示给定输入

xix_i

时,样本属于类别

kk

的概率。 对于所有样本,似然函数

LL

是模型对所有观测数据分类正确的联合概率:

L=i=1nP(y=yixi)L = \prod_{i=1}^{n} P(y=y_i|x_i)

在实践中,为了便于计算,通常对似然函数取对数得到对数似然函数:

logL=i=1nlogP(y=yixi)\log L = \sum_{i=1}^{n} \log P(y=y_i|x_i)

在Softmax模型中,

P(y=kxi)P(y=k|x_i)

可以通过Softmax函数计算得到。因此,对数似然函数可以写为:

logL=i=1nlog(eoyij=1Keoj)\log L = \sum_{i=1}^{n} \log \left( \frac{e^{o_{y_i}}}{\sum_{j=1}^{K} e^{o_j}} \right)

其中

oj=wjTxi+bjo_j = w_j^T x_i + b_j

是类别

jj

的得分。
定义损失函数:

l=i=1nyilogP(y=yixi)l = -\sum_{i=1}^{n} y_{i} \log P(y=y_i|x_i)

损失函数的求导

现在,我们要对交叉熵损失函数关于softmax函数的输出

ojo_j

求导。假设对于一个样本

ii

,真实类别是

cc

,则

yiy_i

是一个one-hot向量,其中

yc=1y_c = 1

,而对其他类别

jcj \neq c

yj=0y_j = 0

。 损失函数关于

ojo_j

的偏导数计算如下:

loj=oj(i=1nyilogP(y=yixi))\frac{\partial l}{\partial o_j} = \frac{\partial}{\partial o_j} \left(-\sum_{i=1}^{n} y_i \log P(y=y_i|x_i)\right)

由于

yiy_i

是one-hot编码,我们可以得到简化后的偏导数公式:

loj=yj+softmax(oj)\frac{\partial l}{\partial o_j} = -y_j + softmax(o_{j})

事实上,就是softmax模型分配的概率和实际概率的差值。