Skip to content

最小化交叉熵损失与最大似然估计的推导

摘要

机器学习所使用的交叉熵损失函数与信息论里的交叉熵的推导与思考

正文

信息论中的交叉熵定义

H(p,q)=H(p)+DKL(p∣∣q) H(p,q) = H(p) + D_{KL}(p||q)

在 p,qp,q 是离散分布时, 上式等价为

H(p,q)=−∑i=1Kp(xi)log⁡q(xi) H(p,q) = -\sum^K_{i=1} p(x_i) \log q(x_i)

其中, xix_i 是 p,qp,q 分布共同样本空间的同一个样本点,样本空间的大小为 KK

机器学习中的交叉熵定义

机器学习进行优化时, 会把所有样本的交叉熵值求平均,假设有 NN 个样本

J(w)=1N∑n=1NH(pn,qn) J(w) = \frac{1}{N} \sum^N_{n=1} H(p_n,q_n)
而信息论中的交叉熵仅仅是针对一个样本

因为交叉熵常用于解决分类问题,而分类问题的概率本质是计算类别变量的广义的伯努利分布,所以机器学习采用的是交叉熵的离散形式

CE=−∑i=1Ktilog⁡si CE = -\sum^K_{i=1} t_i \log s_i
其中,tit_i 是期望的类别标签,sis_i 是模型对第 ii 个类别计算得到的 scorescore ,通常在计算损失之前,会用激活函数对 scorescore 加以转换,用 f(si)f(s_i) 替代上式的 sis_i

得到机器学习的交叉熵损失函数

J(w)=−1N∑n=1N∑i=1Ktilog⁡si J(w) = - \frac{1}{N} \sum^N_{n=1} \sum^K_{i=1} t_i \log s_i
因为对于分类问题,假设模型的输出层上只有2个输出结点,而且是一个二分类单标签问题,如果输出层用符号 YY 表示,那么 YY 服从 0−10-1 分布(是二项分布的特例,或称伯努利分布,二元分布),即随机变量 YY 的样本空间有两个样本点(分别对应输出层的两个输出结点),每个样本点就是一个类别。我们希望机器学习模型训练出的分布是某个类别的概率为 11 ,另一个类别的概率为 00 。推广到多分类单标签问题,那么 YY 服从广义的伯努利分布(是多项式分布的特例,或称 CategoryCategory 分布,范畴分布,类别分布,MultinoulliMultinoulli 分布(2012年在《Machine Learning - A Probabilistic Perspective》中正式提出))。

最小化交叉熵损失与最大似然推导

先从一个直观的例子感受最小化交叉熵损失与最大似然的关系

J(w)=−1N∑n=1N[ynlog⁡y^n+(1−yn)log⁡(1−y^n)] J(w)=-\frac{1}{N} \sum_{n=1}^{N}\left[y_{n} \log \hat{y}_{n}+\left(1-y_{n}\right) \log \left(1-\hat{y}_{n}\right)\right]
去掉 1N\frac{1}{N} 并不影响函数的单调性,机器学习任务的也可以是最小化下面的交叉熵损失
J(w)=−∑n=1N[ynlog⁡y^n+(1−yn)log⁡(1−y^n)] J(w)=-\sum_{n=1}^{N}\left[y_{n} \log \hat{y}_{n}+\left(1-y_{n}\right) \log \left(1-\hat{y}_{n}\right)\right]
等价于最大化
J(w)=∑n=1N[ynlog⁡y^n+(1−yn)log⁡(1−y^n)] J(w)=\sum_{n=1}^{N}\left[y_{n} \log \hat{y}_{n}+\left(1-y_{n}\right) \log \left(1-\hat{y}_{n}\right)\right]

这其实就是对伯努利分布求最大似然中的对数似然函数

伯努利分布的最大似然推导

有二元随机变量 Y∈{0,1}Y \in\{0,1\} ,设 p(Y=1)=βp(Y=1) = \beta ,那么它的概率质量函数(PMF)为

P(Y∣β)=βY(1−β)1−Y P(Y \mid \beta)=\beta^{Y}(1-\beta)^{1-Y}

现有 D={y1,y2,…,yN}D=\left\{y_{1}, y_{2}, \ldots, y_{N}\right\} 来自 YY ,样本容量为 NN 的一个样本,似然函数为

P(D∣β)=∏i=1NP(Y=yi∣β)=∏i=1Nβyi(1−β)1−yi P(D \mid \beta)=\prod_{i=1}^{N} P\left(Y=y_{i} \mid \beta\right)=\prod_{i=1}^{N} \beta^{y_{i}}(1-\beta)^{1-y_{i}}

在机器学习中,对 β\beta 的定义为

β=pθ(Y=1∣xi) \beta = p_{\theta}(Y = 1|x_i)
其中,X={x1,…,xN}X=\left\{x_{1}, \ldots, x_{N}\right\} ,xi∈Xx_{i} \in X,XX 是 DD 中每个样本点对应类别的特征的集合。即给定模型参数 θ\theta 和随机变量的样本点 Y=1Y=1 的属性特征 xix_i ( xix_i 可以是一个向量),让模型估计出事件 Y=1Y=1 的概率(同时也是当前伯努利分布的参数)

