一些损失函数的学习

news2024/11/15 21:00:56

CrossEntropy loss

  • 交叉熵是用来衡量两个概率分布之间的差异性或不相似性的度量
  • 交叉熵定义为两个概率分布p和q之间的度量。其中,p通常是真实分布,而q是模型预测的分布
  • 交叉熵还等于信息熵 + 相对熵
  • 这里,x遍历所有可能的事件,p(x)是真实分布中事件 发生的概率,而q(x)是模型预测该事件发生的概率

Negative log Likelihodd loss

似然(Likelihood)

似然是在给定特定模型参数的情况下,观察到当前数据的概率。如果模型参数用0表示,观察
到的数据用X表示,那么似然通常写作L(θ|X)或P(X|θ)。
最大似然估计(MLE)就是寻找能最大化观察到的数据似然的参数值

公式

  • 假设有一个统计模型,其参数为0,并且有一组观测数据X={X1,X2,X3,…Xn}。似然函数L(θ|X)定义为给定参数θ下观测数据X出现的概率:
    L(θ|X)= P(X|θ)
  • 对于独立同分布的数据点,似然可以表示为各个数据点概率的乘积

对数似然(Log-Likelihood)

对数似然是似然的对数形式,通常表示为1ogL(θ|X),对数变换是单调的,不改变似然函数
的最优参数位置。
对数变换通常在数学处理上更方便。特别是当似然是多个概率的乘积时,对数变换可以将乘法转化为加法,简化计算。
在最大似然估计中,通常最大化对数似然而不是似然,因为这在数学上更容易处理。
  • 对数似然是似然函数的自然对数,它在数学处理上更方便,尤其是将乘法转换为加法。对数似然表示为:

负对数似然(Negative Log-Likelihood, NLL)

负对数似然是对数似然的负值,表示为—logL(θ|X),这种形式在优化问题中更为常见。
负对数似然常用作损失函数,由于优化算法通常设计为最小化一个函数,将对数似然取负值可以将似然最大化问题转化为最小化问题
  • 负对数似然是对数似然的负值,常用作损失函数,特别是在最大似然估计中。它的表达式是:

交叉熵就是负对数似然

  • 似然可以写为各个数据点的概率乘积
  • 除以N取平均,再log变成为加,变为对数似然,刚好变为负交叉熵定义式

KL(Kullback–Leibler) divergence也叫相对熵

  • 带入均值和标准差

交叉熵等于信息熵+KL散度

信息熵

  • 它是衡量信息量的一个度量,或者更精确地说,是衡量随机变量不确定性的度量

  • 熵高意味着随机变量的不确定性高,熵低则意味着不确定性低。例如,如果一个随机变量只能取一个值,那么其熵为0,因为这个事件发生的概率是1,没有不确定性

  • 当所有可能事件都具有相同概率时,熵达到最大值,表示最大的不确定性。

  • p是真实分布,q是预测的分布

  • 当在做一个机器学习目标函数时,用交叉熵或KLD单独来看效果是一样的,因为信息熵如果是一个delta(one-hot)分布,那它的值就是0,如果是一个非delta分布,那它也是一个常数,常数对于神经网络的参数更新是没有任何贡献的,所以优化交叉熵loss和KLDloss效果是一样的,只不过数值上不一样(如果目标是delta分布,那数值也一样,这个时候用KLD时把target转换为one-hot向量就可以了)

Binary Cross Entropy二分类交叉熵

  • NLLloss 是BCEloss 的一般形式,所以,可以用NLLloss代替BCEloss来算


调用cosine similarity loss 余弦相似度

  • 余弦相似度是一种用于衡量两个非零向量在方向上的相似程度的度量
  • 可以用来做图片的相似,比如拿一个图片,想要在1百万张图片两找出前100个相似的图片,可以先用resnet等方法得到它的向量表征,然后拿这个图片的向量表征去和这1百万张做余弦相似度,然后得出最相近的前一百个即可
  • 余弦值的范围在 -1 到 1 之间,其中 1 表示两个向量方向完全相同,-1 表示两个向量方向完全相反,0 表示向量之间的角度是 90 度,即它们正交或不相关
  • 余弦相似度衡量的是方向上的相似性,而不是大小上的相似性。这意味着它会忽略两个向量的长度或大小,只关注它们的方向

学习资料:https://www.bilibili.com/video/BV1Sv4y1A7dz/

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

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

相关文章

文件编码、转换、乱码问题

文件编码 用来表示文本内容的字符集和字符编码方式,决定了在文本文件中使用的字符集和字符的二进制表示方式。常见的文件编码包括 UTF-8、UTF-16、ASCII、ISO-8859-1 等。选择文件编码时,需要考虑到所支持的字符集范围、编码方式对特定语言的支持程度以…

学了Python不做全职,那么可以靠哪些兼职赚到钱?

如果学了Python不做全职工作,那么可以靠哪些兼职赚到钱? 今天我们就来看看一位有着4年开发经验的老鸟的分析回答,希望对你有所帮助。 emmm… 以我差不多四年的 Python 使用经验来看,大概可以按以下这些路子来赚到钱,…

【reading notes】

文章目录 中文AA 或 AAAAAAAAAAA,BBBBAAAA,BBBB,CCCCAAAA,BBBB,CCCC,DDDDAAAAAAAAAA,BBBBBAAAAA,BBBBB,CCCCC(肆)AAAAA,BBBBB&#xf…

