GAN学习笔记——KL散度、交叉熵、JS散度

这篇博客详细介绍了熵、KL散度、交叉熵和JS散度的概念,强调了它们在概率分布比较中的作用。KL散度衡量分布的接近程度,具有不对称性和非负性;交叉熵类似于KL散度,常用于训练数据分布已知的情况;JS散度是对称的,并限制在[0,1]范围内,常用于GAN中评估生成数据的质量。" 126693124,14058259,小程序开发全攻略:从基础到云开发,"['前端', 'javascript', '微信小程序', '云开发']

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

首先,我们知道, 熵 是用来量化数据中含有的信息量的,其计算公式为:
H=−∑i=1Np(xi)⋅log⁡p(xi)H=-\sum_{i=1}^{N}p(x_{i})\cdot \log p(x_{i})H=i=1Np(xi)logp(xi)


1)KL散度(Kullback–Leibler divergence)
又称KL距离,相对熵,用来比较两个概率分布的接近程度。

假设 p(x)p(x)p(x) 为数据的真实概率分布,q(x)q(x)q(x) 为数据的理论概率分布,计算它们每个取值之间对应的差:
KL(p∣∣q)=∑i=1Np(xi)⋅(log⁡p(xi)−log⁡q(xi))KL(p||q)=\sum_{i=1}^{N}p(x_{i})\cdot \left (\log p(x_{i})-\log q(x_{i}) \right )KL(pq)=i=1

### 关系概述 在机器学习领域,Softmax、KL以及交叉熵紧密关联,在分类任务中扮演着重要角色。Softmax函数用于将模型最后一层的线性输出转换成概率分布形式[^1]。 ```python import numpy as np def softmax(x): e_x = np.exp(x - np.max(x)) return e_x / e_x.sum(axis=0) logits = np.array([2.0, 1.0, 0.1]) probs = softmax(logits) print(probs) ``` ### 数学定义与联系 #### KL (Kullback-Leibler Divergence) KL衡量的是两个概率分布P和Q之间差异的程。其计算方式如下: \[D_{\mathrm{KL}}(P \parallel Q)=\sum_i P(i)\cdot(\log(P(i))-\log(Q(i)))\] 当应用于神经网络时,通常取真实标签的概率分布作为\(P\),而预测得到的概率分布作为\(Q\)。需要注意的是,KL不是对称的距离量方法。 #### 交叉熵 (Cross Entropy) 对于离型随机变量而言,给定真实的概率分布p和估计的概率分布q,则它们之间的交叉熵表示为: \[H(p,q)=-\sum _{{x\in {\mathcal {X}}}}p(x)\,\log q(x).\] 在多类别分类场景下,如果采用one-hot编码的真实标签y和通过softmax获得的预测值s来表达上述公式的话,那么针对单一样本i的交叉熵损失可写作: \[CE(y^{(i)}, s^{(i)})=\sum_j y_j^{(i)} (-\log(s_j^{(i)})).\] 实际上,交叉熵可以视为负对数似然的一个特例,并且经常被用作监督学习中的目标函数之一。 ### 应用实例分析 考虑到实际应用环境的不同需求,选择合适的评估指标至关重要。比如在某些情况下,尽管L2 loss能够有效测量数值差距,但对于处理概率性质的数据来说,KL交叉熵往往更为适宜[^2]。 特别是在构建深学习架构的过程中,为了简化实现并提高效率,很多框架默认集成了`softmax_cross_entropy_with_logits_v2()`这样的API接口,它内部自动完成了从原始得分到最终决策边界的整个流程——先经由softmax映射至合法区间内再求解对应的交叉熵误差项[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值