softmax、交叉熵

Softmax是用于分类过程,用来实现多分类的

它把一些输出的神经元映射到(0-1)之间的实数,并且归一化保证和为1,从而使得多分类的概率之和也刚好为1。

Softmax可以分为soft和max,max也就是最大值,假设有两个变量a,b。如果a>b,则max为a,反之为b。那么在分类问题里面,如果只有max,

输出的分类结果只有a或者b,是个非黑即白的结果。但是在现实情况下,我们希望输出的是取到某个分类的概率,或者说,

我们希望分值大的那一项被经常取到,而分值较小的那一项也有一定的概率偶尔被取到,所以我们就应用到了soft的概念,即最后的输出是每个分类被取到的概率

函数定义:

其中,Vi 是分类器前级输出单元的输出。i 表示类别索引,总的类别个数为 C。Si 表示的是当前元素的指数与所有元素指数和的比值。(划重点)

通过这个Softmax函数 就可以将多分类的输出数值转化为相对概率。

补充:实际应用中,使用 Softmax 需要注意数值溢出的问题。因为有指数运算,如果 V 数值很大,经过指数运算后的数值往往可能有溢出的可能。

所以,需要对 V 进行一些数值处理:即 V 中的每个元素减去 V 中的最大值。

交叉熵:

给定一个策略, 交叉熵就是在该策略下猜中颜色所需要的问题的期望值。更普遍的说,交叉熵用来衡量在给定的真实分布下,

使用非真实分布所指定的策略消除系统的不确定性所需要付出成本的大小。交叉的字面意思在于:

真实分布与非真实分布的交叉。给定一个方案, 越优的策略, 最终的交叉熵越低。具有最低的交叉熵的策略就是最优化策略,

也就是上面定义的熵。因此, 在机器学习中, 我们需要最小化交叉熵。

交叉熵有时候也被称为对数损失函数

使用交叉熵做分类问题中的损失函数,可以在一定程度上减少梯度消散。

softmax中使用的交叉熵公式如下:

举个例子
通过若干层的计算,最后得到的某个训练样本的向量的分数是[ 2, 3, 4 ],
那么经过softmax函数作用后概率分别就是 [0.0903,0.2447,0.665],
如果这个样本正确的分类是第二个的话,
那么计算出来的偏导就是[0.0903,0.2447-1,0.665]=[0.0903,-0.7553,0.665](划重点)
然后再根据这个进行back propagation就可以了。

原文地址:https://www.cnblogs.com/h694879357/p/12357003.html

时间: 2024-10-31 09:15:25

softmax、交叉熵的相关文章

softmax交叉熵损失函数求导

来源:https://www.jianshu.com/p/c02a1fbffad6 简单易懂的softmax交叉熵损失函数求导 来写一个softmax求导的推导过程,不仅可以给自己理清思路,还可以造福大众,岂不美哉~ softmax经常被添加在分类任务的神经网络中的输出层,神经网络的反向传播中关键的步骤就是求导,从这个过程也可以更深刻地理解反向传播的过程,还可以对梯度传播的问题有更多的思考. softmax 函数 softmax(柔性最大值)函数,一般在神经网络中, softmax可以作为分类任

交叉熵 相关链接

TensorFlow四种Cross Entropy算法实现和应用 对比两个函数tf.nn.softmax_cross_entropy_with_logits和tf.nn.sparse_softmax_cross_entropy_with_logits 从神经网络视角看均方误差与交叉熵作为损失函数时的共同点 交叉熵代价函数 交叉熵代价函数(损失函数)及其求导推导 简单易懂的softmax交叉熵损失函数求导 如何通俗的解释交叉熵与相对熵? https://www.cnblogs.com/virede

深度学习-交叉熵损失

