分类模型为什么使用交叉熵作为损失函数

推导过程

让推理更有体感,进行下面假设:

  1. 假设要对进行图片识别分类
  2. 假设模型输出 y y y,是一个几率,表示是猫的概率

训练资料如下:

x n x^n xn类别 y ^ n \widehat{y}^n y n
x 1 x^1 x11
x 2 x^2 x21
x 3 x^3 x30

注: x 1 x^1 x1是第一组训练资料它是属于猫,因为我们使用one-hot来表示目标类别,所以 y ^ i n \widehat{y}^n_i y in要么等于0,要么等于1

损失函数怎么定义比较好?我们优先想到的是判断结果是否和真实值相等

L o s s = [ f ( x 1 ) ≠ y ^ 1 ] + [ f ( x 2 ) ≠ y ^ 2 ] + [ f ( x 3 ) ≠ y ^ 3 ] Loss=[f(x^1) \neq \widehat{y}^1]+[f(x^2) \neq \widehat{y}^2]+[f(x^3) \neq \widehat{y}^3] Loss=[f(x1)=y 1]+[f(x2)=y 2]+[f(x3)=y 3]
f ( x n ) = { 1 , y n > 0.5 0 , y n < = 0.5 f(x^n)= \begin{dcases} 1 , y^n > 0.5 \\ 0 ,y^n <=0.5 \end{dcases} f(xn)={1yn>0.50yn<=0.5
只需要找到 w ∗ , b ∗ = arg ⁡ m i n w , b L ( w , b ) w^*,b^*=\arg\underset{w,b}{min}L(w,b) w,b=argw,bminL(w,b) 使得Loss最小即可
但是上面的 f ( x n ) f(x^n) f(xn)无法进行微分,不能计算梯度

所以重新寻找Loss函数:
L o s s = f ( x 1 ) + f ( x 2 ) + ( 1 − f ( x 3 ) ) = y 1 + y 2 + ( 1 − y 3 ) Loss=f(x^1)+f(x^2)+(1-f(x^3))= y^1+y^2+(1-y^3) Loss=f(x1)+f(x2)+(1f(x3))=y1+y2+(1y3)
Loss越大说明和训练集越相似,效果越好,我们希望找到一个 w ∗ , b ∗ = arg ⁡ m a x w , b L ( w , b ) w^*,b^*=\arg\underset{w,b}{max}L(w,b) w,b=argw,bmaxL(w,b) 使得Loss最大

但是Loss多大算大?我们还是希望找到一个最小Loss,最好趋近于0
所以对Loss再次变形,对Loss加一个 负 l n ln ln,我们就可以求Loss的最小值了
w ∗ , b ∗ = arg ⁡ m a x w , b L ( w , b ) = arg ⁡ m i n w , b − l n L ( w , b ) w^*,b^*=\arg\underset{w,b}{max}L(w,b)=\arg\underset{w,b}{min}-lnL(w,b) w,b=argw,bmaxL(w,b)=argw,bminlnL(w,b)

推导:
L o s s = − [ l n f ( x 1 ) + l n f ( x 2 ) + ( 1 − l n f ( x 3 ) ) ] Loss=-[lnf(x^1)+lnf(x^2)+(1-lnf(x^3))] Loss=[lnf(x1)+lnf(x2)+(1lnf(x3))]

因为 y ^ i n \widehat{y}^n_i y in要么等于0,要么等于1,所以可得: { l n f ( x n ) = y ^ n l n f ( x n ) + ( 1 − y ^ n ) l n ( 1 − l n f ( x n ) ) 1 − l n f ( x n ) = y ^ n l n f ( x n ) + ( 1 − y ^ n ) l n ( 1 − l n f ( x n ) ) \begin{dcases} lnf(x^n)=\widehat{y}^nlnf(x^n)+(1-\widehat{y}^n)ln(1-lnf(x^n)) \\ 1-lnf(x^n)=\widehat{y}^nlnf(x^n)+(1-\widehat{y}^n)ln(1-lnf(x^n)) \end{dcases} {lnf(xn)=y nlnf(xn)+(1y n)ln(1lnf(xn))1lnf(xn)=y nlnf(xn)+(1y n)ln(1lnf(xn))

= − [ y ^ 1 l n f ( x 1 ) + ( 1 − y ^ 1 ) l n ( 1 − l n f ( x 1 ) ) + y ^ 2 l n f ( x 2 ) + ( 1 − y ^ 2 ) l n ( 1 − l n f ( x 2 ) ) + y ^ 3 l n f ( x 3 ) + ( 1 − y ^ 3 ) l n ( 1 − l n f ( x 3 ) ) ] =-[\widehat{y}^1lnf(x^1)+(1-\widehat{y}^1)ln(1-lnf(x^1))+\widehat{y}^2lnf(x^2)+(1-\widehat{y}^2)ln(1-lnf(x^2))+\widehat{y}^3lnf(x^3)+(1-\widehat{y}^3)ln(1-lnf(x^3))] =[y 1lnf(x1)+(1y 1)ln(1lnf(x1))+y 2lnf(x2)+(1y 2)ln(1lnf(x2))+y 3lnf(x3)+(1y 3)ln(1lnf(x3))]

= − ∑ [ y ^ n l n f ( x n ) + ( 1 − y ^ n ) l n ( 1 − l n f ( x n ) ) ] =-\sum[\widehat{y}^nlnf(x^n)+(1-\widehat{y}^n)ln(1-lnf(x^n))] =[y nlnf(xn)+(1y n)ln(1lnf(xn))]

设: p ( x ) p(x) p(x)为二项分布,其中 p ( 1 ) = y ^ n p(1)=\widehat{y}^n p(1)=y n p ( 0 ) = 1 − y ^ n p(0)=1-\widehat{y}^n p(0)=1y n
设: q ( x ) q(x) q(x)为二项分布,其中 q ( 1 ) = f ( x n ) q(1)=f(x^n) q(1)=f(xn) q ( 0 ) = 1 − f ( x n ) q(0)=1-f(x^n) q(0)=1f(xn)
= − ∑ i = 1 N p ( x ) l n ( q ( x ) ) =-\displaystyle\sum_{i=1}^Np(x)ln(q(x)) =i=1Np(x)ln(q(x))
= ∑ i = 1 N p ( x ) l n ( 1 q ( x ) ) =\displaystyle\sum_{i=1}^Np(x)ln(\frac{1}{q(x)}) =i=1Np(x)ln(q(x)1)

**交叉熵(cross entropy)**的数学公式如下:
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/9dcfc80e77e349bdb2f256cbb4097b49.png

  • 如果我们把模型输出和真实值看做是一个二项分布的话,那么Loss的最终定义就是这两个二项分布越接近越好

交叉熵可在神经网络中作为损失函数,p表示真实标记的分布,q则为训练后的模型的预测标记分布,交叉熵损失函数可以衡量p与q的相似性。交叉熵作为损失函数还有一个好处是使用sigmoid函数在梯度下降时能避免均方误差损失函数学习速率降低的问题,因为学习速率可以被输出的误差所控制。

问题

为什么不使用平均方差作为Loss函数呢?

  1. 假设 L o s s = 1 2 ∑ ( f ( x n ) − y ^ n ) 2 Loss=\frac{1}{2}\sum(f(x^n)-\widehat{y}^n)^2 Loss=21(f(xn)y n)2
  2. 假设用的是sigmoid函数

求导之后:
在这里插入图片描述
注: f ( x ) f(x) f(x)的导数是 f ( x ) ( 1 − f ( x ) ) f(x)(1-f(x)) f(x)(1f(x))
对于红色字体中的式子来说:
当y=1,f(x) = 1的时候,gradient=0,那么暂停训练是合理的
但y=1,f(x) = 0,这个时候和实际值有差距,应该继续训练,但gradient=0了
在这里插入图片描述

分类如果超过2维怎么办?

如果还是使用one-hot来表示目标类别,那么输出变为了多个,经过softmax函数之后都是0~1之间的数,把它看做是概率,就是N个二项式概率分布的相似度求和。

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

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

相关文章

快速导入请求到postman

1.确定请求&#xff0c;右键复制为cURL(bash) 2.postman菜单栏Import-Raw text&#xff0c;粘贴复制的内容保存&#xff0c;请求添加成功

第432场周赛:跳过交替单元格的之字形遍历、机器人可以获得的最大金币数、图的最大边权的最小值、统计 K 次操作以内得到非递减子数组的数目

Q1、跳过交替单元格的之字形遍历 1、题目描述 给你一个 m x n 的二维数组 grid&#xff0c;数组由 正整数 组成。 你的任务是以 之字形 遍历 grid&#xff0c;同时跳过每个 交替 的单元格。 之字形遍历的定义如下&#xff1a; 从左上角的单元格 (0, 0) 开始。在当前行中向…

专题 - STM32

基础 基础知识 STM所有产品线&#xff08;列举型号&#xff09;&#xff1a; STM产品的3内核架构&#xff08;列举ARM芯片架构&#xff09;&#xff1a; STM32的3开发方式&#xff1a; STM32的5开发工具和套件&#xff1a; 若要在电脑上直接硬件级调试STM32设备&#xff0c;则…

基于Django的个性化餐饮管理系统

系统展示 用户前台界面 管理员后台界面 系统背景 该系统的研发对于餐饮行业具有重要意义。首先&#xff0c;通过个性化餐饮管理系统的应用&#xff0c;餐饮企业能够精准把握顾客需求&#xff0c;提供定制化服务&#xff0c;从而增强顾客粘性&#xff0c;提升顾客满意度。其次&a…

scala代码打包配置(maven)

目录 mavenpom.xml打包配置项&#xff08;非完整版&#xff0c;仅含打包的内容< build>&#xff09;pom.xml完整示例&#xff08;需要修改参数&#xff09;效果说明 maven 最主要的方式还是maven进行打包&#xff0c;也好进行配置项的管理 以下为pom文件&#xff08;不要…

plane开源的自托管项目

Plane 是一个开源的自托管项目规划解决方案&#xff0c;专注于问题管理、里程碑跟踪以及产品路线图的设计。作为一款开源软件&#xff0c;Plane 的代码托管在 GitHub 平台上&#xff0c;允许任何人查看和贡献代码。它为用户提供了便捷的项目创建与管理手段&#xff0c;并配备了…

wireshark排除私接小路由

1.wireshark打开&#xff0c;发现了可疑地址&#xff0c;合法的地址段DHCP是192.168.100.0段的&#xff0c;打开后查看发现可疑地址段&#xff0c;分别是&#xff0c;192.168.0.1 192.168.1.174 192.168.1.1。查找到它对应的MAC地址。 ip.src192.168.1.1 2.通过show fdb p…

Elasticsearch:使用 Playground 与你的 PDF 聊天

LLMs作者&#xff1a;来自 Elastic Toms Mura 了解如何将 PDF 文件上传到 Kibana 并使用 Elastic Playground 与它们交互。本博客展示了在 Playground 中与 PDF 聊天的实用示例。 Elasticsearch 8.16 具有一项新功能&#xff0c;可让你将 PDF 文件直接上传到 Kibana 并使用 Pla…

【C++】深入理解string相关函数:实现和分析

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;1. 使用 stoi 和 stol 函数1.1 stoi 和 stol 的基本概述参数说明进制支持示例代码与解析运行结果解析 异常处理 &#x1f4af;2. 使用 stod 和 stof 函数2.1 stod 和 stof …

“AI智能服务平台系统,让生活更便捷、更智能

大家好&#xff0c;我是资深产品经理老王&#xff0c;今天咱们来聊聊一个让生活变得越来越方便的高科技产品——AI智能服务平台系统。这个系统可是现代服务业的一颗璀璨明珠&#xff0c;它究竟有哪些魅力呢&#xff1f;下面我就跟大家伙儿闲聊一下。 一、什么是AI智能服务平台系…

回归预测 | MATLAB实MLR多元线性回归多输入单输出回归预测

回归预测 | MATLAB实MLR多元线性回归多输入单输出回归预测 目录 回归预测 | MATLAB实MLR多元线性回归多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 回归预测 | MATLAB实MLR多元线性回归多输入单输出回归预测。 程序设计 完整代码&#xff1a;回…

页面滚动下拉时,元素变为fixed浮动,上拉到顶部时恢复原状,js代码以视频示例

页面滚动下拉时,元素变为fixed浮动js代码 以视频示例 <style>video{width:100%;height:auto}.div2,#float1{position:fixed;_position:absolute;top:45px;right:0; z-index:250;}button{float:right;display:block;margin:5px} </style><section id"abou…

【Vim Masterclass 笔记09】S06L22:Vim 核心操作训练之 —— 文本的搜索、查找与替换操作(第一部分)

文章目录 S06L22 Search, Find, and Replace - Part One1 从光标位置起&#xff0c;正向定位到当前行的首个字符 b2 从光标位置起&#xff0c;反向查找某个字符3 重复上一次字符查找操作4 定位到目标字符的前一个字符5 单字符查找与 Vim 命令的组合6 跨行查找某字符串7 Vim 的增…

力扣 岛屿数量

从某个点找&#xff0c;不断找相邻位置。 题目 岛屿中被“0”隔开后 &#xff0c;是每一小块状的“1”&#xff0c;本题在问有多少块。可以用dfs进行搜索&#xff0c;遍历每一个点&#xff0c;把每一个点的上下左右做搜索检测&#xff0c;当检测到就标记为“0”表示已访问过&a…

Python学习(四)调用函数、定义函数、函数参数、递归函数

目录 一、调用函数1&#xff09;函数介绍2&#xff09;数据类型转换 二、定义函数1&#xff09;定义函数2&#xff09;空函数3&#xff09;参数检查4&#xff09;返回多个值 三、函数的参数1&#xff09;位置参数2&#xff09;默认参数3&#xff09;可变参数4&#xff09;关键字…

汽车基础软件AutoSAR自学攻略(三)-AutoSAR CP分层架构(2)

汽车基础软件AutoSAR自学攻略(三)-AutoSAR CP分层架构(2) 下面我们继续来介绍AutoSAR CP分层架构&#xff0c;下面的文字和图来自AutoSAR官网目前最新的标准R24-11的分层架构手册。该手册详细讲解了AutoSAR分层架构的设计&#xff0c;下面让我们来一起学习一下。 Introductio…

Mac——Docker desktop安装与使用教程

摘要 本文是一篇关于Mac系统下Docker Desktop安装与使用教程的博文。首先介绍连接WiFi网络&#xff0c;然后详细阐述了如何在Mac上安装Docker&#xff0c;包括下载地址以及不同芯片版本的选择。接着讲解了如何下载基础镜像和指定版本镜像&#xff0c;旨在帮助用户在Mac上高效使…

Jenkins内修改allure报告名称

背景&#xff1a; 最近使用Jenkins搭建自动化测试环境时&#xff0c;使用Jenkins的allure插件生成的报告&#xff0c;一直显示默认ALLURE REPORT&#xff0c;想自定义成与项目关联的名称&#xff0c;如图所示&#xff0c;很明显自定义名称显得高大上些&#xff0c;之前…

ROS Action接口

实现自主导航是使用Action接口的主要目的 在实际使用navigation导航系统的时候&#xff0c;机器人需要自主进行导航。不能每次都手动设置导航的目标点。所以需要编写程序代码来实现导航控制。这就需要使用到navigation的导航接口。Navigation的这个导航接口有好几个。Rose官方…

【复习小结】1-13

数学追求更简洁的表达&#xff0c;计算机追求更简单的表达。数据结构把数学的逻辑结构放进计算器的存储器。 DAY4 闰年的计算 布尔类型是一种数据类型&#xff0c;用于表示逻辑值的简单类型&#xff0c;它的值只能是真&#xff08;true&#xff09;或假&#xff08;false&…