机器学习/深度学习中的常用损失函数公式、原理与代码实践(持续更新ing...)

简介: 本文的结构是首先介绍一些常见的损失函数,然后介绍一些个性化的损失函数实例。

1. 分类 - 交叉熵


讲解博文:损失函数|交叉熵损失函数 - 知乎


1.1 二分类-BCELoss系

二分类可以使用BCELoss,比如链路预测任务预测某条边是否存在,或者多标签分类中将每个类作为一个二分类任务(但是一般来说这样效果会很差),就用BCELoss。

torch.nn.BCEWithLogitsLoss=sigmoid (torch.special.expit) +torch.nn.BCELoss

BCEWithLogitsLoss — PyTorch 1.12 documentation


直接使用torch.nn.BCEWithLogitsLoss在数学上更稳定。

torch.nn.BCEWithLogitsLoss(weight=None, size_average=None, reduce=None, reduction='mean', pos_weight=None)


单标签二分类(一般都是这样的):


loss = nn.BCEWithLogitsLoss()
input = torch.randn(3, requires_grad=True)
target = torch.empty(3).random_(2)
output = loss(input, target)
output.backward()


多标签二分类:


target = torch.ones([10, 64], dtype=torch.float32)  # 64 classes, batch size = 10
output = torch.full([10, 64], 1.5)  # A prediction (logit)
pos_weight = torch.ones([64])  # All weights are equal to 1
criterion = torch.nn.BCEWithLogitsLoss(pos_weight=pos_weight)
criterion(output, target)  # -log(sigmoid(1.5))


输出:tensor(0.2014)


多分类用CrossEntropyLoss(等于softmax+NLLLoss)


其他相关参考资料:

  1. 细数nn.BCELoss与nn.CrossEntropyLoss的区别_python_脚本之家
  2. nn.BCELoss与nn.CrossEntropyLoss的区别_耐耐~的博客-CSDN博客_bceloss和crossentropy
  3. nn.BCELoss()与nn.CrossEntropyLoss()的区别_Offer.harvester的博客-CSDN博客
  4. 【基础知识】多标签分类CrossEntropyLoss 与 二分类BCELoss_All_In_gzx_cc的博客-CSDN博客_bceloss crossentropy
  5. pytorch BCELoss和BCEWithLogitsLoss - 那抹阳光1994 - 博客园
  6. Pytorch nn.BCEWithLogitsLoss()的简单理解与用法_xiongxyowo的博客-CSDN博客_nn.bcewithlogitsloss


2. 二分类 - hinge loss


image.png

参考资料:

  1. Hinge loss - Wikiwand
  2. 怎么样理解SVM中的hinge-loss? - 知乎


3. 回归 - MSE



4. 魔改损失函数的示例


  1. 多任务

SPACES模型,示例损失函数部分TensorFlow1+Keras代码:SPACES/seq2seq_model.py at main · bojone/SPACES


  1. 自定义:图神经网络节点表征模型PTA,PyTorch代码,我参考原始项目复现出来的。损失函数分成2部分,一部分在模型中直接定义随epoch变化的损失函数:rgb-experiment/pta.py at master · PolarisRisingWar/rgb-experiment,一部分在训练和测试的时候额外增加设定的超参:rgb-experiment/itexperiments.py at master · PolarisRisingWar/rgb-experiment


  1. 多任务+自定义:legal judgment prediction模型EPM:在train()函数中,又是多任务,又加了mask(在原论文中定义为“constraint”):EPM/model.py at main · WAPAY/EPM


