热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

自定义损失函数_关于样本于损失函数的权重

机器学习损失函数的定义非常重要,损失函数决定了如何从样本数据中进行学习,模型的总体损失函数由对样本的损失求和而来,对于特定问题࿰
20470eb8451063798ea5b9f545324dc4.png

机器学习损失函数的定义非常重要,损失函数决定了如何从样本数据中进行学习,模型的总体损失函数由对样本的损失求和而来,对于特定问题,有三种情况需要特别考虑样本损失的权重。

  1. 类别样本不均衡
    对样本量比较少的类别,加大该类样本权重,使模型不至于忽略了该类别的样本特征。比如对于违约样本占比1:9比例的二分类,如果不做权重调整,模型将学习到绝大多数正常样本的特征而忽略了违约样本的特征,此时模型准确率也能达到90%,而我们更关注的是违约样本。
  2. 错误分类样本权重调整
    采用AdaBoost类似的思路,多个模型组成训练队伍在迭代过程中不断对误判的样本加大权重,以期在后续的学习中捕获误判样本的特征,提升模型准确率,为避免过拟合,可以采用多个不同模型进行,学习中不断调整彼此其他模型误判的样本的权重。
  3. Focal Loss
    Focal Loss[1]为近来提出的针对hard/easy样本进行权重调整的方法。思路是对容易区分的样本(easy)调低权重,对难区分(hard)的样本调高权重。比如对于A样本预测概率为(0.9,01),说明模型对该样本很自信,属于easy样本,对于B样本预测概率为(0.53,0.47),说明模型对B这样类似样本的预测缺乏区分度,可以适当调整该样本的权重。具体的,Focal Loss的提出者提出了以下形式的损失函数:
e24cfd08523458b39c4fb3f447b80447.png


其中

为传统意义上的样本权重,比如为解决样本不均衡问题,而
则用于调整hard/easy样本的权重,但p较高(接近1)时,说明样本容易区分,之类样本其权重可以相对调低,当p较低时,权重
会相对变大。Focal Loss的提出者实验表明
取2时效果最佳。

Focal函数的图形如下,
=0时候退化为一般的交叉熵损失函数。
a068e42b25d7655e9357079cf47a7ddc.png


对于梯度下降的学习方法,需要其一阶导数。比如在xgboost上可以通过自定义损失函数实现Focal Loss,因其需要Focal Loss的一阶、二阶导数,用mathematica给出个符号形式:

6a6276c81fda92829c7ed8dc02c979a7.png

参考文献:
[1]Tsung-Yi Lin, Priya Goyal, Ross Girshick, Kaiming He, Piotr Dollár 2017 arXiv:1708.02002



推荐阅读
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • vue使用
    关键词: ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
author-avatar
mobiledu2502871343
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有