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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 算法交易:华尔街怪兽的核武器

    算法交易:华尔街怪兽的核武器1980年华尔街的黑客生涯:天时地利20世纪70年代末期,算法开始进入人们的工作,这一趋势席卷了世界各地的金融市场,标志着华尔街黑客时代已然来临。华尔街逐渐吸引了美国越来越多杰出的数学家和科学家投身于编写交易算法的工作。在布莱克?斯科尔斯统治市场之前,已经有少数工程师和科学家进入曼哈顿下城市场了,但他们大都是外来移民。麻省理工、哈佛和此类高等学府的工程楼和科学楼成了招聘者竞相争夺人才…

    2022年7月11日
    14
  • NLP学习路线总结

    NLP学习路线总结目录1、自然语言处理概述2、自然语言处理入门基础3、自然语言处理的主要技术范畴4、自然语言处理基本点5、特征处理6、模型选择7、NLP常用工具8、NLP语言模型9、快速入门NLP方法10、自然语言处理学习资料1、自然语言处理概述自然语言处理(NaturalLanguageProcessing,NLP)是计算机科学领域与人工智能领域中的一个重要方向…

    2022年9月28日
    3
  • Cocos2d-x Box2D物理引擎编译设置

    Cocos2d-x Box2D物理引擎编译设置

    2022年1月15日
    44
  • 【谷粒商城】ElasticSearch、上架与检索

    【谷粒商城】ElasticSearch、上架与检索文章目录1.ELASTICSEARCH0、简介1、安装elasticsearch2、初步检索1)_CAT2)索引一个文档3)查看文档4)更新文档5)删除文档或索引6)ES的批量操作——bulk7)样本测试数据3、进阶检索1)searchApi2)QueryDSL(1)基本语法格式(2)返回部分字段(3)match匹配查询(4)match_phrase[短句匹配](5)multi_math【多字段匹配】(6)bool用来做复合查询(7)Filter【结果过滤】(8)term(9)Aggregat

    2022年5月7日
    32
  • spring SchedulerFactoryBean 没有创建 Scheduler的实现类bea

    spring SchedulerFactoryBean 没有创建 Scheduler的实现类bea2019独角兽企业重金招聘Python工程师标准>>>…

    2022年5月23日
    27
  • js定时跳转网页_js 网页代码

    js定时跳转网页_js 网页代码效果如下:五秒跳完之后,转到百度的页面js代码如下:window.οnlοad=init;functioninit(){window.setTimeout(“tiaozhuan()”,5000);window.setInterval(“shijian()”,1000);//五秒后调用tiaozhuan}functiontiaozhuan(){location.replace(“http://www.baidu.com”);} functionshijian(){ var

    2022年8月12日
    8

发表回复

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

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