损失函数总结(八):MultiMarginLoss、MultiLabelMarginLoss

news2024/11/18 9:24:04

损失函数总结(八):MultiMarginLoss、MultiLabelMarginLoss

  • 1 引言
  • 2 损失函数
    • 2.1 MultiMarginLoss
    • 2.2 MultiLabelMarginLoss
  • 3 总结

1 引言

在前面的文章中已经介绍了介绍了一系列损失函数 (L1LossMSELossBCELossCrossEntropyLossNLLLossCTCLossPoissonNLLLossGaussianNLLLossKLDivLossBCEWithLogitsLossMarginRankingLossHingeEmbeddingLoss)。在这篇文章中,会接着上文提到的众多损失函数继续进行介绍,给大家带来更多不常见的损失函数的介绍。这里放一张损失函数的机理图:
在这里插入图片描述

2 损失函数

2.1 MultiMarginLoss

MultiMarginLoss 是一种损失函数,通常用于多分类问题,其中每个样本只能属于一个类别。这个损失函数的主要目标是鼓励模型将正确类别的得分与错误类别的得分之间的间隔(差距)最小化。通常,这个损失函数被用于训练神经网络模型,以确保正确的类别获得高的分数,而错误的类别获得低的分数。MultiMarginLoss 的数学表达式如下:
L o s s ( x , y ) = ∑ i w [ y ] ∗ m a x ( 0 , m a r g i n − x [ y ] + x [ i ] ) p x . s i z e ( 0 ) Loss(x, y)=\frac{\sum_iw[y]*max(0, margin-x[y]+x[i])^p}{x.size(0)} Loss(x,y)=x.size(0)iw[y]max(0,marginx[y]+x[i])p

其中:

  • p p p: 默认值为1,仅可选1或者2。
  • m a r g i n margin margin: 默认值为1.
  • w [ y ] w[y] w[y]: 为各类别的weight。weight必须是float类型的tensor,其长度要于类别C一致,即每一个类别都要设置有weight

代码实现(Pytorch):

loss = nn.MultiMarginLoss()
x = torch.tensor([[0.1, 0.2, 0.4, 0.8]])
y = torch.tensor([3])
# 0.25 * ((1-(0.8-0.1)) + (1-(0.8-0.2)) + (1-(0.8-0.4)))
loss(x, y)

在siamese net或者Triplet net任务中被广泛使用。。。。

2.2 MultiLabelMarginLoss

MultiLabelMarginLoss 是一种损失函数,通常用于多标签分类问题,其中每个样本可以属于多个类别。它有助于训练模型以将样本正确分类到其相关类别,并在训练中惩罚不正确的分类。MultiLabelMarginLoss 的数学表达式如下:
L o s s ( x , y ) = ∑ i j m a x ( 0 , 1 − ( x [ y [ j ] ] − x [ i ] ) ) x . s i z e ( 0 ) Loss(x, y) = \sum_{ij}\frac{max(0,1-(x[y[j]] - x[i]))}{x.size(0)} Loss(x,y)=ijx.size(0)max(0,1(x[y[j]]x[i]))

其中:

  • x [ y [ j ] ] x[y[j]] x[y[j]]: 表示 样本x所属类的输出值。
  • x [ i ] x[i] x[i]: 表示不等于该类的输出值。 并且,对于所有的 i i i j j j i ≠ y [ j ] i\neq y[j] i=y[j]

代码实现(Pytorch):

loss = nn.MultiLabelMarginLoss()
x = torch.FloatTensor([[0.1, 0.2, 0.4, 0.8]])
# for target y, only consider labels 3 and 0, not after label -1
y = torch.LongTensor([[3, 0, -1, 1]])
# 0.25 * ((1-(0.1-0.2)) + (1-(0.1-0.4)) + (1-(0.8-0.2)) + (1-(0.8-0.4)))
loss(x, y)

MultiLabelMarginLoss 是 MultiMarginLoss的多标签版本。。。。

3 总结

到此,使用 损失函数总结(八) 已经介绍完毕了!!! 如果有什么疑问欢迎在评论区提出,对于共性问题可能会后续添加到文章介绍中。如果存在没有提及的损失函数也可以在评论区提出,后续会对其进行添加!!!!

如果觉得这篇文章对你有用,记得点赞、收藏并分享给你的小伙伴们哦😄。

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

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

相关文章

LIS系统-实现检验报告集中管理

LIS系统即实验室信息管理系统。LIS系统能实现临床检验信息化,检验科信息管理自动化。其主要功能是将检验科的实验仪器传出的检验数据经数据分析后,自动生成打印报告,通过网络存储在数据库中,使医生能够通过医生工作站方便、及时地…

基于springboot实现网吧管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现网吧管理系统演示 摘要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生&#x…

JDK11下载、安装与配置、运行第一个Java程序教程

JDK已经更新到20.0.2了,JDK11是相对比较稳定的版本,网上的JDK11安装配置教程一大堆,但是很多都过时了,自己整理了一篇JDK11下载安装的详细步骤,带有每一步的完整的图文教程,大家可以根据自己的需要下载。 …

pytorch 入门 (五)案例三:乳腺癌识别识别-VGG16实现

本文为🔗小白入门Pytorch内部限免文章 🍨 本文为🔗小白入门Pytorch中的学习记录博客🍦 参考文章:【小白入门Pytorch】乳腺癌识别🍖 原作者:K同学啊 在本案例中,我将带大家探索一下深…

