为什么要返回softmax_为什么softmax搭配cross entropy是解决分类问题的通用方案?

136d0bd186549399ee6b565fc6464b78.png

众所周知,softmax+cross entropy是在线性模型、神经网络等模型中解决分类问题的通用方案,但是为什么选择这种方案呢?它相对于其他方案有什么优势?笔者一直也困惑不解,最近浏览了一些资料,有一些小小心得,希望大家指正~

损失函数:交叉熵Cross Entropy

我们可以从三个角度来理解cross entropy的物理意义

从实例上直观理解

我们首先来看Cross Entropy 的公式:

假设存在两个分布

为样本的真实分布,
为模型预测出的样本分布,则在给定的样本集
上,交叉熵的计算方式为

通常情况下在线性模型、神经网络等模型中,关于样本的真实分布可以用one-hot的编码来表示,比如男、女分别可以用[0,1]和[1,0]来表示,同样的,C种类别的样本可以用长度为C的向量来表示,且一个样本的表示向量中有且仅有一个维度为1,其余为0。那会造成什么后果呢?我们来看一个例子,假设一个样本的真实label为

,预测的分布为
,则交叉熵为:

如果预测分布为

,则交叉熵为:

可以看出其实

只与label中1所对应下标的预测值有关,且该预测值越大,
越小

只要label中1所对应下标的预测值越接近1,则损失函数越小,这在直观上就是符合我们对于损失函数的预期

交叉熵为什么比均方误差好

作为回归问题的常见损失函数,均方误差公式为

,好像也可以用来计算分类问题的损失函数,那它为什么不适合分类问题呢?我们再来看一个例子假设一个样本的真实label为[0,0,0,1,0],预测的分布为
,预测分布
,此时
,也就是说对于
而言,
即使与label中1所对应下标的预测值是正确的,其他项预测值的分布也会影响损失的大小,这不符合我们对于分类问题损失函数的预期

似然估计的视角

我们知道,对于一个多分类问题,给定样本

,它的似然函数可以表示为

其中

是模型预测的概率,
是对应类的label,
为类别的个数,那么其
负对数似然估计则为:

,
对应于
对应于
,其实
交叉熵就是对应于该样本的负对数似然估计

KL散度视角

KL散度又被称为相对熵,可以用来衡量两个分布之间的距离,想了解KL散度可以参考如何理解K-L散度。需要了解的是:KL散度越小,两个分布越相近。这么看KL散度是不是很符合我们对于两个分布损失函数的定义呢?

KL散度的公式为:

其中

的熵,注意这里的
是样本的真实分布,所以
为常数,因此,KL散度与交叉熵事实上是等价的,所以
交叉熵也可以用来衡量两个分布之间的距离,符合我们对于损失函数的期待

softmax+cross entropy到底学到了什么?

我们知道在回归问题中的最常用的损失函数是均方误差

,那么在反向传播时,
,即
均方误差在反向传播时传递的是预测值与label值的偏差,这显然是一个符合我们预期的、非常直觉的结果。

假定分类问题的最后一个隐藏层和输出层如下图所示

e5ee0911237d97d10322c786641d9b6c.png

为最后一个隐藏层的C个类别,
为输出层,则有
因此softmax+cross entropy在反向传播时传递的同样是预测值与label值的偏差,即
,如果对于证明不感兴趣的,那么这篇文章就可以到此结束了~以下均为证明过程。

图中

,我们用
表示分母
,则

注意这里的
与所有的
都相关,因此需要用链式法则求导

下面求

的求导分为两种情况

时,

时,

代入上式得

注意这里
为所有label的和,应该等于1。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/380978.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

servlet下载文件(注意文件名字必须是英文)

直接将代码放在servlet下,把文件名字换成自己要下载的就行 文件要放在WEGCONTEN下 //获得下载文件的名称String filename request.getParameter("filename");//要下载的这个文件的类型 -----客户端根据mime类型区分别response.setContentType(this.getS…

2010.07.13_19:30

又是地铁中,音乐在响,离目的地一半,又一天上班结束。转载于:https://www.cnblogs.com/sunxi2003/archive/2010/07/13/1776724.html

焊接空间臂_焊接烟尘净化器设备哪种好

焊接烟尘净化器设备采用滤筒除尘器,焊接烟尘净化器用于焊接、切割、打磨等工序中产生烟尘和粉尘的净化以及对稀有金属、贵重物料的回收等,可净化大量悬浮在空气中对人体有害的细小金属颗粒。具有净化效率高、噪声低、使用灵活、占地面积小等特点。 适用于…

关于Tomcat文件下载中文名乱码现象

//获得下载文件的名称 String filename request.getParameter(“filename”); //解决获得中文参数的乱码 filename new String(filename.getBytes(“ISO8859-1”),“UTF-8”); //获得请求头的User-Agent String agent request.getHeader(“User-Agent”); //根据不同的浏览器…

【摘录】C语言中利用 strtok函数进行字符串分割

C语言不像Java,Php之类的高级语言,对象中直接封装了字符串的处理函数。C语言中进行普通的字符串处理也经常会让我们焦头烂额……不过好在C语言 中还是提供了像strtok这样功能强大的字符串处理函数,可以帮我们实现部分需要的功能。下面我们介绍一下strtok…

x86汇编指令大全

X86和X87汇编指令大全(有注释) ---------- 一、数据传输指令 ---------------------------------------------------- 它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据. 1. 通用数据传送指令. MOV 传送字或字节. MOVSX …

