损失函数--KL散度与交叉熵

本文深入解析了交叉熵损失函数在逻辑回归模型中的应用,通过信息论和贝叶斯视角阐述了其数学原理,展示了如何利用交叉熵评估模型预测与真实标签的相似度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

损失函数

在逻辑回归建立过程中,我们需要一个关于模型参数的可导函数,并且它能够以某种方式衡量模型的效果。这种函数称为损失函数(loss function)。

损失函数越,则模型的预测效果越。所以我们可以把训练模型问题转化为最小化损失函数的问题。

​ 损失函数有多种,此次介绍分类问题最常用的交叉熵(cross entropy)损失,并从信息论贝叶斯两种视角阐释交叉熵损失的内涵。

K-L散度与交叉熵

  • 随机变量Xk种不同的取值: X 1 , X 2 , X 3 , … … , X k X^1, X^2, X^3 ,…… ,X^k X1,X2,X3Xk。 记X的取值 X i X^i Xi 的概率为p(X= X i X^i Xi) ,简写为P( X i X^i Xi) .

  • 克劳德**·** 香农定义了信息的信息量:

    I ( X = X i ) = log ⁡ 1 p ( X i ) = − log ⁡ p ( X i ) I(X = X^i) = \log \frac{1}{p(X^i)} = - \log p(X^i) I(X=Xi)=logp(Xi)1=logp(Xi)

    注:其中对数可以以任意合理数为底,如 2、e。使用不同的底数所得到的信息量之间相差一个常系数。

    若以2为底,信息量的单位是bit ,I(X= X i X^i Xi )是X = X i X^i Xi 这条信息的自信息量(self-information) .

  • 自信息量I随着概率P( X i X^i Xi)的图像变化如下:

在这里插入图片描述

自信息量背后的含义:信息中事件发生的概率越小,则信息量越大。

举例:假如有人告诉你即将开奖的彩票中奖号码是777777777,这条信息的价值很高,类似事情发生概率极小。假如有人告诉你明天太阳会升起,这件事对你来说价值很低,但是他发生的概率却很高。所以我们会觉得彩票的开奖号信息量很大,太阳升起的信息量较小。

  • 我们令信息源X 取不同的值 x 1 , x 2 , x 3 . . . x k x^1, x^2 , x^3 ... x^k x1,x2,x3...xk 的概率分布分别为 p ( x 1 ) p ( x 2 ) p ( x 3 ) . . . p ( x k ) p(x^1) p(x^2) p(x^3) ... p(x^k) p(x1)p(x2)p(x3)...p(xk) .

  • 定义信息源 X的熵(entropy)为:

    H§ = ∑ i = 1 K P ( x i ) log ⁡ 1 P ( x i ) = − ∑ i = 1 K P ( x i ) log ⁡ P ( x i ) \sum_{i=1}^K P(x^i) \log \frac{1}{P(x^i)} = - \sum_{i=1}^K P(x^i)\log P(x^i) i=1KP(xi)logP(xi)1=i=1KP(xi)logP(xi)

  • 信息源由概率分布p描述,s所以熵是p的函数,熵的概念来自热力学。H§又称平均信息。

  • 根据公式我们可以看出,H§是将X所有取值的自信息量以概率为权重取平均。

  • 对于两个概率分布p和q, 定义p和q的K-L散度(kullback-leibler divergence)是:

    K L D ( p ∣ ∣ q ) = ∑ i = 1 k p ( x i ) log ⁡ p ( x i ) q ( x i ) = − ∑ i = 1 k p ( x i ) log ⁡ q ( x i ) − H ( p ) KLD(p||q) = \sum_{i=1}^k p(x^i) \log \frac{p(x^i)}{q(x^i)} = - \sum_{i=1}^k p(x^i) \log q(x^i) - H(p) KLD(pq)=i=1kp(xi)logq(xi)p(xi)=i=1kp(xi)logq(xi)H(p)

  • K-L散度是 log ⁡ p ( x i ) q ( x i ) \log \frac{p(x^i)}{q(x^i)} logq(xi)p(xi) 在分布p上的期望。(注:KLD(p||q) ≠ \neq = KLD(q||p))

  • 根据上述公式我们可以发现,当 p ( x i ) 和 q ( x i ) p(x^i)和q(x^i) p(xi)q(xi) 相等时, log ⁡ p ( x i ) q ( x i ) = 0 \log \frac{p(x^i)}{q(x^i)} =0 logq(xi)p(xi)=0 所以KLD散度等于0。所以说两个同分布的KLD散度为0,所以我们一般使用KLD描述两个概率分布之间的相似度。

  • 我们定义交叉熵:

    H ( p , q ) = − ∑ i = 1 k p ( x i ) log ⁡ q ( x i ) H(p,q) = - \sum_{i=1}^k p(x^i) \log q(x^i) H(p,q)=i=1kp(xi)logq(xi)

  • 所以根据上述两式,有:

    H ( p , q ) = K L D ( p ∣ ∣ q ) + H ( p ) H(p,q) = KLD(p||q) + H(p) H(p,q)=KLD(pq)+H(p)

  • 分布p和q的交叉熵等于它们的K-L散度加上p的熵。现在假设分布 p p p固定,则 H ( p , q ) H(p,q) H(p,q) K L D ( p ∣ ∣ q ) KLD(p||q) KLD(pq)之间只相差一个常数 H ( p ) H(p) H(p),所以此时 H ( p , q ) H(p,q) H(p,q)也可以被用来描述两个分部之间的相似程度。即: H ( p , q ) H(p,q) H(p,q)越小,p,q越相似。

  1. 对于一个训练样本{ x i , y i {x^i, y^i} xi,yi } 可以标签 y i y^i yi 给出了一个类别的概率分布:

  2. P ( x i ∈ p ) = y i , P ( x i ∈ n ) = 1 − y i , i = 1 , … … , M P(x^i \in p) = y^i , P(x^i \in n) = 1-y^i , i= 1,……,M P(xip)=yiP(xin)=1yi,i=1,M

  3. 我们将逻辑回归模型的输出看做一个分布Q:

  4. Q ( x i ∈ p ) = 1 1 + e − b − W T x i , Q ( x i ∈ n ) = 1 1 + e b + w T x i , i = 1 , … … , M Q(x^i \in p) = \frac{1}{1+e^{-b-W^Tx^i}} , Q(x^i \in n) = \frac{1}{1+e^{b+w^Tx^i}} , i=1,……,M Q(xip)=1+ebWTxi1,Q(xin)=1+eb+wTxi1,i=1,M

  5. 所以我们希望回归模型的准确率尽可能地高,即是希望分布Q与训练集P的分布尽可能地相似,由此我们可以使用交叉熵来描述输出分布于标签分布的相似度,也就是我们所说的损失函数(loss)

