机器学习 [交叉熵损失函数]

机器学习----交叉熵(Cross Entropy)如何做损失函数 损失函数是指一种将一个事件(在一个样本空间中的一个元素)映射到一个表达与其事件相关的经济成本或机会成本的实数上的一种函数。信息熵的值越小,表示系统的不确定性越低。例如,在机器学习中,相对熵常用于比较真实数据的分布和模型预测的分布之间的差异,以评估模型的性能。它可以用于评估两个模型或概率分布的相似性,比较数据分布的差异,以及在熵最小化的框架下进行优化等。对于回归问题,均方差的损失函数的导数是局部单调的,可以找到最优解。上面说的都是一个样本的时候,多个样本的表达式是:多个样本的概率即联合概率,等于每个的乘积。 阅读详情

表达式

二分类

在二分的情况下,模型最后需要预测的结果只有两种情况,对于每个类别我们的预测得到的概率为p和1-p。此时表达式为:

\begin{align}J = −[y\cdot log(p)+(1−y)\cdot log(1−p)]\end{align} \\

其中:

  • y——表示样本的label,正类为1,负类为0
  • p——表示样本预测为正的概率

多分类

多分类的情况实际上就是对二分类的扩展:

\begin{align}J = -\sum_{c=1}^My_{c}\log(p_{c})\end{align} \\

其中:

  • M——类别的数量;
  • y——指示变量(0或1),如果该类别和样本的类别相同就是1,否则是0;
  • p——对于观测样本属于类别c的预测概率。

函数性质

可以看出,该函数是凸函数,求导时能够得到全局最优值。

导函数性质

交叉熵损失函数经常用于分类问题中,特别是在神经网络做分类问题时,也经常使用交叉熵作为损失函数,此外,由于交叉熵涉及到计算每个类别的概率,所以交叉熵几乎每次都和softmax函数一起出现。

我们用神经网络最后一层输出的情况,来看一眼整个模型预测、获得损失和学习的流程:

  1. 神经网络最后一层得到每个类别的得分scores;
  2. 该得分经过softmax转换为概率输出;
  3. 模型预测的类别概率输出与真实类别的one hot形式进行cross entropy损失函数的计算。

下面,我们来推导一下整个求导公式,我们将求导分成三个过程,即拆成三项偏导的乘积:

\frac{\partial J}{\partial w_i}=\frac{\partial J}{\partial p_i}\cdot \frac{\partial p_i}{\partial score_i}\cdot \frac{\partial score_i}{\partial w_i} \\

计算第一项: \frac{\partial J}{\partial p_i}

\begin{align} \frac{\partial J}{\partial p_i} &= \frac{\partial −[ylog(p)+(1−y)log(1−p)]}{\partial p_i} \\ &= -\frac{\partial y_ilogp_i}{\partial p_i}-\frac{\partial (1-y_i)log(1-p_i)}{\partial p_i} \\ &= -\frac{y_i}{p_i}-[(1-y_i)\cdot \frac{1}{1-p_i}\cdot (-1)] \\ &= -\frac{y_i}{p_i}+\frac{1-y_i}{1-p_i} \ \end{align} \\

计算第二项:

\frac{\partial p_i}{\partial score_i} \\

这一项要计算的是softmax函数对于score的导数,我们先回顾一下分数求导的公式:

f(x) = \frac{g(x)}{h(x)}=\frac{g'(x)h(x)-g(x){h}'(x)}{h^2(x)} \\

考虑k等于i的情况:

\begin{align} \frac{\partial p_i}{\partial score_i} &= \frac{({e^{y_i}})'\cdot (\sum_ie^{y_i})-e^{y_i}\cdot {(\sum_j e^{y_i})}'}{(\sum_je^{y_i})^2} \\ &= \frac{e^{y_i}\cdot \sum_ie^{y_i}-{(e^{y_i})}^2}{(\sum_je^{y_i})^2} \\ &= \frac{e^{y_i}}{\sum_je^{y_i}} - \frac{(e^{y_i})^2}{(\sum_je^{y_i})^2} \\ &= \frac{e^{y_i}}{\sum_je^{y_i}}\cdot (1 - \frac{e^{y_i}}{\sum_je^{y_i}}) \\ &= \sigma(y_i)(1-\sigma(y_i)) \ \end{align} \\

