机器学习基础知识—交叉熵损失函数

1,101 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

我们今天从两个方式来推导出交叉熵损失函数的公式,而且在推导过程中解释为什么交叉熵可以用于分类问题的损失函数。

最大似然估计

在统计学中,最大似然估计(英语:Maximum Likelihood Estimation,简作MLE),也称极大似然估计,是用来估计一个概率模型的参数的一种方法。

KL 散度

之前介绍过 KL 散度用于衡量 2 概率分布之间差距。

DKL(PQ)=iP(i)logP(i)Q(i)D_{KL}(P||Q) = \sum_i P(i) \log \frac{P(i)}{Q(i)}

用于衡量 Q(i)Q(i)P(i)P(i) 之间的距离。那么对于多分布概率,

DKL(P(yixi)P(y^ixi;θ))D_{KL}(P^*(y_i|x_i)||P(\hat{y}_i|x_i;\theta))
  • P(y^ixi;θ)P(\hat{y}_i|x_i;\theta) 表示神经网络对应模型预测数据分布其中 θ\theta 为分布参数,其中xix_i 表示第 i 个样本,可以一张图片,也可以样本,θ\theta 是神经网络的参数,y^\hat{y} 是神经网络给出推测结果
  • P(yixi)P^*(y_i|x_i) 表示数据的真实分布
DKL(P(yixi)P(y^ixi;θ))=iP(yixi)logP(yixi)P(y^ixi;θ)D_{KL}(P^*(y_i|x_i)||P(\hat{y}_i|x_i;\theta)) = \sum_i P^*(y_i|x_i)\log \frac{P^*(y_i|x_i)}{P(\hat{y}_i|x_i;\theta})

进行进一步化简得到

DKL(PP)=i(P(yixi)[logP(yixi)logP(y^ixi;θ)]D_{KL}(P^*||P) = \sum_i (P^*(y_i|x_i)\left[ \log P^*(y_i|x_i) - \log P(\hat{y}_i|x_i;\theta) \right]
DKL(PP)=i(P(yixi)logP(yixi)i(P(yixi)logP(y^ixi;θ)D_{KL}(P^*||P) = \sum_i (P^*(y_i|x_i) \log P^*(y_i|x_i) - \sum_i (P^*(y_i|x_i)\log P(\hat{y}_i|x_i;\theta)

i(P(yixi)logP(yixi)\sum_i (P^*(y_i|x_i) \log P^*(y_i|x_i) 这一项和 θ\theta 无关,所以可以忽略这。所以最终化简为

arg minθDKL(PP)=i(P(yixi)logP(y^ixi;θ)\argmin_{\theta} D_{KL}(P^*||P) = - \sum_i (P^*(y_i|x_i)\log P(\hat{y}_i|x_i;\theta)

这是通过 KL 散度来推导出

极大似然

就是通过观察结果来推测数据概率分布,假设有密封 box,我们只知道其中装有一定数量的球,其中有 red 球和 blue 球,不过 red 球和 blue 球比例我们并不知道,我们可以从 box 中取球,不过每一次只能取一个球观察后需要放回 box,我们可以从 box 取一定次数,然后通过观察取出球 red 球和 blue 球的比例来推测 box 中 red 球和 blue 球的比例,这就是似然。

假设观察结果为 C1,C2C3C_1,C_2 \cdots C_3 如果硬币试验就是正面还是反面朝上结果,如果 red 或者 blue 球,我们观察到结果联合概率,然后我们是要找到一个概率分布参数让这种观察结果出现概率最大。

P(C1,C2,Cnθ)=i=1nP(Ciθ)P(C_1,C_2,\cdots C_n | \theta) = \prod_{i=1}^n P(C_i|\theta)

我们可以将神经网络来模拟概率分布,这里参数 W,bW,b 决定模型预测概率分布,假设这是一个二分类问题,可以认为是 Dog and Cat 预测结果。

P(y1,y2,,ynW,b)=i=1n(P(yiW,b)P(y_1,y_2,\cdots,y_n |W,b) = \prod_{i=1}^n (P(y_i|W,b)
yi^=NN(W,b)P(y1,y2,,ynW,b)=i=1n(P(yiy^i)\hat{y_i} = NN(W,b)\\ P(y_1,y_2,\cdots,y_n |W,b) = \prod_{i=1}^n (P(y_i|\hat{y}_i)

我们可以通过神经网络模型预测结果 yi^\hat{y_i} 替换掉参数 W,bW,b,因为是 0 1 的伯努利分布,所以可以写成如下形式,加下来就可以由似然推出交叉熵公式。

i=1ny^yi(1y^)1yi\prod_{i=1}^n \hat{y}^{y_i}(1 - \hat{y})^{1 - y_i}
arg maxθi=1nlogy^yi(1y^)1yi\argmax_{\theta} \sum_{i=1}^n \log \hat{y}^{y_i}(1 - \hat{y})^{1 - y_i}
arg maxθi=1nyilogy^+(1yi)log(1y^)\argmax_{\theta} \sum_{i=1}^n y_i \log \hat{y} + (1-y_i)\log(1 - \hat{y})
arg minθi=1nyilogy^+(1yi)log(1y^)- \argmin_{\theta} \sum_{i=1}^n y_i \log \hat{y} + (1-y_i)\log(1 - \hat{y})