Skip to content

最大似然估计视角下的神经网络

从统计学习的视角看,现代神经网络确实可以理解为一个大规模的最大似然估计(MLE)过程。具体而言,神经网络是一个参数化函数,而最常见的训练方式正是在数据上做最大似然估计。

抛硬币

MLE(最大似然估计)是统计学中最核心的思想之一。

一句话总结:

MLE 从所有可能的模型参数中,选出那个「让观测数据最有可能出现」的参数。

下面,你拿到一枚纹理不均匀的残次硬币。所以你不知道它是否公平。也就是说,抛这枚硬币时,你不知道正面或反面的概率。你想知道:出现正面的概率 pp 是多少。

于是你决定连抛 10 次,得到如下结果:正面 8 次,反面 2 次。

假设这是一枚公平硬币,那么设先验假设 p=0.5p=0.5

在这一先验假设下,出现上述结果的概率为:

P(Dp=0.5)=0.5100.000976P(D|p=0.5) = 0.5^{10} \approx 0.000976

也就是说,如果这是一枚公平硬币,那么抛 10 次得到 8 次正面、2 次反面的概率约为 0.0009760.000976——在概率统计里,这个数显然被视为几乎不可能。所以你能清楚地感觉到这枚硬币不公平。

现在提出另一个假设:假设正面的概率是 p=0.8p=0.8。那么上述结果的概率为:

P(Dp=0.8)=0.88×0.220.0067P(D|p=0.8) = 0.8^8 \times 0.2^2 \approx 0.0067

我们还发现,当 p=0.8p=0.8 时,上述结果的概率最大,达到最大值 0.00670.0067

0.0067>0.0009760.0067 > 0.000976

这说明:如果正面概率是 0.8,那么观察到这份数据的可能性最大。

因此:p^=0.8\hat p=0.8

这就是最大似然估计。

似然函数

给定数据:

D={x1,x2,,xn}D = \{x_1, x_2, \cdots, x_n\}

假设我们有模型参数:θ\theta

似然函数定义为:

L(θ)=P(Dθ)L(\theta) = P(D|\theta)

最大似然估计(MLE)是:

θ^=argmaxθP(Dθ)=argmaxθL(θ)\hat\theta = \arg\max_\theta P(D|\theta) = \arg\max_\theta L(\theta)

很多人初学时感到困惑: 既然 P(Dθ)P(D|\theta)L(θ)L(\theta) 的表达式完全一样,为什么要换一个名字?

关键在于视角不同:

  • 概率 P(Dθ)P(D|\theta) 的视角: 参数 θ\theta 是固定的已知值,而数据 DD 是随机的。 我们问:「在给定参数的情况下,不同的数据结果出现的可能性有多大?」
  • 似然 L(θ)L(\theta) 的视角: 数据 DD 是固定的观测值,而参数 θ\theta 是变化的未知量。 我们问:「在不同的参数取值下,这份观测数据出现的可能性有多大?」

根据条件公式:

P(Dθ)=xiDP(xiθ)P(D|\theta) = \prod_{x_i \in D} P(x_i|\theta)

如果数据 DD 包含很多样本,很多小数相乘会得到一个趋近于零的结果,在计算机里可能导致数值下溢。

于是我们取对数,把乘法变成加法:

(θD)=logP(Dθ)=xiDlogP(xiθ)\ell(\theta|D)= \log P(D|\theta) = \sum_{x_i \in D} \log P(x_i|\theta)

取对数后,数值保持在可接受的范围内,更利于优化。

因此,几乎所有实际训练都在优化:

maxθ(θD)\max_\theta \ell(\theta|D)

这种形式叫作对数似然。

在似然函数中,我们要找到使似然最大的参数 θ^MLE\hat{\theta}_\text{MLE}

求解参数

如果 (θD)\ell(\theta|D) 可微,θ^MLE\hat{\theta}_{\rm MLE} 通常满足:

(θD)θ=0\frac{\partial \ell(\theta|D)}{\partial \theta} = 0

二阶条件保证取到最大值:

2(θD)θ2<0\frac{\partial^2 \ell(\theta|D)}{\partial \theta^2} < 0

以最简单的伯努利分布为例:

  • 数据 xi{0,1}x_i \in \{0,1\}
  • 模型:P(X=1)=p,P(X=0)=1pP(X=1)=p, P(X=0)=1-p

我们有似然函数:

L(pD)=i=1npxi(1p)1xiL(p|D) = \prod_{i=1}^n p^{x_i} (1-p)^{1-x_i}

转化为对数似然:

(pD)=i=1nxilogp+(1xi)log(1p)\ell(p|D) = \sum_{i=1}^n x_i \log p + (1-x_i) \log (1-p)

pp 求导并令其为零:

p=xipnxi1p=0\frac{\partial \ell}{\partial p} = \frac{\sum x_i}{p} - \frac{n-\sum x_i}{1-p} = 0

解得:

p^MLE=i=1nxin\hat{p}_{\rm MLE} = \frac{\sum_{i=1}^n x_i}{n}

在神经网络中,MLE 的参数 θ\theta 对应网络的权重和偏置,通常记为:

θ=W1,b1,W2,b2,,WL,bL\theta = {W_1, b_1, W_2, b_2, \dots, W_L, b_L}

其中 LL 是层数,WiW_i 是第 ii 层的权重矩阵,bib_i 是偏置向量。

换言之:神经网络是一个函数族 fθ(x)f_\theta(x)

它定义了条件概率分布:

Pθ(yx)P_\theta(y|x)

训练神经网络 = 选择使观测数据出现概率最大的参数 θ\theta

θ^MLE=argmaxθiPθ(yixi)\hat{\theta}_{\rm MLE} = \arg\max_\theta \prod_i P_\theta(y_i | x_i)

以分类为例:一个二分类神经网络的输出为:

y^=σ(fθ(x))\hat{y} = \sigma(f_\theta(x))

我们看到,最大化似然可以写成最小化交叉熵损失函数作为代价函数:

θ^MLE=argmaxθiy^iyi(1y^i)1yi\hat{\theta}_{\rm MLE} = \arg\max_\theta \prod_i \hat{y}_i^{y_i} (1-\hat{y}_i)^{1-y_i}

最终得到交叉熵损失:

L(θ)=i[yilogy^i+(1yi)log(1y^i)]L(\theta) = - \sum_i \Big[ y_i \log \hat{y}_i + (1-y_i) \log (1-\hat{y}_i) \Big]

这里的 θ\theta 表示所有权重和偏置。

再以回归为例:假设

yi=fθ(xi)+ϵi,ϵiN(0,σ2)y_i = f_\theta(x_i) + \epsilon_i, \quad \epsilon_i \sim N(0, \sigma^2)

对数似然:

(θ)=12σ2i(yifθ(xi))2+C\ell(\theta) = -\frac{1}{2\sigma^2} \sum_i (y_i - f_\theta(x_i))^2 + C

我们看到,最大似然目标等价于最小化均方误差,其中 θ\theta = 神经网络的权重和偏置。

这里隐含的假设是误差服从高斯分布。如果我们改为假设拉普拉斯分布,MLE 就会导出 MAE 损失。这就解释了为什么不同任务选择不同的损失函数——它们对应着关于数据分布的不同假设。

在神经网络中,最大似然估计就是在所有权重和偏置的组合中,找出最可能让训练数据出现的那一组。

因此,每次我们用梯度下降更新权重时,本质上都在做 MLE 优化。