woe分析_Python数据分析—apply函数

在对海量数据进行分析的过程中,我们可能要把文本型的数据处理成数值型的数据,方便放到模型中进行使用。也可能需要把数值型的数据分段进行处理,比如变量的woe化。而这些操作都可以借助python中的apply函数进行处理。今天介绍数据分析的第四课…

树莓派3b安装ubuntu mate(在有显示器前提下看)

树莓派安装: 准备材料 tf卡(建议16G)数据线树莓派win32烧录软件 ,百度云链接:链接:https://pan.baidu.com/s/16Dq2XrqeJScUO_DxHRIz_g 提取码:kfkbubtuntu mate系统(建议不要下ubu…

vb逆向常用函数

1) 数据类型转换: a) __vbaI2Str 将一个字符串转为8 位(1个字节)的数值形式(范围在 0 至 255 之间) 或2 个字节的数值形式(范围在 -32,768 到 32,767 之间)。 b)__vbaI4Str 将一个字符串转为长整型(4个字节)的数值形式(范围从-2,147,483,6482,147,…

回车转换成Tab

<script language"javascript" for"document" event"onkeydown"> if(event.keyCode13 && event.srcElement.type!’button’ && event.srcElement.type!’submit’ && event.srcElement.type!’reset’ &&am…

打包mac应用_把网址链接打包成电脑软件的制作方法

前言&#xff1a;学习一下把web页面打包成运行在桌面的应用, 并支持win / mac / linux 等平台, 记一下使用过程, 有需要的大(同)佬(学)可以玩玩~第一步 – 安装 node.jsnode.js下载地址&#xff1a;http://nodejs.cn/download/下载 Windows 安装包 (.msi) 和 Windows 二进制文件…

用eclipse往mysql插入中文出现乱码解决方法

用eclipse往mysql插入中文出现乱码的解决方法 注&#xff1a;我用的是c3p0结合DButils操作数据库 在要从页面获得数据的代码上面设置&#xff1a; request.setCharacterEncoding("UTF-8"); 在c3p0-config文件里设置&#xff1a; <property name"jdbcUrl&…

c++ 中extern C 及#ifdef __cplusplus的作用

浅析extern “C”的作用 关于extern “C”的作用和意思&#xff0c;网上资料已经有很多了&#xff08;我也参考了几篇&#xff09;&#xff0c;不过我还是觉得有必要自己总结一下&#xff0c;毕竟“好记性不如烂笔头”嘛~~ 到C标准函数库的头文件里看看&#xff0c;一般会经常看…

对多个WCF服务进行统一的连接测试

先看下面的代码&#xff1a;代码代码 BasicHttpBinding myBinding newBasicHttpBinding(); EndpointAddress myEndpoint newEndpointAddress(endAddress); ChannelFactory<IMyService>myChannelFactory newChannelFactory<IMyService>(myBinding,my…

宜昌宝塔河项目_宜昌城区首个垃圾分类定时定点投放点启用 厨余垃圾破袋投放...

伍家岗区宝联社区黄龙小区的垃圾分类定时定点投放点启用。(市环境卫生管理处供图)(记者郑璐、通讯员陈赞)1月1日&#xff0c;宜昌城区首个垃圾分类定时定点投放点在伍家岗区宝塔河街办宝联社区黄龙小区正式启用。该投放点每天开放5小时&#xff0c;上午7&#xff1a;00-9:30&am…

eclipseweb开发response和request接收发送数据乱码问题

第一种&#xff1a;request接收到的数据出现乱码&#xff1a; 在request接收数据前面设置如下代码 requset.setCharacterEncoding("UTF-8);reponse往页面写中文出现乱码&#xff1a; 在要往页面输入内容前面设置&#xff1a; response.setContentType("text/html;…

C++函数名的修饰规则

我们知道在C中有函数重载这样一个东西&#xff0c;当我们定义了几个功能类似且函数名是一样的函数的时候&#xff0c;只要它的参数列表不同&#xff0c;编译是可以通过的&#xff0c;但是在C中是不可以的。 double add(double a, double b) { return a b; } int add(int …

装配图位置偏转怎么调整_物理微课|匀变速直线运动、电容器动态分析及磁偏转技巧、方法、模型...

匀变速直线运动三大推论是什么&#xff1f;如何利用它们快速解题&#xff1f;电容器动态分析的重点是什么&#xff1f;磁偏转问题有什么严谨好用的技巧和方法&#xff1f;物理侯老师为您详细解答以上问题。高一匀变速直线运动三大推论 匀变速直线运动是我们高中学的第一个变速…

Cooki模拟登陆(人人网)

我们在爬取网上一些数据时&#xff0c;必须登陆才能爬取到数据&#xff0c;这是我们就需要Cookie了&#xff0c;Cookie简单说就是服务器返回给我们的一些数据&#xff0c;保存到客户端&#xff0c;下次登陆时&#xff0c;服务器会识别这些数据&#xff0c;可以返回我们上次的数…

静态变量与动态变量

0.静态存储与动态存储 1&#xff09;静态存储变量通常是在变量定义时就分定存储单元并一直保持不变&#xff0c;直至整个程序结束。静态变量&#xff0c;全局动态变量都是静态存储 2&#xff09;动态存储变量是在程序执行过程中&#xff0c;使用它时才分配存储单元&#xff0c…