相关文章
|
7月前
|
机器学习/深度学习 人工智能 JSON
【解决方案】DistilQwen2.5-R1蒸馏小模型在PAI-ModelGallery的训练、评测、压缩及部署实践
阿里云的人工智能平台 PAI,作为一站式的机器学习和深度学习平台,对DistilQwen2.5-R1模型系列提供了全面的技术支持。无论是开发者还是企业客户,都可以通过 PAI-ModelGallery 轻松实现 Qwen2.5 系列模型的训练、评测、压缩和快速部署。本文详细介绍在 PAI 平台使用 DistilQwen2.5-R1 蒸馏模型的全链路最佳实践。
|
2月前
|
机器学习/深度学习 存储 PyTorch
Neural ODE原理与PyTorch实现:深度学习模型的自适应深度调节
Neural ODE将神经网络与微分方程结合,用连续思维建模数据演化,突破传统离散层的限制,实现自适应深度与高效连续学习。
115 3
Neural ODE原理与PyTorch实现:深度学习模型的自适应深度调节
|
6月前
|
人工智能 JSON 算法
【解决方案】DistilQwen2.5-DS3-0324蒸馏小模型在PAI-ModelGallery的训练、评测、压缩及部署实践
DistilQwen 系列是阿里云人工智能平台 PAI 推出的蒸馏语言模型系列,包括 DistilQwen2、DistilQwen2.5、DistilQwen2.5-R1 等。本文详细介绍DistilQwen2.5-DS3-0324蒸馏小模型在PAI-ModelGallery的训练、评测、压缩及部署实践。
|
6月前
|
机器学习/深度学习 人工智能 供应链
从概念到商业价值:AI、机器学习与深度学习全景指南
在这个科技飞速发展的时代🚀,人工智能正以惊人的速度渗透到我们的生活和工作中👀。但面对铺天盖地的AI术语和概念,很多人感到困惑不已😣。"AI"、"机器学习"、"深度学习"和"神经网络"到底有什么区别?它们如何相互关联?如何利用这些技术提升工作效率和创造价值?
|
8月前
|
数据采集 人工智能 API
生物医药蛋白分子数据采集:支撑大模型训练的技术实践分享
作为生物信息学领域的数据工程师,近期在为蛋白质相互作用预测AI大模型构建训练集时,我面临着从PDB、UniProt等学术数据库获取高质量三维结构、序列及功能注释数据的核心挑战。通过综合运用反爬对抗技术,成功突破了数据库的速率限制、验证码验证等反爬机制,将数据采集效率提升4倍,为蛋白质-配体结合预测模型训练提供了包含10万+条有效数据的基础数据集,提高了该模型预测的准确性。
261 1
|
8月前
|
机器学习/深度学习 人工智能 边缘计算
DistilQwen2.5蒸馏小模型在PAI-ModelGallery的训练、评测、压缩及部署实践
DistilQwen2.5 是阿里云人工智能平台 PAI 推出的全新蒸馏大语言模型系列。通过黑盒化和白盒化蒸馏结合的自研蒸馏链路,DistilQwen2.5各个尺寸的模型在多个基准测试数据集上比原始 Qwen2.5 模型有明显效果提升。这一系列模型在移动设备、边缘计算等资源受限的环境中具有更高的性能,在较小参数规模下,显著降低了所需的计算资源和推理时长。阿里云的人工智能平台 PAI,作为一站式的机器学习和深度学习平台,对 DistilQwen2.5 模型系列提供了全面的技术支持。本文详细介绍在 PAI 平台使用 DistilQwen2.5 蒸馏小模型的全链路最佳实践。
|
9月前
|
机器学习/深度学习 数据采集 分布式计算
大数据分析中的机器学习基础:从原理到实践
大数据分析中的机器学习基础:从原理到实践
420 3
|
10月前
|
人工智能 容灾 Serverless
AI推理新纪元,PAI全球化模型推理服务的创新与实践
本次分享主题为“AI推理新纪元,PAI全球化模型推理服务的创新与实践”,由阿里云高级产品经理李林杨主讲。内容涵盖生成式AI时代推理服务的变化与挑战、play IM核心引擎的优势及ES专属网关的应用。通过LM智能路由、多模态异步生成等技术,PAI平台实现了30%以上的成本降低和显著性能提升,确保全球客户的业务稳定运行并支持异地容灾,目前已覆盖16个地域,拥有10万张显卡的推理集群。
|
10月前
|
机器学习/深度学习 运维 安全
深度学习在安全事件检测中的应用:守护数字世界的利器
深度学习在安全事件检测中的应用:守护数字世界的利器
384 22

热门文章

最新文章