l o s s ( w , b ∣ x i , y i ) = − y i log ⁡ 1 1 + e − b − W T x i − ( 1 − y i ) log ⁡ 1 1 + e b + w T x i i = 1 , . . . , M loss(w,b|x^i,y^i) = -y^i\log \frac{1}{1+e^{-b-W^Tx^i}} - (1-y^i)\log\frac{1}{1+e^{b+w^Tx^i}} i= 1,...,M loss(w,bxi,yi)=yilog1+ebWTxi1(1yi)log1+eb+wTxi1i=1,...,M

上式是模型在一个样本的交叉熵,其值越小,预测分布于标签给出分布越相似。

l o s s ( w , b ∣ x i , y i ) = 1 M ∑ i = 1 M ( − y i log ⁡ 1 1 + e − b − W T x i − ( 1 − y i ) log ⁡ 1 1 + e b + w T x i ) i = 1 , . . . , M loss(w,b|x^i,y^i) = \frac{1}{M} \sum_{i=1}^M( -y^i\log \frac{1}{1+e^{-b-W^Tx^i}} - (1-y^i)\log\frac{1}{1+e^{b+w^Tx^i}} )i= 1,...,M loss(w,bxi,yi)=M1i=1M(yilog1+ebWTxi1(1yi)log1+eb+wTxi1)i=1,...,M

上式是样本的平均交叉熵,作为模型的损失函数。

### KL交叉熵损失的区别 #### 定义 在信息论和机器学习领域,熵是衡量不确定性的核心概念。对于离型随机变量 \(X\) ,其概率质量函数为 \(P(x)\),熵定义如下[^2]: \[ H(X) = -\sum_{x \in X} P(x) \log P(x). \] 当涉及到两个概率分布\(P\) 和 \(Q\)时,KL(Kullback-Leibler divergence),也称为相对熵,用于测量这两个分布之间的差异性: \[ D_{KL}(P||Q)=\sum_x{P(x)}\log{\frac{{P(x)}}{{Q(x)}}}. \] 该公式表明了从真实分布 \(P\) 到近似分布 \(Q\) 所需的信息增益。 另一方面,交叉熵则是指使用错误的概率分布来进行编码所需的平均比特数,具体表达式为: \[ H(P,Q)=-\sum_x {P(x)\log Q(x)}. \] 值得注意的是,在某些情况下,交叉熵可视为熵加上KL的结果[^3]. #### 应用场景 在实际的机器学习任务中,这两种量方式有着各自的应用范围: - **交叉熵** 主要应用于监督学习中的分类问题,特别是多类别分类问题。作为一种常用的损失函数交叉熵能够有效地指导神经网络调整权重参数,从而让预测输出更贴近真实的标签分布。通过最小化交叉熵损失,模型试图使自身的预测分布尽可能逼近数据的真实分布[^1]. - **KL** 更多地出现在无监督学习或者半监督学习框架里,尤其是在变分自编码器(VAEs),生成对抗网络(GANs)以及贝叶斯推理等领域中有广泛运用。它主要用于评估并控制潜在空间内的样本分布特性,确保生成的数据具有良好的统计性质;同时也可用于比较不同模型间的性能优劣,提供了一种定量化的评价标准. 综上所述,尽管两者都基于相同的基础——香农熵的概念展开讨论,但在具体的实现形式及其适用场合方面存在着显著差别。 ```python import numpy as np def kl_divergence(p, q): """Calculate Kullback-Leibler divergence between two distributions.""" p = np.asarray(p) q = np.asarray(q) return np.sum(np.where(p != 0, p * np.log(p / q), 0)) def cross_entropy_loss(y_true, y_pred): """Compute the Cross Entropy Loss given true and predicted probability distribution""" epsilon = 1e-12 y_pred_clipped = np.clip(y_pred, epsilon, 1. - epsilon) ce_loss = -np.sum(y_true * np.log(y_pred_clipped)) return ce_loss ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ambrosedream

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值