机器学习/深度学习中的常用损失函数公式、原理与代码实践(持续更新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


相关文章
|
14天前
|
机器学习/深度学习 人工智能 安全
探索AI的未来:从机器学习到深度学习
【10月更文挑战第28天】本文将带你走进AI的世界,从机器学习的基本概念到深度学习的复杂应用,我们将一起探索AI的未来。你将了解到AI如何改变我们的生活,以及它在未来可能带来的影响。无论你是AI专家还是初学者,这篇文章都将为你提供新的视角和思考。让我们一起探索AI的奥秘,看看它将如何塑造我们的未来。
51 3
|
4天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
19 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
7天前
|
机器学习/深度学习 数据采集 人工智能
探索机器学习:从理论到Python代码实践
【10月更文挑战第36天】本文将深入浅出地介绍机器学习的基本概念、主要算法及其在Python中的实现。我们将通过实际案例,展示如何使用scikit-learn库进行数据预处理、模型选择和参数调优。无论你是初学者还是有一定基础的开发者,都能从中获得启发和实践指导。
17 2
|
8天前
|
机器学习/深度学习 数据采集 人工智能
探索机器学习:从理论到实践
【10月更文挑战第35天】在这篇文章中,我们将深入探讨机器学习的世界。我们将从基础理论开始,然后逐步过渡到实际应用,最后通过代码示例来展示如何实现一个简单的机器学习模型。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和见解。
|
10天前
|
机器学习/深度学习 数据采集 人工智能
揭秘AI:机器学习的魔法与代码
【10月更文挑战第33天】本文将带你走进AI的世界,了解机器学习的原理和应用。我们将通过Python代码示例,展示如何实现一个简单的线性回归模型。无论你是AI新手还是有经验的开发者,这篇文章都会给你带来新的启示。让我们一起探索AI的奥秘吧!
|
1月前
|
机器学习/深度学习 人工智能 算法
揭开深度学习与传统机器学习的神秘面纱:从理论差异到实战代码详解两者间的选择与应用策略全面解析
【10月更文挑战第10天】本文探讨了深度学习与传统机器学习的区别,通过图像识别和语音处理等领域的应用案例,展示了深度学习在自动特征学习和处理大规模数据方面的优势。文中还提供了一个Python代码示例,使用TensorFlow构建多层感知器(MLP)并与Scikit-learn中的逻辑回归模型进行对比,进一步说明了两者的不同特点。
63 2
|
1月前
|
机器学习/深度学习 数据可视化 数据挖掘
机器学习中空间和时间自相关的分析:从理论基础到实践应用
空间和时间自相关是数据分析中的重要概念,揭示了现象在空间和时间维度上的相互依赖关系。本文探讨了这些概念的理论基础,并通过野火风险预测的实际案例,展示了如何利用随机森林模型捕捉时空依赖性,提高预测准确性。
46 0
机器学习中空间和时间自相关的分析:从理论基础到实践应用
|
1月前
|
机器学习/深度学习 人工智能 算法
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
玉米病害识别系统,本系统使用Python作为主要开发语言,通过收集了8种常见的玉米叶部病害图片数据集('矮花叶病', '健康', '灰斑病一般', '灰斑病严重', '锈病一般', '锈病严重', '叶斑病一般', '叶斑病严重'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。再使用Django搭建Web网页操作平台,实现用户上传一张玉米病害图片识别其名称。
55 0
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
|
29天前
|
机器学习/深度学习 自然语言处理 算法
机器学习和深度学习之间的区别
机器学习和深度学习在实际应用中各有优势和局限性。机器学习适用于一些数据量较小、问题相对简单、对模型解释性要求较高的场景;而深度学习则在处理大规模、复杂的数据和任务时表现出色,但需要更多的计算资源和数据,并且模型的解释性较差。在实际应用中,需要根据具体的问题和需求,结合两者的优势,选择合适的方法来解决问题。
55 0
|
29天前
|
机器学习/深度学习 人工智能 自然语言处理
浅谈机器学习与深度学习的区别
浅谈机器学习与深度学习的区别
46 0

热门文章

最新文章