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)

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 磁盘阵列恢复方法以及注意事项

    磁盘阵列恢复方法以及注意事项想要弄清楚磁盘阵列恢复,首先就得知道什么是磁盘阵列,磁盘阵列多用于存储服务器,数据服务器等企业级大数据存储领域,磁盘阵列是把多块独立的物理硬盘按不同方式组合起来形成一个逻辑硬盘,当磁盘瘫痪或硬件损坏后,为了恢复存储在阵列平台的数据被称之为磁盘阵列数据恢复,而磁盘阵列能够提供比单个硬盘有着更高的性能和提供数据冗余的技术。  对于做数据恢复人员来讲,最怕的是什么,那就是在客户发现数据丢失后,没有停

    2022年4月29日
    90
  • 关于开源的RTP——jrtplib的使用

    关于开源的RTP——jrtplib的使用

    2021年11月17日
    40
  • mysql workbench如何导入数据库_sql数据库脚本导入

    mysql workbench如何导入数据库_sql数据库脚本导入首先,打开MySQLworkbench,先新建数据库(我们会把.sql文件导入之这个数据库),新建数据库过程如下:先点击1处,新建数据库,给数据库起个名字,点击appy,就创建成功了。之后点击2处,就可以看到现有的数据库了。这里圈出来的是我新建的数据库,双击选中这个数据库(双击选中很重要,因为选中之后才能将.sql文件导入这个数据库中)。然后点击左上方的第二个图标(图中圈出来的那…

    2022年10月2日
    4
  • 数据库常见查询语句_数据库检索语句

    数据库常见查询语句_数据库检索语句常用数据库查询语句基本查询select字段1,字段2,…from表名;例如:selectid,namefromstu;条件查询select字段1,字段2,…from表名where字段关系符号值;关系符号<=>=<=!=大于等于大于等于小于等于不等于例如:select*fromstuid>2;andorin(范围内满足in内部条件)

    2022年9月8日
    1
  • eplan激活码破解步骤win10【2021.7最新】

    (eplan激活码破解步骤win10)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~MLZP…

    2022年3月21日
    1.4K
  • grid常用设置

    grid常用设置父元素1.dispaly:grid|inline-grid|subgrid;grid:生成块级网格inline-grid:生成行内网格subgrid:如果网格容器本身是网格项(嵌套网格容器),此属性用来继承其父网格容器的列、行大小2.grid-template-columns行大小grid-template-rows列大小3.单元格间距grid-column-…

    2022年7月27日
    13

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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