考虑k不等于i的情况:

\begin{align} \frac{\partial p_k}{\partial score_i} &= \frac{(e^{y_k})'\cdot (\sum_ie^{y_i})-e^{y_i}\cdot {(\sum_j e^{y_i})}'}{(\sum_je^{y_i})^2} \\ &= \frac{0\cdot \sum_ie^{y_i}-(e^{y_i})\cdot (e^{y_k})}{(\sum_je^{y_i})^2} \\ &= -\frac{e^{y_i}\cdot e^{y_k}}{(\sum_je^{y_i})^2} \\ &= -\frac{e^{y_i}}{\sum_je^{y_i} }\cdot \frac{e^{y_k} }{\sum_je^{y_i}} \\ &= -\sigma(y_i)\cdot \sigma(y_k) \\ &= \sigma(y_k)\cdot (1-\sigma(y_i)) \\ \end{align} \\

综上可得softmax损失函数的求导结果:

\begin{split}\frac{\partial p_k}{\partial score_i}=\begin{cases} \sigma(y_i)(1-\sigma(y_i)) & \text{$if\ k=i$} \\ \sigma(y_k)\cdot (1-\sigma(y_i)) & \text{$if\ k \neq i$}\end{cases}\end{split} \\

则可统一写成:

\frac{\partial p_i}{\partial score_i}=\sigma(y_i)(1-\sigma(y_i))\\

计算第三项:

\frac{\partial score_i}{\partial w_i \\}

一般来说,scores是输入的线性函数作用的结果,所以有:

\frac{\partial score_i}{\partial w_i}=x_i\\

计算结果

\frac{\partial J}{\partial w_i}

\begin{align} \frac{\partial J}{\partial w_i} &= \frac{\partial J}{\partial p_i}\cdot \frac{\partial p_i}{\partial score_i}\cdot \frac{\partial score_i}{\partial w_i} \\ &= [-\frac{y_i}{\sigma(y_i)} + \frac{1-y_i}{1-\sigma(y_i)}]\cdot \sigma(y_i)(1-\sigma(y_i))\cdot x_i \\ &= [-\frac{y_i}{\sigma(y_i)}\cdot \sigma(y_i)\cdot (1-\sigma(y_i))+\frac{1-y_i}{1-\sigma(y_i)}\cdot \sigma(y_i)\cdot (1-\sigma(y_i))]\cdot x_i \\ &= [-y_i+y_i\cdot \sigma(y_i)+\sigma(y_i)-y_i\cdot \sigma(y_i)]\cdot x_i \\ &= [\sigma(y_i)-y_i]\cdot x_i \\ \end{align} \\

可以看到,我们得到了一个非常漂亮的结果,所以,使用交叉熵损失函数,不仅可以很好的衡量模型的效果,又可以很容易的的进行求导计算。

 

优点

在用梯度下降法做参数更新的时候,模型学习的速度取决于两个值:一、学习率;二、偏导值。其中,学习率是我们需要设置的超参数,所以我们重点关注偏导值。从上面的式子中,我们发现,偏导值的大小取决于 x_i 和 [\sigma(y_i)-y_i] ,我们重点关注后者,后者的大小值反映了我们模型的错误程度,该值越大,说明模型效果越差,但是该值越大同时也会使得偏导值越大,从而模型学习速度更快。所以,使用逻辑函数得到概率,并结合交叉熵当损失函数时,在模型效果差的时候学习速度比较快,在模型效果好的时候学习速度变慢。

 

参考

[1] 神经网络的分类模型 LOSS 函数为什么要用 CROSS ENTROPY

[2] Softmax as a Neural Networks Activation Function

[3] A Gentle Introduction to Cross-Entropy Loss Function

 

