一文理解什么是交叉熵损失函数以及它的作用

今天看一个在深度学习中很枯燥但很重要的概念——交叉熵损失函数。

作为一种损失函数,它的重要作用便是可以将“预测值”和“真实值(标签)”进行对比,从而输出 loss 值,直到  loss 值收敛,可以认为神经网络模型训练完成。

那么这个所谓的“交叉熵”到底是什么,为什么它可以用来作为损失函数呢?

1、熵与交叉熵

“交叉熵”包含了“交叉”和“熵”这两部分。

关于“熵”的描述在理解熵的本质一文中有更详细的说明。总的来说,熵可以用来衡量一个随机变量的不确定性,数学上可表示为:

H(i) = - ∑ P(i) * log(P(i))

对于上面的公式,我们稍微变一下形,将负号和 log(P(i)) 看做一个变量,得到:

PP(i) = -log(p(i))

那么熵的公式就可以写作:H(i) = ∑ P(i) * PP(i)

此时熵的公式中,P(i) 和 PP(i) 是服从相同的概率分布。因此,熵H(i)就变成了事件 PP(i) 发生的数学期望,通俗理解为均值。

熵越大,表示事件发生的不确定性越大。而交叉熵是用于比较两个概率分布之间的差异,对于两个概率分布 P 和 Q 而言,

交叉熵定义为:

H(i) = ∑ P(i) * Q(i)

此时,P(i) 和 Q(i) 服从两种不同的概率分布,交叉熵的“交叉”就体现在这。

其中 P(i) 为真实分布,也就是训练过程中标签的分布;Q(i) 为预测分布,也就是模型每轮迭代输出的预测结果的分布。

交叉熵越小,表示两个概率分布越接近。

从而模型预测结果就越接近真实标签结果,说明模型训练收敛了。

关于更细节的数学原理,可以查看熵的本质,不过我们也可以不用深究,理解上述结论就可以。

2、交叉熵作为损失函数

假设有一个动物图像数据集,其中有五种不同的动物,每张图像中只有一只动物。

来源:https: //www.freeimages.com/

我们将每张图像都使用 one-hot 编码来标记动物。对one-hot编码不清楚的可以移步这里有个你肯定能理解的one-hot。

上图是对动物分类进行编码后的表格,我们可以将一个one-hot 编码视为每个图像的概率分布,那么:

第一个图像是狗的概率分布是 1.0 (100%)。

对于第二张图是狐狸的概率分布是1.0(100%)。

以此类推,此时,每个图像的熵都为零。

换句话说,one-hot 编码标签 100% 确定地告诉我们每张图像有哪些动物:第一张图片不可能 90% 是狗,10% 是猫,因为它100%是狗。

因为这是训练的标签,是固定下来的确定分布。

现在,假设有一个神经网络模型来对这些图像进行预测,在神经网络执行完一轮训练迭代后,它可能会对第一张图像(狗)进行如下分类:

该分类表明,第一张图像越 40%的概率是狗,30%的概率是狐狸,5%的概率是马,5%的概率是老鹰,20%的概率是松鼠。

但是,单从图像标签上看,它100%是一只狗,标签为我们提供了这张图片的准确的概率分布。

那么,此时如何评价模型预测的效果呢?

我们可以计算利用标签的one-hot编码作为真实概率分布 P,模型预测的结果作为 Q 来计算交叉熵:

结果明显高于标签的零熵,说明预测结果并不是很好。

继续看另一个例子。

假设模型经过了改良,在完成一次推理或者一轮训练后,对第一张图得到了如下的预测,也就是说这张图有98%的概率是狗,这个标签的100%已经差的很少了。

我们依然计算交叉熵:

可以看到交叉熵变得很低,随着预测变得越来越准确,交叉熵会下降,如果预测是完美的,它就会变为零。

基于此理论,很多分类模型都会利用交叉熵作为模型的损失函数。

在机器学习中,由于多种原因(比如更容易计算导数),对数 log 的计算大部分情况下是使用基数 e 而不是基数 2 ,对数底的改变不会引起任何问题,因为它只改变幅度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/259363.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

窗口函数之 first_value() 和 last_value()

