softmax、softmax损失函数、cross-entropy损失函数[通俗易懂]

softmax、softmax损失函数、cross-entropy损失函数[通俗易懂]softmaxsoftmax,顾名思义,就是soft版本的max。在了解softmax之前,先看看什么是hardmax。hardmax就是直接选出一个最大值,例如[1,2,3]的hardmax就是3,而且只选出最大值,非黑即白,但是实际中这种方式往往是不合理的,例如对于文本分类来说,一篇文章或多或少包含着各种主题信息,我们更期望得到文章属于各种主题的概率值,而不是简单直接地归类为某一种唯一的主题。这里就需要用到soft的概念,即不再唯一地确定某一个最大值,而是为每个输出分类

大家好,又见面了,我是你们的朋友全栈君。

softmax

在这里插入图片描述

softmax ,顾名思义,就是 soft 版本的 max。

在了解 softmax 之前,先看看什么是 hardmax。

hardmax 就是直接选出一个最大值,例如 [1,2,3] 的 hardmax 就是 3,而且只选出最大值,非黑即白,但是实际中这种方式往往是不合理的,例如对于文本分类来说,一篇文章或多或少包含着各种主题信息,我们更期望得到文章属于各种主题的概率值,而不是简单直接地归类为某一种唯一的主题。这里就需要用到soft的概念,即不再唯一地确定某一个最大值,而是为每个输出分类的结果都赋予一个概率值,表示属于每个类别的可能性。

hardmax 简单直观,但是有很严重的梯度问题,求最大值这个函数本身的梯度是非常非常稀疏的,例如神经网络中的 max pooling,经过 hardmax 后,只有被选中的那个变量上才有梯度,其他变量都没有梯度。

那么,什么是 softmax?
softmax 就是把原始的变量做一个数学变换,变换公式为
在这里插入图片描述

例如原始变量为 [1,2,3],经过 softmax 后就变成了

[ e^1 / ( e1+e2+e^3 ) ,e^2 / ( e1+e2+e^3 ) ,e^3 / ( e1+e2+e^3 ) ]
=[ 2.718/(2.718+7.389+20.085), 7.389/(2.718+7.389+20.085), 20.085/(2.718+7.389+20.085)]
=[ 0.09, 0.245, 0.665 ]

可以看到,softmax 有以下特征:

  • 所有值都在 [0,1] 之间;
  • 所有值的和加起来等于1;

而上述特征刚好跟概率的概念相符合,因此,可以把它当作概率值。

softmax 不会像 hardmax 那样有严重的梯度问题,能够很方便地求梯度,很适合用于神经网络的反向传播,进行梯度更新。

总的来说,softmax可以将任意一组变量变为概率分布的形式。

softmax 损失函数

由上面可知,softmax函数的表达式为:

在这里插入图片描述

其中i表示输出节点的编号。

假设此时第i个输出节点为正确类别对应的输出节点,则Pi是正确类别对应输出节点的概率值。添加log运算不影响函数的单调性,首先为Pi添加log运算:
在这里插入图片描述

此时Pi是正确类别对应的输出节点的概率,当然希望此时的Pi越大越好。通常情况下使用梯度下降法来迭代求解,因此只需要为 logPi 加上一个负号变成损失函数,变成了希望损失函数越小越好:
在这里插入图片描述

对上面的式子进一步处理:
在这里插入图片描述

上式就是 softmax 损失函数。

softmax 损失函数只针对正确类别的对应的输出节点,将这个位置的softmax值最大化。

卷积神经网络系列之softmax,softmax loss和cross entropy的讲解

cross-entropy 交叉熵损失函数

简单的交叉熵损失函数,你真的懂了吗?

cross-entropy 不是机器学习独有的概念,本质上是用来衡量两个概率分布的相似性的。

softmax、softmax损失函数、cross-entropy损失函数[通俗易懂]

上式中,p代表正确答案,q代表的是预测值。交叉熵值越小,两个概率分布越接近。