详解机器学习损失函数之交叉熵 本文始发于个人公众号:TechFlow,原创不易,求个关注 今天这篇文章和大家聊聊机器学习领域的熵。 我在看paper的时候发现对于交叉熵的理解又有些遗忘,复习了一下之后,又有了一些新的认识。故写下本文和大家分享。 熵这个概念应用非常广泛,我个人认为比较经典的一个应用是在热力学当中,反应一个系统的混乱程度。根据热力学第二定律,一个孤立系统的熵不会减少。比如一盒乒乓球,如果把盒子掀翻了,乒乓球散出... 阅读详情

相关推荐

机器学习之相对熵、交叉熵(为什么交叉熵可以作为损失函数)

文章目录自信息信息熵相对熵(KL散度)交叉熵为什么交叉熵可以作为损失函数参考文章 自信息   信息论的基本想法是一个不太可能的事件居然发生了,要比一个非常可能的事件发生,能够提供发更多的信息。消息说:“今天早上太阳升起”,信息量是如此少,以至于没有必要发送;但一条消息说:“今天早上有日食”,信息量就很丰富。   一条信息的信息量大小和它的不确定性有直接的关系,我们可以认为,信息量的度量就等于不确定...

冰糖麻辣鱼的博客 707

损失函数——交叉熵损失函数应用(手把手教你计算损失函数)

在上一篇 博客“损失函数——交叉熵损失函数(引子)”中为了更好的理解交叉熵应用,先引入了交叉熵损失函数,在这篇文章中,更详细的介绍交叉熵损失函数的应用。 交叉熵损失函数的形式 交叉熵损失函数的表示形式如下所示: 其中t指的是标签,y指的是概率。 具体举例来说: 假设我们输入一张狗的图片,标签与预测值如下: 如下图所示就是神经网络的构成,与计算步骤: 其中公式中的y指的就是预测概率,也就是由softmax计算得来,softmax的计算公式 在这个例子中,具体由下面图中的softmax列的公式可以计算出每

m0_37347812的博客 1696

交叉熵代价函数(作用及公式推导) - Arthur-Chen的专栏 - 优快云博客1

写在前面分类问题和回归问题是监督学习的两大种类。神经网络模型的效果及优化的目标是通

交叉熵损失函数详解

交叉熵损失函数 说到交叉熵损失函数(Cross Entropy Loss),就想到公式:L=−[ylogy^+(1−y)log(1−y^)]L=-[ylog \hat y + (1-y)log(1- \hat y)]L=−[ylogy^​+(1−y)log(1−y^​)] 大多数情况下,这个交叉熵函数直接拿来用即可,但是知其然还要知其所以然,关于它是怎么推导而来的,为什么它能表征真实样本标签和预测...

journey_fan的专栏 1万+

逆向淘宝x-mini-wua:从加密算法到设备指纹的生成逻辑

本文深入剖析了淘宝风控核心参数x-mini-wua的生成逻辑与加密算法。通过逆向分析,揭示了其作为设备“身份证”的作用,详细拆解了从硬件信息采集、SG_INNER_DATA文件解密、关键参数提取到最终长wua合成的完整技术链条,并探讨了模拟生成与绕过风控的实战思路及注意事项。

year5的博客 1074

《供应链金融风控模型设计:多维度数据整合与动态风险预警机制》

注:方案突出供应链金融「三流合一」(资金流、物流、信息流)的风控逻辑,通过多维度数据整合与动态预警,解决传统风控中中小企业信用评估难、链条风险传导监测滞后的问题。◦ 构建供应链拓扑图,计算「核心企业违约对上下游企业的影响系数」(如某电子厂商违约时,其前五大供应商的风险权重自动提升40%)• 区块链应用:将核心企业应付账款上链存证,防止「一票多融」欺诈(如某供应商用同一应收账款在多家银行融资)◦ 财务数据:核心企业审计报告、上下游企业纳税数据(增值税发票频次/金额)

2501_91651383的博客 1547

机器学习中的损失函数(交叉熵损失、Hinge loss)

