导读交叉熵损失函数公式优质回答交叉熵损失函数公式:假设X是一个离散型随机变量,其取值集合为X,概率分布函数为p(x)=Pr(X=x),x∈X。我们定义事件X=x0的信息量为:I(x0)=log(p(x0)),可以理解...

今天运困体育就给我们广大朋友来聊聊西甲转播代理商损失,希望能帮助到您找到想要的答案。

交叉熵损失函数公式

交叉熵损失函数公式

优质回答交叉熵损失函数公式:假设X是一个离散型随机变量,其取值集合为X,概率分布函数为p(x)=Pr(X=x),x∈X。

我们定义事件X=x0的信息量为:I(x0)=log(p(x0)),可以理解为,一个事件发生的概率越大,则它所携带的信息量就越小,而当p(x0)=1时,熵将等于0,也就是说该事件的发生不会导致任何信息量的增加。举个例子,小明平时不爱学习,考试经常不及格,而小王是个勤奋学习的好学生,经常得满分。

交叉熵CrossEntropy,是Shannon信息论中一个重要概念,主要用于度量两个概率分布间的差异性信息。在信息论中,交叉熵是表示两个概率分布p,q,其中p表示真实分布,q表示非真实分布,在相同的一组事件中,其中,用非真实分布q来表示某个事件发生所需要的平均比特数。

交叉熵可在机器学习中作为损失函数,p代表真实标记的分布,q则代表训练后的模型的预测标记分布,交叉熵损失函数可以衡量p与q的相似性。交叉熵作为损失函数还有一个好处是:使用sigmoid函数在梯度下降时,可以避免均方误差损失函数学习速率下降的问题,这是因为学习速率是能够被输出的误差所控制的。

损失函数:

一般而言,当一种信息出现概率更高的时候,表明它被传播得更广泛,或者说,被引用的程度更高。我们可以认为,从信息传播的角度来看,信息熵可以表示信息的价值。

H(x)=E[I(xi)]=E[log(1/p(xi))]=-∑p(xi)log(p(xi))其中,x表示随机变量,与之相对应的是所有可能输出的集合,定义为符号集,随机变量的输出用x表示。

P(x)表示输出概率函数,变量的不确定性越大,熵也就越大,把它搞清楚所需要的信息量也就越大。为了保证有效性,这里约定当p(x)→0时,有p(x)logp(x)→0。

交叉熵损失函数

优质回答交叉熵代价函数(Cross-entropy cost function)是用来衡量人工神经网络(ANN)的预测值与实际值的一种方式。与二次代价函数相比,它能更有效地促进ANN的训练。在介绍交叉熵代价函数之前,本文先简要介绍二次代价函数,以及其存在的不足。

ANN的设计目的之一是为了使机器可以像人一样学习知识。人在学习分析新事物时,当发现自己犯的错误越大时,改正的力度就越大。比如投篮:当运动员发现自己的投篮方向离正确方向越远,那么他调整的投篮角度就应该越大,篮球就更容易投进篮筐。同理,我们希望:ANN在训练时,如果预测值与实际值的误差越大,那么在反向传播训练的过程中,各种参数调整的幅度就要更大,从而使训练更快收敛。然而,如果使用二次代价函数训练ANN,看到的实际效果是,如果误差越大,参数调整的幅度可能更小,训练更缓慢。

以一个神经元的二类分类训练为例,进行两次实验(ANN常用的激活函数为sigmoid函数,该实验也采用该函数):输入一个相同的样本数据x=1.0(该样本对应的实际分类y=0);两次实验各自随机初始化参数,从而在各自的第一次前向传播后得到不同的输出值,形成不同的代价(误差):

实验1:第一次输出值为0.82

实验2:第一次输出值为0.98

在实验1中,随机初始化参数,使得第一次输出值为0.82(该样本对应的实际值为0);经过300次迭代训练后,输出值由0.82降到0.09,逼近实际值。而在实验2中,第一次输出值为0.98,同样经过300迭代训练,输出值只降到了0.20。

从两次实验的代价曲线中可以看出:实验1的代价随着训练次数增加而快速降低,但实验2的代价在一开始下降得非常缓慢;直观上看,初始的误差越大,收敛得越缓慢。

其实,误差大导致训练缓慢的原因在于使用了二次代价函数。二次代价函数的公式如下:

如图所示,实验2的初始输出值(0.98)对应的梯度明显小于实验1的输出值(0.82),因此实验2的参数梯度下降得比实验1慢。这就是初始的代价(误差)越大,导致训练越慢的原因。与我们的期望不符,即:不能像人一样,错误越大,改正的幅度越大,从而学习得越快。

