IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 熵、KL散度与交叉熵学习笔记 -> 正文阅读

[人工智能]熵、KL散度与交叉熵学习笔记

记录一下遇到交叉熵时的学习笔记,此处为本文主要参考链接

1、熵(Entropy)

对于一个特定事件,它的概率p越小,那它所蕴含的信息量就越大,反之,p越大,表明信息量越小。此外,对于相互独立的事件,信息量可以叠加。熵就是依据对应的期望值对一系列信息量求期望值。
信息熵可以理解为对事件不确定性的测量,熵越大,不确定性也就越大,熵的公式定义为 S ( x ) = ? ∑ i P ( x i ) l o g b P ( x i ) S(x) = -\sum_{i}P(x_i) log_bP(x_i) S(x)=?i?P(xi?)logb?P(xi?)其中:x是消息(或事件),p(x)是x的概率。从公式中可以看出,当概率p等于1时,熵s(x) = 0,符合“p越大,信息量越小”。

2、KL散度(Kullback-Leibler Divergence)

KL散度,用来衡量不同分布之间的差异/区别,也叫KL距离,但它并不满足距离的三个条件:非负性、对称性和三角不等式。
KL散度的计算公式为:
(1)针对离散事件A和B,累加求和。
D k l ( A ∣ ∣ B ) = ∑ i P A ( x i ) l o g ( P A ( x i ) P B ( x i ) ) = ∑ i P A ( x i ) l o g ( P A ( x i ) ) ? P A ( x i ) l o g ( P B ( x i ) ) D_{kl}(A||B)=\sum_iP_A(x_i)log(\frac{P_A(x_i)}{P_B(x_i)}) =\sum_iP_A(x_i)log(P_A(x_i)) - P_A(x_i)log(P_B(x_i)) Dkl?(AB)=i?PA?(xi?)log(PB?(xi?)PA?(xi?)?)=i?PA?(xi?)log(PA?(xi?))?PA?(xi?)log(PB?(xi?))
(2)针对连续事件A和B,使用积分来运算。
D k l ( A ∣ ∣ B ) = ∫ a ( x ) l o g ( a ( x ) b ( x ) ) d x D_{kl}(A||B)=\int a(x)log(\frac{a(x)}{b(x)}) dx Dkl?(AB)=a(x)log(b(x)a(x)?)dx
其中a(x)和b(x)分别是事件A,B的概率分布。
从以上散度的计算公式中可以看出:(a)如果两个事件的概率 P A = P B P_A = P_B PA?=PB?或者概率分布完全相同,则log1 = 0即KL散度也为0;(b) D k l ( A ∣ ∣ B ) ≠ D k l ( B ∣ ∣ A ) D_{kl}(A||B) \neq D_{kl}(B||A) Dkl?(AB)?=Dkl?(BA),即散度不对称;(c)散度的数学意义可以理解为,求事件A与B之间的对数差在A上的期望值。

3、交叉熵(Cross Entropy)

交叉熵的概念定义是,衡量在给定的真实分布下,使用非真实分布指定的策略消除系统的不确定性所需要付出努力的大小,公式为:
H ( A , B ) = ? ∑ i P A ( x i ) l o g ( P B ( x i ) ) H(A,B) = - \sum_iP_A(x_i)log(P_B(x_i)) H(A,B)=?i?PA?(xi?)log(PB?(xi?))
可以知道,H(A,A) = S(A)。由此还可以得出三种关系式有如下等式关系: H ( A , B ) = D k l ( A ∣ ∣ B ) + S ( A ) H(A,B) = D_{kl}(A||B) + S(A) H(A,B)=Dkl?(AB)+S(A)

当等式中的事件A固定不变时,S(A)是一个常量,此时KL散度和交叉熵是等价的,并且交叉熵的计算公式较为简便,所以倾向于选择交叉熵来计算。在机器学习过程中,训练数据的分布记为事件A(近似认为是真实分布),是事先给定不变的,从训练模型学到的分布记为事件B(非真实分布),当交叉熵最低时,可以认为已经学到了最好的模型(即接近了真实分布)。

交叉熵参考链接:交叉熵计算实例熵的基础知识

4、Pytorch中的NLLLoss和CrossEntropyLoss

nll_loss函数的官方文档,可以看出函数内的第一个参数input必须是已经经过log_softmax运算后的结果。CrossEntropyLoss函数官方文档,这个函数相当于把softmax运算、log运算和nll_loss运算全部叠加到一起,即参数input不需要事先经过log_softmax运算。

针对机器学习中的单分类问题,交叉熵损失函数的实例计算过程,就是在已有的标签下(作为真实分布事件A),将计算模型输出的概率结果取对数再与之相乘即可(其实就是交叉熵的计算过程),具体可以参考一文搞懂交叉熵在机器学习中的使用

注:函数NLLLoss和CrossEntropyLoss的区别可以详细参考这个计算过程:https://blog.csdn.net/qq_22210253/article/details/85229988,这里涉及的也是单分类问题

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-07-28 00:15:18  更:2021-07-28 00:15:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/9 2:37:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码