损失函数 文章目录损失函数1 交叉熵损失1.1 从最大似然估计到交叉熵损失概率论中的MLE机器学习中的MLE交叉熵损失1.2 多分类的交叉熵损失函数1.3 比较 1 交叉熵损失 1.1 从最大似然估计到交叉熵损失 概率论中的MLE 最大似然估计用于估计能得到当前数据(分布)的最好的参数组合。对于最简单的x为一维的概率分布我们有 θ^MLE=argmaxθ fX(x1,x2,...,xn;...

petSym的博客 2252

用PyTorch手把手搭建液态神经网络(LNN):从微分方程到无人机避障实战

本文详细介绍了如何使用PyTorch搭建液态神经网络(LNN),从微分方程基础到无人机避障实战应用。LNN通过动态时序建模和微分方程实现高效计算,特别适合多传感器数据融合场景。文章包含完整的代码实现、训练技巧及性能优化方案,帮助开发者快速掌握这一前沿技术。

uber9的博客 438

交叉熵损失函数

目录 1交叉熵损失函数(Cross Entropy loss): 1.1交叉熵损失函数公式: 1.2交叉熵损失函数推导过程: 1.3 交叉熵损失函数的特殊值 1交叉熵损失函数(Cross Entropy loss): 1.1交叉熵损失函数公式: y是真实的标签值(正类值为1,负类值为0),y`是预测的概率值(y·∈(0,1)).它表征真实样本标签和预测概率之间的差值. 1.2交叉熵损失函数推导过程: 举个二分类例子,要么有打球,要么没有打球.假设打球的标签值为1,没打球的标签.

qq_31244453的博客 2万+

Redis简介和项目应用

内存优先架构简介Redis的读写操作都是在内存中执行的,计算机内存的读写速度极快,比机械硬盘的读写快很多,因此也会比MySql采用机械读写的方式性能更高。但是这样会产生一个问题,当Redis重启之后,内存中的数据就会丢失,为了保证数据不会因为服务器重启而丢失,Redis实现了数据持久化的机制,这个机制会把数据存储到磁盘中,当服务器重启的时候,能够从磁盘中恢复原有的数据。

人工智能、机器学习 757

实测对比:DeepSeek、豆包、千问三大AI模型生成测试用例谁更强?(附完整代码)

本文通过实测对比了DeepSeek、豆包、千问三大AI模型在生成测试用例方面的表现。文章提供了完整的Python代码实现,详细分析了各模型在用例完整性、准确性、边界覆盖及幻觉控制等维度的差异,并分享了工程化集成与多模型融合等优化策略,旨在帮助测试团队选择合适工具以提升工作效率。

ik6789012的博客 936

交叉熵损失函数的计算公式

交叉熵损失函数的计算公式如下: 对于二分类问题: L = -(ylog(p) + (1-y)log(1-p)) 其中:L为交叉熵损失函数的值,y为真实标签(0或1),p为模型预测为正类的概率。 对于多分类问题: L = -∑y_ilog(p_i) 其中:L为交叉熵损失函数的值,y_i为真实标签,p_i为模型对第i类的预测概率。 ...

weixin_35755823的博客 5678

Allegro PCB设计实战:5分钟搞定DDR信号线的Match Group等长规则设置

本文详细介绍了在Allegro PCB设计中,如何快速为DDR信号线设置Match Group等长规则。通过实战演练,解析了从理解相对传输延迟原理、在规则管理器中创建Match Group,到设置合理容差和利用动态绕线指示的全流程,帮助工程师在5分钟内高效完成高速信号时序约束,提升设计可靠性与效率。

gg901的博客 1052

【机器学习】交叉熵做损失函数 BCE loss

参考文章: 为什么用交叉熵做损失函数 详解机器学习中的熵、条件熵、相对熵和交叉熵 这边做摘抄 目录1.信息熵2.相对熵(KL散度)3.交叉熵使用交叉熵的原因 1.信息熵 信息熵是消除不确定性所需信息量的度量。(多看几遍这句话) 信息熵就是信息的不确定程度,信息熵越小,信息越确定。 (因为事件都有个概率分布,这里我们只考虑离散分布) 举个列子,比如说: 今年中国取消高考了,那我们就要去查证了, 这样就需要很多信息量(去查证);反之如果说今年正常高考,大家回想:这很正常啊,不怎么需要查证,这样需要的信息量就

chentao326的博客 3691

ESP32与INMP441麦克风模块实现音频传输

ESP32是一款低成本、低功耗的物联网开发板,支持Wi-Fi和蓝牙双模通信,内置双核处理器,适合音频处理和实时数据传输。INMP441是一款高性能数字麦克风模块,支持I2S接口,可提供高精度音频数据采集(24-bit分辨率,64-100 dB SNR)。

走向CTO的路上... 2039

深度拆解 ‘High-Frequency Trading’ (HFT) 系统:解析如何在 100 纳秒内完成从网卡到 C++ 策略的响应

在100纳秒内完成从网卡到C++策略的响应,这是一项对技术栈每一个层面都进行极限优化的系统工程。它要求我们深入理解计算机体系结构、操作系统、网络协议和C++语言的底层机制。从物理距离的极致缩短,到高性能网卡和内核旁路技术,再到C++代码中每一个字节、每一个CPU周期的精打细算,HFT系统展现了人类对计算速度的永恒追求。这项技术不仅仅应用于金融交易,其背后的低延迟理念和实现方法,如DPDK、无锁编程、硬件加速等,正在逐渐渗透到其他对延迟敏感的领域,例如电信网络、边缘计算和工业自动化。

weixin_41455464的博客 1039

交叉熵损失函数的改进_详解机器学习损失函数之交叉熵

今天这篇文章和大家聊聊机器学习领域的熵。我在看paper的时候发现对于交叉熵的理解又有些遗忘,复习了一下之后,又有了一些新的认识。故写下本文和大家分享。熵这个概念应用非常广泛,我个人认为比较经典的一个应用是在热力学当中,反应一个系统的混乱程度。根据热力学第二定律,一个孤立系统的熵不会减少。比如一盒乒乓球,如果把盒子掀翻了,乒乓球散出来,它的熵增加了。如果要将熵减小,那么必须要对这个系统做功,也就是...

weixin_33142377的博客 2092

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

交叉熵损失函数公式_详解机器学习损失函数之交叉熵

今天这篇文章和大家聊聊机器学习领域的熵。我在看paper的时候发现对于交叉熵的理解又有些遗忘,复习了一下之后,又有了一些新的认识。故写下本文和大家分享。熵这个概念应用非常广泛,我个人认为比较经典的一个应用是在热力学当中,反应一个系统的混乱程度。根据热力学第二定律,一个孤立系统的熵不会减少。比如一盒乒乓球,如果把盒子掀翻了,乒乓球散出来,它的熵增加了。如果要将熵减小,那么必须要对这个系统做功,也就是...

weixin_39528525的博客 771

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

机器学习(11)-探秘交叉熵损失函数

探秘交叉熵损失函数1 前言2 二分类的交叉损失函数形式2.1 交叉熵损失函数的常见形式2.2 交叉损失函数的另一种形式3 Softmax函数与交叉熵损失函数 1 前言 学习机器学习相关的算法的时候会,经常看到交叉熵损失函数。交叉熵损失函数的最常见的形式,学习LR(Logistics Regression)函数的时候,给出的交叉熵损失函数,也是比较容易理解的形式。但是除了LR算法中会接触到交叉熵损失...

Lavi的专栏 1705

详细剖析机器学习中的损失函数---交叉熵

详细剖析机器学习中的损失函数---交叉熵8.1 交叉熵损失函数信息论与交叉熵交叉熵的定义交叉熵的计算公式交叉熵的应用 上一篇文章总结了机器学习需要掌握的数学知识点—详细整理,这一节针对里面的第八章,第一节的前四个小段内容进行一个详细的整理,如有不当之处,欢迎各位大神指出。 所谓机器学习,就是“使用算法解析数据,从中学习,然后对世界上的某件事情做出决定或预测”。这句话就表明,建立一个合适的数学模型是...

LEEANG121的博客 5829

机器学习损失函数全解:从交叉熵到MSE的贝叶斯视角

在机器学习中,交叉熵损失函数(Cross-Entropy Loss)是分类任务中最常用的损失函数之一。它的核心思想是通过衡量模型预测概率分布与真实概率分布之间的差异,来指导模型参数的优化。理解交叉熵的数学定义和推导过程,对于职场人士掌握分类模型的底层逻辑至关重要。在机器学习实践中,损失函数的选择往往决定了模型的成败。交叉熵损失函数凭借其与概率分布的天然联系,在分类任务中展现出独特优势——当输出层采用Softmax激活时,它等价于最大化似然函数,这种特性使其特别适合处理离散概率预测。

zuiyuelong的博客 1549

从熵、相对熵、交叉熵到机器学习的交叉熵损失与softmax损失函数

在之前学习神经网络的时候,对于损失函数这块,一直以MSE来作为理解,后来交叉熵损失出现之后,也没有深刻地将其理解,写代码时也是直接调用库函数。现在因为读一些新的文章,发现有些看不懂了,因此将这一块知识补充起来。 1、熵(Entropy) 熵的概念来源于信息论,可以代表一个事件的复杂度,或者不确定性。一个事件越是不确定性大,那么就是月复杂,所提供的信息就会越多。 举个例...

机器学习_成长之路 835

一文读懂机器学习损失函数:从MSE到交叉熵

本文深入解析了机器学习中指导模型优化的核心指标——损失函数。文章首先通过老师与学生的生动比喻,直观阐释了损失函数的工作机制。随后,详细对比了分类任务(如二元/多类交叉熵)与回归任务(如MSE、MAE、Huber)中主流损失函数的数学原理、优缺点及对异常值的敏感度。最后,文章提供了 Scikit-learn 和 PyTorch 的代码实现示例,帮助开发者根据具体场景(如数据是否包含噪音、标签是否互斥)选择最合适的损失函数,从而有效提升模型预测性能

JUyao_H的博客 1334

机器学习与深度学习7:一文搞懂多种融合二元交叉熵损失函数,one-hot编码,KL散度,交叉熵损失函数

本文介绍了神经网络中分类任务的损失函数计算方法。在多分类任务中,使用one-hot编码表示类别概率分布,通过softmax函数将输出转化为概率分布,并用KL散度或交叉熵损失函数衡量预测误差。二分类任务则采用0/1标签和sigmoid归一化,其二元交叉熵损失函数公式为L=-[y*logŷ+(1-y)*log(1-ŷ)]。针对样本不平衡问题,提出了平衡交叉熵损失函数,通过权重系数α调整正负样本的影响。文中还给出了Python中BCEWithLogitsLoss的实现示例及计算过程,展示了如何应用这些损失函数解决

gr1423428723的博客 1441

机器学习中使用交叉熵为损失函数的原因

总结: 机器学习中有很多损失函数可以用,如欧氏距离,sigmoid函数,softmax函数等, 然而使用交叉熵的原因在于防止梯度消失以及测出实际效果较好的原因吧(个人理解)。 其详细理解,可以参考粘贴的内容: 本文参考:https...

weixin_30952535的博客 137

机器学习损失函数---交叉熵(衡量相似性)

1.交叉熵是啥?交叉熵的由来? 【转载自:https://blog.youkuaiyun.com/ccj_ok/article/details/78066619】 熵的本质是香农信息量()的期望。 现有关于样本集的2个概率分布p和q,其中p为真实分布,q非真实分布。按照真实分布p来衡量识别一个样本的所需要的编码长度的期望(即平均编码长度)为:H(p)=。如果使用错误分布q来表示来...

bufengzj的博客 5366
上一篇: 机器学习 [logistic函数和softmax函数]
下一篇: 机器学习 [合页损失函数 Hinge Loss]
gukedream
博客等级 码龄12年 480粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值