可能有人会说,那就选择一个梯度不变化或变化不明显的激活函数不就解决问题了吗?图样图森破,那样虽然简单粗暴地解决了这个问题,但可能会引起其他更多更麻烦的问题。而且,类似sigmoid这样的函数(比如tanh函数)有很多优点,非常适合用来做激活函数,具体请自行google之

说起交叉熵损失函数「Cross Entropy Loss」,脑海中立马浮现出它的公式:

我们已经对这个交叉熵函数非常熟悉,大多数情况下都是直接拿来使用就好。但是它是怎么来的?为什么它能表征真实样本标签和预测概率之间的差值?上面的交叉熵函数是否有其它变种?也许很多朋友还不是很清楚!没关系,接下来我将尽可能以最通俗的语言回答上面这几个问题。

我们知道,在二分类问题模型:例如逻辑回归「Logistic Regression」、神经网络「Neural Network」等,真实样本的标签为 [0,1],分别表示负类和正类。模型的最后通常会经过一个 Sigmoid 函数,输出一个概率值,这个概率值反映了预测为正类的可能性:概率越大,可能性越大。

Sigmoid 函数的表达式和图形如下所示:

其中 s 是模型上一层的输出,Sigmoid 函数有这样的特点:s = 0 时,g(s) = 0.5;s >> 0 时, g ≈ 1,s << 0 时,g ≈ 0。显然,g(s) 将前一级的线性输出映射到 [0,1] 之间的数值概率上。这里的 g(s) 就是交叉熵公式中的模型预测输出 。

我们说了,预测输出即 Sigmoid 函数的输出表征了当前样本标签为 1 的概率:

很明显,当前样本标签为 0 的概率就可以表达成:

重点来了,如果我们从极大似然性的角度出发,把上面两种情况整合到一起:

也即,当真实样本标签 y = 0 时,上面式子第一项就为 1,概率等式转化为:

当真实样本标签 y = 1 时,上面式子第二项就为 1,概率等式转化为:

两种情况下概率表达式跟之前的完全一致,只不过我们把两种情况整合在一起了。重点看一下整合之后的概率表达式,我们希望的是概率 P(y|x) 越大越好。首先,我们对 P(y|x) 引入 log 函数,因为 log 运算并不会影响函数本身的单调性。则有:

我们希望 log P(y|x) 越大越好,反过来,只要 log P(y|x) 的负值 -log P(y|x) 越小就行了。那我们就可以引入损失函数,且令 Loss = -log P(y|x)即可。则得到损失函数为:

非常简单,我们已经推导出了单个样本的损失函数,是如果是计算 N 个样本的总的损失函数,只要将 N 个 Loss 叠加起来就可以了:

这样,我们已经完整地实现了交叉熵损失函数的推导过程。

可能会有读者说,我已经知道了交叉熵损失函数的推导过程。但是能不能从更直观的角度去理解这个表达式呢?而不是仅仅记住这个公式。好问题!接下来,我们从图形的角度,分析交叉熵函数,加深大家的理解。

首先,还是写出单个样本的交叉熵损失函数:

我们知道,当 y = 1 时:

这时候,L 与预测输出的关系如下图所示:

看了 L 的图形,简单明了!横坐标是预测输出,纵坐标是交叉熵损失函数 L。显然,预测输出越接近真实样本标签 1,损失函数 L 越小;预测输出越接近 0,L 越大。因此,函数的变化趋势完全符合实际需要的情况。当 y = 0 时:

这时候,L 与预测输出的关系如下图所示:

同样,预测输出越接近真实样本标签 0,损失函数 L 越小;预测函数越接近 1,L 越大。函数的变化趋势也完全符合实际需要的情况。

从上面两种图,可以帮助我们对交叉熵损失函数有更直观的理解。无论真实样本标签 y 是 0 还是 1,L 都表征了预测输出与 y 的差距。

另外,重点提一点的是,从图形中我们可以发现:预测输出与 y 差得越多,L 的值越大,也就是说对当前模型的 “ 惩罚 ” 越大,而且是非线性增大,是一种类似指数增长的级别。这是由 log 函数本身的特性所决定的。这样的好处是模型会倾向于让预测输出更接近真实样本标签 y。

什么?交叉熵损失函数还有其它形式?没错!我刚才介绍的是一个典型的形式。接下来我将从另一个角度推导新的交叉熵损失函数。

这种形式下假设真实样本的标签为 +1 和 -1,分别表示正类和负类。有个已知的知识点是Sigmoid 函数具有如下性质:

这个性质我们先放在这,待会有用。

好了,我们之前说了 y = +1 时,下列等式成立:

如果 y = -1 时,并引入 Sigmoid 函数的性质,下列等式成立:

重点来了,因为 y 取值为 +1 或 -1,可以把 y 值带入,将上面两个式子整合到一起:

接下来,同样引入 log 函数,得到:

要让概率最大,反过来,只要其负数最小即可。那么就可以定义相应的损失函数为:

还记得 Sigmoid 函数的表达式吧?将 g(ys) 带入:

好咯,L 就是我要推导的交叉熵损失函数。如果是 N 个样本,其交叉熵损失函数为:

接下来,我们从图形化直观角度来看。当 y = +1 时:

这时候,L 与上一层得分函数 s 的关系如下图所示:

横坐标是 s,纵坐标是 L。显然,s 越接近真实样本标签 1,损失函数 L 越小;s 越接近 -1,L 越大。另一方面,当 y = -1 时:

这时候,L 与上一层得分函数 s 的关系如下图所示:

同样,s 越接近真实样本标签 -1,损失函数 L 越小;s 越接近 +1,L 越大。

本文主要介绍了交叉熵损失函数的数学原理和推导过程,也从不同角度介绍了交叉熵损失函数的两种形式。第一种形式在实际应用中更加常见,例如神经网络等复杂模型;第二种多用于简单的逻辑回归模型。

交叉熵损失函数是什么?

优质回答平滑函数。

交叉熵损失函数,也称为对数损失或者logistic损失。当模型产生了预测值之后,将对类别的预测概率与真实值(由0或1组成)进行不比较,计算所产生的损失,然后基于此损失设置对数形式的惩罚项。

在神经网络中,所使用的Softmax函数是连续可导函数,这使得可以计算出损失函数相对于神经网络中每个权重的导数(在《机器学习数学基础》中有对此的完整推导过程和案例,这样就可以相应地调整模型的权重以最小化损失函数。

扩展资料:

注意事项:

当预测类别为二分类时,交叉熵损失函数的计算公式如下图,其中y是真实类别(值为0或1),p是预测类别的概率(值为0~1之间的小数)。

计算二分类的交叉熵损失函数的python代码如下图,其中esp是一个极小值,第五行代码clip的目的是保证预测概率的值在0~1之间,输出的损失值数组求和后,就是损失函数最后的返回值。

参考资料来源:百度百科-交叉熵

参考资料来源:百度百科-损失函数

交叉熵损失函数和focal loss

优质回答交叉熵是信息论中的一个重要概念,主要用于度量两个概率分布间的差异性。是分类问题中经常使用的一种损失函数。

一般使用交叉熵作为损失函数时,在模型的输出层总会接一个softmax函数(用来获得结果分布)。

交叉熵公式:

用来衡量真实概率分布 和预测标签分布 之间的差异;

要了解交叉熵就需要先了解下述概念:

信息熵:“信息是用来 消除 随机 不确定性 的东西”,也就是说衡量信息量的大小就是看这个信息消除不确定性的程度。

信息量的大小与信息发生的概率成反比 。概率越大,信息量越小。概率越小,信息量越大。 例如: ”2018年中国队成功进入世界杯“ ,从直觉上来看,这句话具有很大的信息量。因为中国队进入世界杯的不确定性因素很大,发生的概率很小;

设某一事件发生的概率为P(x),其信息量表示为:

信息熵也被称为熵,用来表示所有信息量的期望;

期望是试验中每次可能结果的概率乘以其结果的总和。

所以信息量的熵可表示为:(这里的X X

X

是一个离散型随机变量)

如果对于同一个随机变量 有两个单独的概率分布 和 ,则我们可以使用KL散度来衡量这两个概率分布之间的差异。

直接上公式

KL散度越小,表示 和 的分布更加接近。

比如在一个三分类任务中(例如,猫狗马分类器), 分别代表猫,狗,马。

例如一张猫的图片真实分布 和 ,计算KL散度:

前者 表示信息熵,后者即为交叉熵, KL散度 = 交叉熵 - 信息熵

交叉熵公式为:

交叉熵等于KL散度加上一个常量(信息熵),且公式相比KL散度更加容易计算,所以在机器学习中常常使用交叉熵损失函数来计算loss就行了。

Focal Loss的引入主要是为了解决**难易样本数量不平衡****(注意,有区别于正负样本数量不平衡)的问题,实际可以使用的范围非常广泛。

本文的作者认为, 易分样本(即,置信度高的样本)对模型的提升效果非常小,模型应该主要关注与那些难分样本 。一个简单的思想: 把高置信度(p)样本的损失再降低一些不就好了吗!

focal loss函数公式:

其中, 为类别权重,用来权衡正负样本不均衡问题; 表示难分样本权重,用来衡量难分样本和易分样本;

今天的内容先分享到这里了,读完本文《交叉熵损失函数公式》之后,是否是您想找的答案呢?想要了解更多,敬请关注www.zuqiumeng.cn,您的关注是给小编最大的鼓励。