故上述的似然函数的参数不再是伯努利分布的 β\beta,而是模型的参数 θ\theta,有

P(D∣θ,X)=∏i=1Npθ(Y=1∣xi)yi(1−pθ(Y=1∣xi))1−yi P(D \mid \theta, X)=\prod_{i=1}^{N} p_{\theta}\left(Y=1 \mid x_{i}\right)^{y_{i}}\left(1-p_{\theta}\left(Y=1 \mid x_{i}\right)\right)^{1-y_{i}}

易得对数似然函数

L(θ;X,D)=log⁡∏i=1Npθ(Y=1∣xi)yi(1−pθ(Y=1∣xi))1−yi=∑i=1Nlog⁡pθ(Y=1∣xi)yi(1−pθ(Y=1∣xi))1−yi=∑i=1Nlog⁡pθ(Y=1∣xi)yi+log⁡(1−pθ(Y=1∣xi))1−yi=∑i=1Nyilog⁡pθ(Y=1∣xi)+(1−yi)log⁡(1−pθ(Y=1∣xi)) \begin{aligned} \mathcal{L}(\theta ; X, D) &= \log \prod_{i=1}^{N} p_{\theta}\left(Y=1 \mid x_{i}\right)^{y_{i}}\left(1-p_{\theta}\left(Y=1 \mid x_{i}\right)\right)^{1-y_{i}} \\ &= \sum_{i=1}^{N} \log p_{\theta}\left(Y=1 \mid x_{i}\right)^{y_{i}}\left(1-p_{\theta}\left(Y=1 \mid x_{i}\right)\right)^{1-y_{i}} \\ &= \sum_{i=1}^{N} \log p_{\theta}\left(Y=1 \mid x_{i}\right)^{y_{i}}+\log \left(1-p_{\theta}\left(Y=1 \mid x_{i}\right)\right)^{1-y_{i}} \\ &= \sum_{i=1}^{N} y_{i} \log p_{\theta}\left(Y=1 \mid x_{i}\right)+\left(1-y_{i}\right) \log \left(1-p_{\theta}\left(Y=1 \mid x_{i}\right)\right) \end{aligned}

以下给出最大似然估计与最小化交叉熵损失的转化过程,意在说明在伯努利分布下,最大似然估计与最小化交叉熵损失是同概念的

θp=arg⁡max⁡θ∑i=1Nyilog⁡pθ(Y=1∣xi)+(1−yi)log⁡(1−pθ(Y=1∣xi))=arg⁡max⁡θ∑i=1Nyilog⁡yi^+(1−yi)log⁡(1−yi^)=arg⁡min⁡θ−∑i=1Nyilog⁡yi^+(1−yi)log⁡(1−yi^)=arg⁡min⁡θ∑i=1NH(yi,yi^) \begin{aligned} \theta_{p} &= \arg \max _{\theta} \sum_{i=1}^{N} y_{i} \log p_{\theta}\left(Y=1 \mid x_{i}\right)+\left(1-y_{i}\right) \log \left(1-p_{\theta}\left(Y=1 \mid x_{i}\right)\right) \\ &= \arg \max_{\theta} \sum^N_{i=1}y_i \log \hat{y_i} + (1-y_i) \log (1- \hat{y_i}) \\ &= \arg \min_{\theta} - \sum^N_{i=1}y_i \log \hat{y_i} + (1-y_i) \log (1- \hat{y_i}) \\ &= \arg \min_{\theta} \sum^N_{i=1} H(y_i,\hat{y_i}) \end{aligned}

广义伯努利分布的最大似然推导

单标签多分类任务的类别随机变量只服从多项式分布中试验次数为1的情况,广义伯努利分布( CategoryCategory 分布)对应的是更常见的单标签多分类任务,以下讨论伯努利分布到广义伯努利分布的过渡以及与最大似然估计的关系

有 KK 元类别随机变量 Y∈{1,…,K}Y \in\{1, \ldots, K\} ,且 p(Y=J)=βjp(Y=J)=\beta_{j},概率质量函数库为

P(Y∣B)=∏i=1KβiI(Y=i) P(Y|B)=\prod^K_{i=1} \beta ^{I(Y=i)}_i
如果 Y=iY=i,I(Y=i)=1I(Y=i) = 1 ,否则, I(Y=i)=0I(Y=i)=0

这个概率质量函数之所以看上去有点奇怪,是因为它出现了 IdentityIdentity 函数。而符合我们直觉的是维基百科对广义伯努利分布的另一个PMF定义,即 p(Y=i)=pip(Y=i)=p_i ,即直接根据列联表,获得该事件发生的概率。如果想解释上面晦涩难懂的包含 IdentityIdentity 函数的PMF,可以用严格按照伯努利试验的描述来解释:在进行1次试验中抽到第 jj 个类别,其他概率被抽中0次的概率,即

P(Y=j)=(1,1)…pj−10pj1pj+10… P(Y=j)=(1,1) \ldots p_{j-1}^{0} p_{j}^{1} p_{j+1}^{0} \ldots

