Softmax classifier[通俗易懂]

Softmax classifier[通俗易懂]Softmaxclassifier原文链接SVM是两个常见的分类器之一。另一个比较常见的是Softmax分类器,它具有不同的损失函数。如果你听说过二分类的Logistic回归分类器,那么Softmax分类器就是将其推广到多个类。不同于SVM将 f(xi,W) 的输出结果 (为校准,可能难以解释)作为每个分类的评判标准,Softmax分类器给出了一个稍直观的输出(归一化的类概率),并且也有

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

Softmax classifier原文链接

SVM是两个常见的分类器之一。另一个比较常见的是Softmax分类器,它具有不同的损失函数。如果你听说过二分类的Logistic回归分类器,那么Softmax分类器就是将其推广到多个类。不同于SVM将  f(xi,W)  的输出结果 (为校准,可能难以解释)作为每个分类的评判标准,Softmax分类器给出了一个稍直观的输出(归一化的类概率),并且也有一个概率解释,我们将在后面介绍。在Softmax分类器中,映射函数f(xi; W)= Wxi保持不变,但是我们现在将这些得分解释为每个类的非归一化对数概率,并用具有以下形式的交叉熵损失代替hinge loss:



L                             i=log(efyijefj)             等价于          Li=fyi+logjefj

我们使用符号fj来表示向量f的第j个元素的分类得分。如前所述,数据集的全部损失是所有训练样例中的Li的平均值加正则化项R(W)。
 函数  fj(z)=ezjkezk     就是损失函数:它需要一个任意实值分数(在z中)的向量 ,并将其压缩到0和1之间的值,向量和为1。 

如果你是第一次看到它softmax函数的完整的交叉熵损失可能看起来很恐怖,但相对容易激发。 

信息理论观。 “真实”分布p与估计分布q之间的交叉熵定义为:         