需要注意的是,交叉熵刻画的是两个概率分布之间的距离,然而神经网络的输出却不一定是一个概率分布,很多情况下是实数。如何将神经网络前向传播得到的结果也变成概率分布,Softmax回归就是一个非常有用的方法。

在这里插入图片描述

Softmax将神经网络的输出变成了一个概率分布,这个新的输出可以理解为经过神经网络的推导,一个样例为不同类别的概率分别是多大。这样就把神经网络的输出也变成了一个概率分布,从而可以通过交叉熵来计算预测的概率分布和真实答案的概率分布之间的距离了。

在这里插入图片描述

神经网络多分类任务的损失函数——交叉熵

交叉熵损失函数表达式为:
在这里插入图片描述

上述式子中 yc 是指真实样本的标签值,Pc 是指 实际的输出 经过 softmax 计算 后得到的概率值,该式子能够衡量真实分布和实际输出的分布之间的距离,

由于 softmax 可以将一组变量转换为概率分布,而 cross-entropy 又能够衡量两个概率分布之间的距离,因此,softmax 和 cross-entropy 经常结合在一起使用

总的来说,交叉熵损失函数刻画了两个概率分布之间的距离,通常用在神经网络的多分类任务中,可以表示 真实标签值神经网络输出经softmax计算后得到的预测概率值 之间的损失大小

一文详解Softmax函数
你 真的 懂 Softmax 吗?
交叉熵(Cross-Entropy)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/153148.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 电信光猫获取超级管理员密码[通俗易懂]

    电信光猫获取超级管理员密码[通俗易懂]之前网上的教程虽然多少有所不同但是一般都是直接登录192.168.1.1之后再进入一个链接下载一个文件,打开文件里面就可以查询到,或者会有串数字自己换算一下就出来了,甚至很多旧型号直接超级管理员账号和密码都是通用的但是这些方法,不适用于我的光猫,我的光猫型号是TEWA-708E我在这里做一个记录和分享,相同或者相似型号的用户可以参考一下首先进入光猫的管理页面有两个地址都是192.168.1…

  • http接口开发与调用案例[通俗易懂]

    http接口开发与调用案例[通俗易懂]http接口开发与调用案例

  • 1维卷积神经网络_卷积神经网络 一维信号处理

    1维卷积神经网络_卷积神经网络 一维信号处理 维卷积神经网络,可以用来做一维的数据分析,以家用电器的识别分类作为背景。使用excel画出的简单的图形如下,横坐标为用电器开启后的秒数,纵坐标为某一秒的有功功率,由上至下分别为空调(AirConditioner),冰箱(Refrigerator),烤炉(Stove):! 从上面三个图可以看出不同的用电器在工作时会以自己特有的方式工作。从而形成不同的特征峰及平台。接下来使用到的数据一共…

  • DP和HDMI区别「建议收藏」

    转自:https://www.toutiao.com/i6877677362054595080在目前市面上显示器接口中,VGA和DVI已经逐渐退出了历史舞台,Type-C还算是小众,而DP(DisplayPort)与HDMI则成为了主流产品的标配,目前的主流级显卡也是以这两个输出接口为主,而新的问题也随之诞生了:当这两个接口都可以使用的时候,选择哪个会更好?对于大部分普通的消费者来说,显示器能跟主机正常连接就行,随便哪个接口都无所谓,反正能正常使用,但是对于DIY玩家来说,这个问题就显得非常重要

  • C++之内核对象进行线程同步

    用户模式下的线程同步机制提供了非常好的性能,但他们也的确存在一些局限性,而且不适用于许多应用程序,例如,对Interlocked系列函数只能对一个值进行操作,它们从来不会把线程切换到等待状态。我们可以

    2021年12月19日
  • 二叉树的应用:求解四则运算建议收藏

    一二叉树如何表示四则运算1.1 表达式转换为二叉树上图是表达式“3+2*9-16/4”转换成的二叉树,观察表达式,可以看出:(1)操作数都是叶子节点;(2)运算符都是内部节点;(

    2021年12月19日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号