SoftMax回归 对于MNIST中的每个图像都是零到九之间的手写数字.所以给定的图像只能有十个可能的东西.我们希望能够看到一个图像,并给出它是每个数字的概率. 例如,我们的模型可能会看到一个九分之一的图片,80%的人肯定它是一个九,但是给它一个5%的几率是八分之一(因为顶级循环),并有一点概率所有其他,因为它不是100%确定. 这是一个经典的情况,其中softmax回归是一种自然简单的模型.如果要将概率分配给几个不同的东西之一的对象,softmax是要做的事情,因为softmax给出了一个[0

2016.3.24 交叉熵

交叉熵 俗话说,千里之行,始于足下,在我踢球的时候,教练总是让我们练习基本功,其实感觉基本功才是重点,如果基本功不好,那么再怎么厉害的战术都不能够执行出来,基本功是发挥的基本和关键,对于网络来说,基本的感觉或者说基本的对于网络的数学感觉也是基本功. 那么对于一个简单的feedforward的普通的全链接的神经网络什么是基本功呢?我认为首先需要对激活函数有一个感觉,尤其是对于sigmoid,这是非线性的一个里程碑式的函数.对于这个重要问题,一定要深入理解各项基本特性.简单描述一下,这个函数再0附近

交叉熵代价函数

本文是<Neural networks and deep learning>概览 中第三章的一部分,讲machine learning算法中用得很多的交叉熵代价函数. 1.从方差代价函数说起 代价函数经常用方差代价函数(即采用均方误差MSE),比如对于一个神经元(单输入单输出,sigmoid函数),定义其代价函数为: 其中y是我们期望的输出,a为神经元的实际输出[ a=σ(z), where z=wx+b ]. 在训练神经网络过程中,我们通过梯度下降算法来更新w和b,因此需要计算代价函数对w和

最大似然估计 (Maximum Likelihood Estimation), 交叉熵 (Cross Entropy) 与深度神经网络

最近在看深度学习的"花书" (也就是Ian Goodfellow那本了),第五章机器学习基础部分的解释很精华,对比PRML少了很多复杂的推理,比较适合闲暇的时候翻开看看.今天准备写一写很多童鞋们w未必完全理解的最大似然估计的部分. 单纯从原理上来说,最大似然估计并不是一个非常难以理解的东西.最大似然估计不过就是评估模型好坏的方式,它是很多种不同评估方式中的一种.未来准备写一写最大似然估计与它的好朋友们,比如说贝叶斯估计 (Beyasian Estimation), 最大后验估计(Max

谈谈交叉熵损失函数

一.交叉熵损失函数形式 现在给出三种交叉熵损失函数的形式,来思考下分别表示的的什么含义. --式子1 --式子2 --式子3 解释下符号,m为样本的个数,C为类别个数.上面三个式子都可以作为神经网络的损失函数作为训练,那么区别是什么? ■1>式子1,用于那些类别之间互斥(如:一张图片中只能保护猫或者狗的其中一个)的单任务分类中.连接的 softmax层之后的概率分布. tensorflow中的函数为:  tf.nn.softmax_cross_entropy_with_logits ■2>式子

【机器学习基础】熵、KL散度、交叉熵

熵(entropy).KL 散度(Kullback-Leibler (KL) divergence)和交叉熵(cross-entropy)在机器学习的很多地方会用到.比如在决策树模型使用信息增益来选择一个最佳的划分,使得熵下降最大:深度学习模型最后一层使用 softmax 激活函数后,我们也常使用交叉熵来计算两个分布的"距离".KL散度和交叉熵很像,都可以衡量两个分布之间的差异,相互之间可以转化. 1. 如何量化信息? 信息论是应用数学的一个分支,主要研究的是对一个信号包含信息的多少进

交叉熵损失函数

交叉熵损失是分类任务中的常用损失函数,但是是否注意到二分类与多分类情况下的交叉熵形式上的不同呢? 两种形式 这两个都是交叉熵损失函数,但是看起来长的却有天壤之别.为什么同是交叉熵损失函数,长的却不一样? 因为这两个交叉熵损失函数对应不同的最后一层的输出:第一个对应的最后一层是softmax,第二个对应的最后一层是sigmoid 先来看下信息论中交叉熵的形式 交叉熵是用来描述两个分布的距离的,神经网络训练的目的就是使 g(x) 逼近 p(x). softmax层的交叉熵 (x)是什么呢?就是最后一