H(p,q)=xp(x)logq(x
 
因此,Softmax分类器将 预估的分类概率(q = efyi /Σjefj如上所述)和“真实”分布之间的交叉熵最小化,

也就是说,所有概率项在正确类上的分布(即,p = [0,… 1,…,0]在第y位置包含单个1。此外,由于交叉熵可以用

熵和Kullback-Leibler发散来表示为:H(p,q)=H(p)+DKL(p||q) 
并且Δ函数p的熵为零,这也相当于使两个分布之间的KL发散最小化(距离的度量)。
换句话说,交叉熵目标希望预测的所有块,在正确答案中均可以找到。

概率解释。 看着这个表达式,我们看到了:
(yixi;W)=efyijefj
 
可以解释为给定图像xi并由参数化的W的正确标签yi的(归一化)概率。
要看到这一点,请记住,Softmax分类器将输出向量f内的分数 解释为非归一化取对数后的概率。
指定这些数量,给出(非归一化)概率,并且分割执行归一化,使得概率总和为1。
在概率解释中,我们因此将负对数最小化作为正确分类的似然函数,这可以解释为执行最大似然估计(MLE)。
这个观点的一个很好的特点是,现在我们现在也可以将全损失函数中的正则化项R(W)解释为来自
加权矩阵W之前的高斯,其中代替MLE,我们执行最大后验(MAP) )估计。
我们提到这些解释来帮助你的直观的了解,但这个推导的全部细节超出了本部分的范围。

实际问题:数值稳定。在实践中,由于指数,中间项efyi和Σjefj可能非常大。
分割大数可能在数值上不稳定,所以使用规范化技巧很重要。
请注意,如果我们将分数的顶部和底部乘以常数C并将其变换为指数累加,
我们得到以下(数学上等效的)表达式:


efyijefj=CefyiCjefj=efyi+logCjefj+logC  

       
我们可以自由选择C.这不会改变任何结果,但是我们可以使用这个值来提高计算的数值稳定性。
C的常见选择是设置 logC=maxjfj .这里需要指出,我们应该将向量f内的值移位,使得最高值为零。
代码如下:

f = np.array([123, 456, 789]) # example with 3 classes and each having large scores
p = np.exp(f) / np.sum(np.exp(f)) # Bad: Numeric problem, potential blowup

# instead: first shift the values of f so that the highest number is 0:
f -= np.max(f) # f becomes [-666, -333, 0]
p = np.exp(f) / np.sum(np.exp(f)) # safe to do, gives the correct answer

Jetbrains全家桶1年46,售后保障稳定

可能混淆命名约定。确切地说,SVM分类器使用hinge损失,有时也称为最大损耗。
Softmax分类器从softmax函数获取其名称,该函数用于将原始分数压缩为归一化的正值,总和为1,从而可以应用交叉熵损失。
特别要注意的是,从技术上来说,谈论“softmax损失”是没有意义的,因为softmax只是挤压功能,但它是一个比较常用的速记。

交叉熵代价函数(cross-entropy cost function)

下面的公式对应一个神经元,多输入单输出:

Softmax classifier[通俗易懂]

sorry,翻译完,自己也看不懂了!能力有限。就说说自己的理解吧!

softmax是一个分类器,计算的是某个类别的概率。是logistic regression的一种推广,logistic regression只能用于二分类,而softmax可以用于多分类。



在用caffe做深度学习的时候,用户的最终目的可能就是得到各个类别的概率的
似然值,这时候就需要一个softmax层,而不一定要进行softmax-loss操作,

或者用户通过其他方式已经得到了某个概率的似然值,然后要做
最大似然估计,此时只需要做softmax-loss,而不需要前面的softmax操作。

 

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

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

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

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

(0)
blank

相关推荐

  • Vue父组件向子组件传值之props详解

    Vue父组件向子组件传值之props详解文章目录子组件必须通过props访问父组件数据注意:JavaScript中使用驼峰命名,HTML中使用短横线分割命名子组件中的data组件中的props子组件不能修改父组件中的数据组件实例的作用域是孤立的。这就意味着不能在子组件的模板内直接引用父组件的数据。父组件的数据需要通过props才能下送到子组件中。子组件必须通过props访问父组件数据一个组件可以直接在模板里面…

  • 【Unity3D 灵巧小知识点】 ☀️ | Unity中如何使用代码切换场景

    【Unity3D 灵巧小知识点】 ☀️ | Unity中如何使用代码切换场景Unity小科普老规矩,先介绍一下Unity的科普小知识:Unity是实时3D互动内容创作和运营平台。包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助Unity将创意变成现实。Unity平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。也可以简单把Unity理解为一个游戏引擎,可以用来专业制作游戏!Unity小知识点学习Unity中如何使用代码切.

  • 傅里叶变换一步步详细推导「建议收藏」

    傅里叶变换一步步详细推导「建议收藏」前言在大学的时候接触过几次傅里叶变换的知识,但是从来没真正懂过.也在网上找过很多资料,看过很多视频,但是,这些内容要么举些简单的例子说说直观上的理解,要么就是直接堆出公式没有任何推导.直到一个巧合在B站上看到这样一个视频才真正搞懂,非常感谢这位UP主DR_CAN.这篇博客也主要是对视频中的推导模仿一遍.同时记录下笔记方便复习.另外,记录当时一条印象很深的弹幕:根本就没有人会学不懂数学,只是…

  • 应对黑客攻击SQL SERVER数据库中的一个案例

    应对黑客攻击SQL SERVER数据库中的一个案例

  • Springboot连接mysql数据库中文乱码[通俗易懂]

    Springboot连接mysql数据库中文乱码[通俗易懂]第一步:查看springboot->Setting按照我的设置就行了。第二步配置文件中的url**?**后边的按照和我的一样serverTimezone=GMT%2B8&characterEncoding=utf-8第三步查看数据库编码,字段编码,右键数据库查看属性。查看数据库查看字段右键表,选择设计表查看。我的就是这样能插入中文。…

  • ORA-01017: invalid username/password; logon denied 无法使用密码登录oracle centos linux redhat

    ORA-01017: invalid username/password; logon denied 无法使用密码登录oracle centos linux redhat登录报错[oracle@centos-7_3dbs]$sqlplus/nologSQL*Plus:Release11.2.0.4.0ProductiononThuAug2920:59:412019Copyright(c)1982,2013,Oracle.Allrightsreserved.SQL>conn/assysdbaCon…

发表回复

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

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