D={y1,y2,…,yN}D=\left\{y_{1}, y_{2}, \ldots, y_{N}\right\} 是来自 YY 的,样本容量为 NN,的一个样本,那么似然函数为

P(D∣β)=∏i=1N∏j=1KβjI(yi=j) P(D \mid \beta)=\prod_{i=1}^{N} \prod_{j=1}^{K} \beta_{j}^{I\left(y_{i}=j\right)}
同样地,在机器学习模型中,对上述关于对 β\beta 的定义做出转变
βj=pθ(Y=j∣xi) \beta_{j}=p_{\theta}\left(Y=j \mid x_{i}\right)

X={x1,⋯ ,xN}X=\left\{x_{1}, \cdots, x_{N}\right\},xi∈Xx_i \in X,XX 是 DD 中的每个样本点对应特征的集合

同理上述的似然函数的参数不再是广义伯努利分布的 β1,beta2,⋯ ,βk\beta_1,beta_2,\cdots,\beta_k,而是模型的参数 θ\theta,所以似然函数有

P(D∣θ,X)=∏i=1N∏j=1Kpθ(yi=j∣xi)I(yi=j) P(D \mid \theta, X)=\prod_{i=1}^{N} \prod_{j=1}^{K} p_{\theta}\left(y_{i}=j \mid x_{i}\right)^{I\left(y_{i}=j\right)}

易得对数似然函数

L(θ;X,D)=log⁡∏i=1N∏j=1Kpθ(yi=j∣xi)I(yi=j)=∑i=1Nlog⁡∏j=1Kpθ(yi=j∣xi)I(yi=j)=∑i=1N∑j=1Klog⁡pθ(yi=j∣xi)I(yi=j)=∑i=1N∑j=1KI(yi=j)log⁡pθ(yi=j∣xi) \begin{aligned} \mathcal{L}(\theta ; X, D) &= \log \prod_{i=1}^{N} \prod_{j=1}^{K} p_{\theta}\left(y_{i}=j \mid x_{i}\right)^{I\left(y_{i}=j\right)}\\ &= \sum_{i=1}^{N} \log \prod_{j=1}^{K} p_{\theta}\left(y_{i}=j \mid x_{i}\right)^{I\left(y_{i}=j\right)} \\ &= \sum_{i=1}^{N} \sum_{j=1}^{K} \log p_{\theta}\left(y_{i}=j \mid x_{i}\right)^{I\left(y_{i}=j\right)} \\ &= \sum_{i=1}^{N} \sum_{j=1}^{K} I\left(y_{i}=j\right) \log p_{\theta}\left(y_{i}=j \mid x_{i}\right) \end{aligned}

因为最大化上述式子具有约束条件 ∑i=1Kβi=1\sum^K_{i=1} \beta_i = 1,所以最大化上面的对数似然函数是一个条件极值问题,使用拉格朗日乘数法进行求解,得到下面的关于求解广义伯努利分布下的交叉熵的拉格朗日函数

L~(θ;X,D,λ)=∑i=1N∑j=1KI(yi=j)log⁡pθ(yi=j∣xi)+λ(1−∑kβi) \tilde{\mathcal{L}}(\theta ; X, D, \lambda)=\sum_{i=1}^{N} \sum_{j=1}^{K} I\left(y_{i}=j\right) \log p_{\theta}\left(y_{i}=j \mid x_{i}\right)+\lambda\left(1-\sum_{k} \beta_{i}\right)

在没有使用机器学习模型的前提下,我们只需对分布的参数和 λ\lambda 求偏导就能得到参数的估计值

用模型的参数记号 βj^\hat{\beta_j} 表示 pθ(yi=j∣xi)p_{\theta} (y_i = j | x_i),用 one-hot 向量表示 IdentityIdentity 函数值

得

L(θ;X,D)=∑i=1N∑j=1Kyjlog⁡β^j \mathcal{L}(\theta ; X, D)=\sum_{i=1}^{N} \sum_{j=1}^{K} y_{j} \log \hat{\beta}_{j}
下面同样给出极大似然估计与最小化广义伯努利分布的交叉熵损失函数的转化过程,意在说明在广义伯努利分布下,最大似然估计与最小化交叉熵损失也是同概念的
θp=arg⁡max⁡θ∑i=1N∑j=1Kyjlog⁡β^j=arg⁡min⁡θ−∑i=1N∑j=1Kyjlog⁡β^j=arg⁡min⁡θ∑i=1NH(yj,β^j) \begin{aligned} \theta_{p} &= \arg \max _{\theta} \sum_{i=1}^{N} \sum_{j=1}^{K} y_{j} \log \hat{\beta}_{j} \\ &= \arg \min _{\theta}-\sum_{i=1}^{N} \sum_{j=1}^{K} y_{j} \log \hat{\beta}_{j} \\ &= \arg \min _{\theta} \sum_{i=1}^{N} H\left(y_{j}, \hat{\beta}_{j}\right) \end{aligned}

小结

最小化交叉熵损失函数与最大似然估计之间的等价并非巧合,同是处理信息的公式,只是应用的方向不同