pytorch深度学习实践(二):梯度下降算法详解和代码实现(梯度下降、随机梯度下降、小批量梯度下降的对比)

目录 一、梯度下降1.1 公式与原理1.1.1 cost(w)1.1.2 梯度1.1.3 w的更新 1.2 训练过程可视化1.3 代码实现 二、随机梯度下降(stochastic gradient descent,SDG)2.1 公式与原理2.1.1 w的更新 2.2 代码实现2.3 梯度下降和随机梯度下降的优缺点对…

漏洞复现-jquery-picture-cut 任意文件上传_(CVE-2018-9208)

jquery-picture-cut 任意文件上传_(CVE-2018-9208) 漏洞信息 jQuery Picture Cut v1.1以下版本中存在安全漏洞CVE-2018-9208文件上传漏洞 描述 ​ picture cut是一个jquery插件,以友好和简单的方式处理图像,具有基于bootstrap…

Vue3-小兔鲜项目

1.初始化项目 npm init vuelatest src目录调整 Git项目管理 基于create-vue创建出来的项目默认没有初始化git仓库,需要我们手动初始化 执行命令并完成首次提交 1.git init 2.git add 3.git commit -m "init" 别名路径联想提示 什么是别名路径联想…

通过requests库使用HTTP编写的爬虫程序

使用Python的requests库可以方便地编写HTTP爬虫程序。以下是一个使用requests库的示例: import requests# 发送HTTP GET请求 response requests.get("http://example.com")# 检查响应状态码 if response.status_code 200:# 获取响应内容html response.…

推荐5款助你高效工作的小软件

现在,有很多实用的工具和软件可以帮助我们更高效地完成各种任务。以下是5款值得推荐的工具软件,能够极大地提高我们的工作效率。 1.电子书阅读器——Koodo Reader ​ Koodo Reader 是一款开源免费的电子书阅读器,支持多达15种主流电子书格式…

laravel+vue2 element 一套项目级医院手术麻醉信息系统源码

手术麻醉临床信息系统源码,PHPmysqllaravelvue2 手术麻醉临床信息系统,采用计算机和通信技术,实现监护仪、麻醉机、输液泵等设备输出数据的自动采集,采集的数据能够如实准确地反映患者生命体征参数的变化,并实现信息高…

搜维尔科技:【应用】配备MTi-3的轻便型ROV,在水下进行地理标记视觉检测

部署潜水员进行水下摄像,不仅难度高而且费用昂贵,需要受过潜水和摄像两方面培训的专业人员来进行。但有些水下作业任务例如拍摄海底管道内部的照片,由于人员无法进入或危险度高的原因,无法由潜水员完成。 如今,俄罗…

看谷歌浏览器源码,为什么p标签和div标签为块元素

看谷歌浏览器源码 谷歌源码路径:third_party/blink/renderer/core/html/resources/html.css 为什么块级元素独占一行? 是谷歌浏览器设置div的默认样式 display:block 它才独占一行 p标签和div标签为块元素 strong,b,i,em等等标签为行内元素

如何在Excel中实现三联类模板?

本文由葡萄城技术团队原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 前言 在一些报表打印应用场景中,会有类似于如下图所示的排版格式: 一般情况下将这种类…

k8s statefulSet 学习笔记

缩写: sts 通过 kubectl api-resources 可以查到: NAMESHORTNAMESAPIVERSIONNAMESPACEDKINDstatefulsetsstsapps/v1trueStatefulSet web-sts.yaml apiVersion: v1 kind: Service metadata:name: nginxlabels:app: nginx spec:ports:- port: 80name: web-sts-svc…

22年上半年下午题

第一大题题目 第一大题解答 第一小问 看加工交互和说明来得出实体的名字。如果不太确定,可以多去看几条数据流来确认答案。仔细一点,这分稳啦。 第二小问 需要对应加工结合说明得出数据存储的名称。 一般可以在后面加上表字或者加上信息表。自拟&…

2023年Q3企业邮箱安全性报告:境内钓鱼邮件超过境外攻击

10月25日,Coremail邮件安全联合北京中睿天下信息技术有限公司发布《2023年第三季度企业邮箱安全性研究报告》。2023年第三季度企业邮箱安全呈现出何种态势?作为邮箱管理员,我们又该如何做好防护? 以下为精华版阅读,如需…

u盘资料不小心删掉怎么找回来?一文教会你恢复方法

案例描述:“平时我都是使用U盘来存储和传输公司重要的资料。昨天,不小心将一个文件夹整个删除,里面包含了我准备好几个月的工作成果和重要的项目资料。怎么办!!!救救我的宝贝资料吧!” 在日常生…

简述低功耗语音芯片的含义与特点

低功耗语音芯片是一种功耗较低的集成电路,其集成了语音处理、控制逻辑等多个功能。相比传统的语音芯片,低功耗语音芯片能够在功耗较低的情况下完成更多的功能,因此非常适合移动设备和可穿戴设备等对功耗要求较高的场景。 低功耗语音芯片的主要…

字符串中的assert和stract

assert:函数原型是:void assert( int expression );其作用是现计算表达式 expression ,如果其值为假(即为0),那么它先 stderr 打印一条出信息,然后通过调用 abort 来终止程序运行。使用assert 的缺点是,频繁的调用会影…

AI口语APP的实现方法

开发AI口语应用程序涉及多个技术领域,包括语音识别、自然语言处理、机器学习和应用程序开发。下面是开发AI口语应用程序的一般步骤和实现方法,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作…