这次,我要从**last_value()**开始写! last_value() 众所周知,first_value() 和 last_value() 的作用是返回窗口中某个字段的第一行的值和最后一行的值。 但是在应用的时候,突然发现使用last_value() 返回了不止一条数据&#x…

牛客在线编程(SQL大厂面试真题)

1.各个视频的平均完播率_牛客题霸_牛客网 ROP TABLE IF EXISTS tb_user_video_log, tb_video_info; CREATE TABLE tb_user_video_log (id INT PRIMARY KEY AUTO_INCREMENT COMMENT 自增ID,uid INT NOT NULL COMMENT 用户ID,video_id INT NOT NULL COMMENT 视频ID,start_time d…

直播传媒公司网站搭建作用如何

直播已然成为抖快等平台的主要生态之一,近些年主播也成为了一种新行业,相关的mcn机构直播传播公司等也时有开业,以旗下主播带来高盈利,而在实际运作中也有一些痛点难题: 1、机构宣传展示难 不少散主播往往会选择合作…

[ 蓝桥杯Web真题 ]-全球新冠疫情数据统计

目录 介绍 准备 目标 效果 规定 思路 参考实现 介绍 新冠疫情席卷全球,在此期间有很多免费的 API 和网站为人们提供了各个国家疫情数据的查询功能,这些免费公开的数据体现出了互联网作为信息媒介的优越性,帮助全球人民更好的了解一线疫…

K8s 入门指南(一):单节点集群环境搭建

前言 官方文档:Kubernetes 文档 | Kubernetes 系统配置 CentOS 7.9(2 核 2 G) 本文为 k8s 入门指南专栏,将会使用 kubeadm 搭建单节点 k8s 集群,详细讲解环境搭建部署的细节,专栏后面章节会以实战代码介绍…

人工智能学习9(LightGBM)

编译工具:PyCharm 文章目录 编译工具:PyCharm lightGBM原理lightGBM的基础使用案例1:鸢尾花案例2:绝对求生玩家排名预测一、数据处理部分1.数据获取及分析2.缺失数据处理3.数据规范化4.规范化输出部分数据5.异常数据处理5.1删除开…

Centos7、Mysql8.0 load_file函数返回为空的终极解决方法--暨selinux的深入理解

零、问题背景 最近想换房,为了方便自己对比感兴趣的房子,因此决定将目标房源的基本信息放在表里,特别是要一目了然的看到众多房子的各种图纸和照片,因此决定要在Mysql8.0.34数据库中以二进制形式保存图片(抛开合理性和…

如何设置和使用静态HTTP服务器

随着互联网技术的不断发展,越来越多的企业和个人开始使用静态HTTP服务器来展示自己的网站内容。静态HTTP服务器是指服务器上存储着静态网页文件,当用户请求访问这些网页时,服务器直接将文件发送给用户的浏览器进行展示。本文将介绍如何设置和…

基于Python+WaveNet+MFCC+Tensorflow智能方言分类—深度学习算法应用(含全部工程源码)(一)

目录 前言引言总体设计系统整体结构图系统流程图 运行环境Python环境TensorFlow 环境Jupyter Notebook环境Pycharm 环境 相关其它博客工程源代码下载其它资料下载 前言 博主前段时间发布了一篇有关方言识别和分类模型训练的博客,在读者的反馈中发现许多小伙伴对方言…

深度学习之注意力机制

注意力机制与外部记忆 注意力机制与记忆增强网络是相辅相成的,神经网络去从内存中或者外部记忆中选出与当前输入相关的内容时需要注意力机制,而在注意力机制的很多应用场景中,我们的外部信息也可以看作是一个外部的记忆 这是一个阅读理解任务…

Learning Memory-guided Normality for Anomaly Detection 论文阅读

Learning Memory-guided Normality for Anomaly Detection 摘要1.介绍2.相关工作3.方法3.1网络架构3.1.1 Encoder and decoder3.1.2 Memory 3.2. Training loss3.3. Abnormality score 4.实验5.总结总结&代码复现: 文章信息: 发表于:cvpr…

高性能服务器框架

服务器同时监听多个客户请求是通过 select 系统调用实现的; 1.1 服务器编程框架 请求队列是各单元之间通信方式的抽象; 1.2 IO 模型 (1)阻塞 IO:阻塞的文件描述符 非阻塞 IO:非阻塞的文件描述符 &#…