机器学习:交叉熵从理论到代码

简介: 机器学习:交叉熵从理论到代码

@TOC

信息论

要说到交叉熵,我们一定离不开信息论的知识,首先我们先回顾一下以下知识。

熵最早源于物理中的热力学,它衡量了一个概率分布的混乱程度,或者说它包含的信息量的大小。
对于离散型随机变量,假设取之有n种情况,熵定义为:$$H\left( p\right) =E_{p}\left[ -\ln p\left( x\right) \right] =\sum ^{n}_{i=1}-p_{i}\ln pi

$$ 下面我们举例计算一下: ![请添加图片描述](https://ucc.alicdn.com/images/user-upload-01/52ea1fb020a44e73bcc113fc96bcbd36.jpeg) 对于连续性随机变量,假设概率密度函数p(x),熵被定义为:$$H\left( p\right) =f_{-n}^{+n}p\left( x\right) \ln p\left( x\right) dx$$ ## KL散度 KL散度(Kullback-Leibler Divergence)也称为相对熵,同样用于衡量两个概率分布之间的差异。其值越大,则两个概率分布的差异越大; $$\begin{aligned}D_{KL}\left( p\| q\right) =\sum _{x}p\left( x\right) \ln \dfrac{p\left( x\right) }{q\left( x\right) }\\ =\sum _{x}p\left( x\right) ( \ln p\left( x\right) -\left( \ln q\left( x\right) \right) \\ =\sum _{x}p\left( x\right) \ln p(x)-\sum _{x}p(x)\ln q(x)\\ \\ \end{aligned}$$ ## 交叉熵 交叉熵定义在两个概率分布之上,反映了他们之间的差异程度,机器学习算法在很多时候的训练目标是使得模型拟合出来的概率分布接近于真实的概率分布,因此可以用交叉熵来构造损失函数,在分类任务重应用广泛,是最常见的损失函数之一。 $$h(p,q) = -\sum_{x}p(x) \ln q(x)$$ ## 为什么交叉上可以用于计算代价 kl散度与交叉熵都可以表示衡量两个概率分布的差距,我们为什么选用交叉熵呢?我们观察KL散度公式,我们发现,**KL散度 = 交叉熵-熵**,我们在训练模型的时候,目标是使模型的概率分布接近于真实的概率分布(用训练集数据分布近似替代),因为训练集的概率分布是确定的,为了方便计算,所以可以直接用交叉熵作为优化目标。 # Pytorch版本交叉熵代码 ```python import torch y = torch.tensor([0, 2]) y_hat = torch.tensor([[0.1, 0.3, 0.6], [0.3, 0.2, 0.5]]) def corss_entorpy(y_hat, y): return -torch.log(y_hat[range(len(y_hat)), y]) corss_entorpy(y_hat, y) ```

目录
相关文章
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
机器学习之线性回归与逻辑回归【完整房价预测和鸢尾花分类代码解释】
机器学习之线性回归与逻辑回归【完整房价预测和鸢尾花分类代码解释】
|
4月前
|
机器学习/深度学习 算法 搜索推荐
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
|
13天前
|
机器学习/深度学习 数据采集 算法
机器学习到底是什么?附sklearn代码
机器学习到底是什么?附sklearn代码
|
4天前
|
机器学习/深度学习 人工智能 算法
探索人工智能:机器学习的基本原理与Python代码实践
【9月更文挑战第6天】本文深入探讨了人工智能领域中的机器学习技术,旨在通过简明的语言和实际的编码示例,为初学者提供一条清晰的学习路径。文章不仅阐述了机器学习的基本概念、主要算法及其应用场景,还通过Python语言展示了如何实现一个简单的线性回归模型。此外,本文还讨论了机器学习面临的挑战和未来发展趋势,以期激发读者对这一前沿技术的兴趣和思考。
|
1月前
|
机器学习/深度学习 运维 算法
深入探索机器学习中的支持向量机(SVM)算法:原理、应用与Python代码示例全面解析
【8月更文挑战第6天】在机器学习领域,支持向量机(SVM)犹如璀璨明珠。它是一种强大的监督学习算法,在分类、回归及异常检测中表现出色。SVM通过在高维空间寻找最大间隔超平面来分隔不同类别的数据,提升模型泛化能力。为处理非线性问题,引入了核函数将数据映射到高维空间。SVM在文本分类、图像识别等多个领域有广泛应用,展现出高度灵活性和适应性。
83 2
|
2月前
|
JSON Shell API
阿里云PAI-Stable Diffusion开源代码浅析之所有api的入参如何看
阿里云PAI-Stable Diffusion开源代码浅析之所有api的入参如何看
|
3月前
|
机器学习/深度学习 搜索推荐
解决冷启动问题的机器学习方法和一个简化的代码示例
解决冷启动问题的机器学习方法和一个简化的代码示例
|
3月前
|
机器学习/深度学习 人工智能 算法
【机器学习】深度神经网络(DNN):原理、应用与代码实践
【机器学习】深度神经网络(DNN):原理、应用与代码实践
443 0
|
3月前
|
机器学习/深度学习
【机器学习】特征筛选实例与代码详解
【机器学习】特征筛选实例与代码详解
177 0
|
3月前
|
机器学习/深度学习 算法 数据挖掘
【机器学习】重塑汽车设计与制造:实例与代码探索
【机器学习】重塑汽车设计与制造:实例与代码探索
130 0