pyqt5切换到pyqt6遇到问题

pyqt5切换到pyqt6变更点 FramelessWindowHint Qt.FramelessWindowHint Qt.WindowType.FramelessWindowHint globalPos event.globalPos() event.globalPosition() LeftButton Qt.LeftButton Qt.MouseButton.LeftButton StrongFocus Qt.StrongFocus Qt.FocusPolicy.Stro…

助力安全生产--韩施电气为您提供电动机保护及电机故障解决方

上海韩施电气自成立于2008年,是一家专门从事销售电气自动化设备、电力设备、机电设备的综合型贸易公司,公司自成立以来一直专注于EOCR产品的推广销售和技术服务,成为韩国施耐德EOCR在国内的总代理,并授予代理证书,我们…

CNCC 2023 | 大模型全面革新推荐系统!产学界多位大咖精彩献言

随着人工智能领域的不断突破,大模型的潮流已然席卷而来。大模型一跃成为时代的新宠,展现出强大的通用性和泛化能力,为 AI 技术的应用进一步打开了想象空间。与此同时,推荐系统作为大规模机器学习算法应用较为成熟的方向之一&#…

谈谈系统性能调优中都需要考虑哪些因素

一、 什么是性能调优? 这个系统好慢、网站又打不开了,太卡了,又没响应了,相信大家都遇到过用户的这种抱怨,此时,说明我们的应用系统出现了性能问题,那么怎么办呢,首先想到的应该是优…

磁钢的居里温度和工作温度

你知道吗,磁体在超过一定温度时会永久的失磁,不同的磁体能够承受的最大工作温度是不同的,那么与温度相关的指标有哪些?如何根据工作温度来选择合适的磁钢?今天我们就来解答一下这些问题。 居里温度 说到温度与磁性关…

深入分析高性能互连点对点通信开销

今天分享最近阅读的一篇文章:“Breaking Band,A Breakdown of High-Performance Communication”,这篇文章发表在ICPP 2019会议。由加州大学欧文分校和ARM公司合作完成。从题目中可以看到,这篇文章是一篇评测型的文章,…

大厂秋招真题【单调栈】Bilibili2021秋招-大鱼吃小鱼

文章目录 题目描述与示例题目描述输入描述输出描述示例一输入输出说明 示例二输入输出说明 解题思路代码PythonJavaC时空复杂度 华为OD算法/大厂面试高频题算法练习冲刺训练 题目描述与示例 题目描述 小明最近喜欢上了俄罗斯套娃、大鱼吃小鱼这些大的包住小的类型的游戏。 于…

汇编-loop循环指令

LOOP指令是根据ECX计数器循环,将语句块重复执行特定次数。 ECX自动作为计数器, 每重复循环一次就递减1。 语法如下所示: 循环目的地址必须在距离当前位置计数器的-128到127字节范围内 LOOP指令的执行有两个步骤: 第一步&…

记一次线上bug排查-----SpringCloud Gateway组件 请求头accept-encoding导致响应结果乱码

基于公司的业务需求,在SpringCloud Gateway组件的基础上,写了一个转发服务,测试开发阶段运行正常,并实现初步使用。但三个月后,PostMan请求接口,返回异常,经排查,从日志中获取到转发…

js高效函数库Lodash.js

Lodash 是一个 JavaScript 的实用工具库,提供了许多实用且高效的函数,可以简化 JavaScript 编程中的常见任务。 Lodash具有高性能、模块化和易用性等特点,表现一致性以及可扩展,下面将介绍一些 Lodash 的重要特性和用法&#xff1…

解决 VS2022 关于 c++17 报错: C2131 表达式必须含有常量值

使用 VS2022 编译 ORB-SLAM3 加载Vocabulary 二进制ORBvoc.bin 时,在 DBOW2 里修改 TemplatedVocabulary.h 代码显示这样的错误: 编译器错误 C2131 表达式的计算结果不是常数 定位到我的代码中: char buf [size_node] ; 原因 : …

Ultipa Transporter V4.3.22 即将发布,解锁更多易用功能!

Ultipa Graph 作为一款领先的实时图数据库分析平台,即将发布最新版的数据导入/导出工具Ultipa Transporter V4.3.22 以实现对 Neo4j数据源的导入支持。自今年以来,Ultipa Transporter不断增加新功能,除原本支持本地CSV文件导入导出外&#xf…

修改bat文件默认编辑软件

Windows默认编辑bat文件的软件是自带的文本编辑器。无法高亮显示bat中的命令。 修改方式一: 打开注册表文件,变更键值 HKEY_CLASSES_ROOT\batfile\shell\edit\command 对应软件地址 修改方式二: 制作批处理文件,代码如下&#x…

github 开源whisper ros llm

GitHub - openai/whisper: Robust Speech Recognition via Large-Scale Weak Supervision openai whisper ROS LLM https://github.com/Auromix/ROS-LLM/tree/ros2-humble/llm_input

我理解的反射

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 我之前对反射的理解未必…

uni-app:前端实现心跳机制(全局)+局部页面控制心跳暂停和重新心跳

一、App.vue全局中写入心跳 在data中定义变量heartbeatTimer,便于暂停心跳使用在onLaunch中引用开始心跳的方法startHeartbeat()写入开始心跳方法写入暂停心跳方法写入请求后端刷心跳机制 定义变量 // 在全局设置的心跳机制中添加一个变量来保存定时器的标识 data(…