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

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

@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) ```

目录
相关文章
|
6天前
|
机器学习/深度学习 数据采集 人工智能
探索机器学习:从理论到Python代码实践
【10月更文挑战第36天】本文将深入浅出地介绍机器学习的基本概念、主要算法及其在Python中的实现。我们将通过实际案例,展示如何使用scikit-learn库进行数据预处理、模型选择和参数调优。无论你是初学者还是有一定基础的开发者,都能从中获得启发和实践指导。
17 2
|
9天前
|
机器学习/深度学习 数据采集 人工智能
揭秘AI:机器学习的魔法与代码
【10月更文挑战第33天】本文将带你走进AI的世界,了解机器学习的原理和应用。我们将通过Python代码示例,展示如何实现一个简单的线性回归模型。无论你是AI新手还是有经验的开发者,这篇文章都会给你带来新的启示。让我们一起探索AI的奥秘吧!
|
1月前
|
数据采集 移动开发 数据可视化
模型预测笔记(一):数据清洗分析及可视化、模型搭建、模型训练和预测代码一体化和对应结果展示(可作为baseline)
这篇文章介绍了数据清洗、分析、可视化、模型搭建、训练和预测的全过程,包括缺失值处理、异常值处理、特征选择、数据归一化等关键步骤,并展示了模型融合技术。
53 1
模型预测笔记(一):数据清洗分析及可视化、模型搭建、模型训练和预测代码一体化和对应结果展示(可作为baseline)
|
1月前
|
机器学习/深度学习 人工智能 算法
揭开深度学习与传统机器学习的神秘面纱:从理论差异到实战代码详解两者间的选择与应用策略全面解析
【10月更文挑战第10天】本文探讨了深度学习与传统机器学习的区别,通过图像识别和语音处理等领域的应用案例,展示了深度学习在自动特征学习和处理大规模数据方面的优势。文中还提供了一个Python代码示例,使用TensorFlow构建多层感知器(MLP)并与Scikit-learn中的逻辑回归模型进行对比,进一步说明了两者的不同特点。
63 2
|
1月前
|
JSON 测试技术 API
阿里云PAI-Stable Diffusion开源代码浅析之(二)我的png info怎么有乱码
阿里云PAI-Stable Diffusion开源代码浅析之(二)我的png info怎么有乱码
|
1月前
|
机器学习/深度学习 算法 API
【机器学习】正则化,欠拟合与过拟合(详细代码与图片演示!助你迅速拿下!!!)
【机器学习】正则化,欠拟合与过拟合(详细代码与图片演示!助你迅速拿下!!!)
|
3月前
|
机器学习/深度学习 数据采集 算法
机器学习到底是什么?附sklearn代码
机器学习到底是什么?附sklearn代码
|
2月前
|
机器学习/深度学习 人工智能 算法
探索人工智能:机器学习的基本原理与Python代码实践
【9月更文挑战第6天】本文深入探讨了人工智能领域中的机器学习技术,旨在通过简明的语言和实际的编码示例,为初学者提供一条清晰的学习路径。文章不仅阐述了机器学习的基本概念、主要算法及其应用场景,还通过Python语言展示了如何实现一个简单的线性回归模型。此外,本文还讨论了机器学习面临的挑战和未来发展趋势,以期激发读者对这一前沿技术的兴趣和思考。
|
3月前
|
机器学习/深度学习 运维 算法
深入探索机器学习中的支持向量机(SVM)算法:原理、应用与Python代码示例全面解析
【8月更文挑战第6天】在机器学习领域,支持向量机(SVM)犹如璀璨明珠。它是一种强大的监督学习算法,在分类、回归及异常检测中表现出色。SVM通过在高维空间寻找最大间隔超平面来分隔不同类别的数据,提升模型泛化能力。为处理非线性问题,引入了核函数将数据映射到高维空间。SVM在文本分类、图像识别等多个领域有广泛应用,展现出高度灵活性和适应性。
151 2
|
3月前
|
持续交付 测试技术 jenkins
JSF 邂逅持续集成,紧跟技术热点潮流,开启高效开发之旅,引发开发者强烈情感共鸣
【8月更文挑战第31天】在快速发展的软件开发领域,JavaServer Faces(JSF)这一强大的Java Web应用框架与持续集成(CI)结合,可显著提升开发效率及软件质量。持续集成通过频繁的代码集成及自动化构建测试,实现快速反馈、高质量代码、加强团队协作及简化部署流程。以Jenkins为例,配合Maven或Gradle,可轻松搭建JSF项目的CI环境,通过JUnit和Selenium编写自动化测试,确保每次构建的稳定性和正确性。
62 0

热门文章

最新文章