深度学习:神经网络中的损失函数的使用

深度学习:神经网络中的损失函数的使用

损失函数是监督学习中的关键组成部分,用于衡量模型预测值与真实值之间的差异。优化算法(如梯度下降)通过最小化损失函数来调整模型参数,以提高模型的预测精度。以下是几种常用的损失函数及其在PyTorch中的实现和应用的详细解释:

1. L1 损失(绝对误差损失)

L1 损失是一个基于预测值和真实值之间绝对差值的损失函数,常用于回归问题。它有助于提高模型的鲁棒性,尤其是在异常值存在的情况下。

数学表达式

[ L ( y , y ^ ) = ∑ i = 1 n ∣ y i − y ^ i ∣ L(y, \hat{y}) = \sum_{i=1}^n |y_i - \hat{y}_i| L(y,y^)=i=1nyiy^i ]
其中 ( y i y_i yi) 是真实值,( y ^ i \hat{y}_i y^i) 是预测值。

PyTorch 实现
import torch
import torch.nn as nnloss_fn = nn.L1Loss()
y_true = torch.tensor([2, 3, 4, 5], dtype=torch.float)
y_pred = torch.tensor([1.5, 3.5, 3.8, 5.2], dtype=torch.float)
loss = loss_fn(y_pred, y_true)
示例

计算 L1 损失:
[ $L = |2 - 1.5| + |3 - 3.5| + |4 - 3.8| + |5 - 5.2| = 0.5 + 0.5 + 0.2 + 0.2 = 1.4 $]

2. MSE 损失(均方误差损失)

均方误差损失是回归问题中最常用的损失函数之一,计算真实值与预测值之间差值的平方和的均值。它放大了较大误差的影响,使模型更加注重减少大的预测误差。

数学表达式

[ $L(y, \hat{y}) = \frac{1}{n} \sum_{i=1}^n (y_i - \hat{y}_i)^2 KaTeX parse error: Can't use function '\]' in math mode at position 1: \̲]̲ 其中 \(y_iKaTeX parse error: Can't use function '\)' in math mode at position 1: \̲)̲ 是真实值,\(\hat{y}_i$) 是预测值。

PyTorch 实现
loss_fn = nn.MSELoss()
loss = loss_fn(y_pred, y_true)
示例

计算 MSE:
[ L = 1 4 ( ( 2 − 1.5 ) 2 + ( 3 − 3.5 ) 2 + ( 4 − 3.8 ) 2 + ( 5 − 5.2 ) 2 ) = 1 4 ( 0.25 + 0.25 + 0.04 + 0.04 ) = 0.145 L = \frac{1}{4}((2 - 1.5)^2 + (3 - 3.5)^2 + (4 - 3.8)^2 + (5 - 5.2)^2) = \frac{1}{4}(0.25 + 0.25 + 0.04 + 0.04) = 0.145 L=41((21.5)2+(33.5)2+(43.8)2+(55.2)2)=41(0.25+0.25+0.04+0.04)=0.145 ]

3. 交叉熵损失(Cross-Entropy Loss)

交叉熵损失是分类问题中最常用的损失函数之一,特别适用于多类分类问题。它衡量的是预测概率分布与真实分布之间的差异。

数学表达式

[ L = − ∑ c = 1 M y c log ⁡ ( p c ) L = -\sum_{c=1}^M y_c \log(p_c) L=c=1Myclog(pc) ]
其中 ( y c y_c yc) 是如果样本属于类别 ( c c c),则为1,否则为0;( p c p_c pc) 是预测样本属于类别 ( c c c) 的概率。

PyTorch 实现
loss_fn = nn.CrossEntropyLoss()
# 注意:CrossEntropyLoss的输入不应用one-hot编码,且预测值不通过softmax
y_true = torch.tensor([1])  # 类别索引为1
y_pred = torch.tensor([[0.1, 0.6, 0.3]])  # logits
loss = loss_fn(y_pred, y_true)
示例

计算交叉熵损失:
[ L = − ( 0 ⋅ log ⁡ ( 0.1 ) + 1 ⋅ log ⁡ ( 0.6 ) + 0 ⋅ log ⁡ ( 0.3 ) ) = − log ⁡ ( 0.6 ) ≈ 0.51 L = -(0 \cdot \log(0.1) + 1 \cdot \log(0.6) + 0 \cdot \log(0.3)) = -\log(0.6) \approx 0.51 L=(0log(0.1)+1log(0.6)+0log(0.3))=log(0.6)0.51 ]

总结

损失函数是衡量模型性能的重要工具,通过最小化损失,我们可以使模型在特定任务上表现得更好。选择合适的损失函数对于模型的最终性能至关重要,应根据具体任务和数据的性质来选择。在PyTorch中,使用这些损失函数可以直接通过简单的API调用实现,方便模型的训练和优化。

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

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

相关文章

ThreeJS入门(142):THREE.WebGLRenderTarget 知识详解,示例代码

作者: 还是大剑师兰特 ,曾为美国某知名大学计算机专业研究生,现为国内GIS领域高级前端工程师,CSDN知名博主,深耕openlayers、leaflet、mapbox、cesium,webgl,ThreeJS,canvas&#xf…

GitLab 部署和配置指南

GitLab 部署和配置指南 1. GitLab 容器配置概述 在部署 GitLab 时,可能涉及以下几部分内容: 内置 Nginx 的配置和调整。HTTPS 证书的申请、使用和续期。通过 FRP 映射内网服务到外部服务器。阿里云服务器的 Nginx 配置和反向代理。 本文将完整涵盖这…

Streamlit + AI大模型API实现视频字幕提取

简介 在本文中,我将带你探讨如何使用Streamlit和AI大模型API来实现视频字幕提取的技术。Streamlit是一个开源的Python库,用于快速构建数据应用的Web界面,而AI大模型API,如OpenAI,提供了强大的语言处理能力&#xff0c…

SpringBoot - spring.profiles.active最佳实践

文章目录 Pre概述为什么需要多环境配置多环境配置实现步骤1. 配置文件准备2. 激活特定环境方法1:命令行参数方法2:环境变量方法3:IDE 配置方法4:全局配置文件默认设置 3. 配置文件加载顺序配置生效的原理 4. 常见问题多个配置文件…

深入理解 Vue 3 中的 emit

深入理解 Vue 3 中的 emit 在 Vue 3 中,组件通信是开发中非常重要的一部分,其中通过 emit 实现父子组件通信是最常见的方式之一。emit 的作用是:子组件可以通过触发自定义事件将数据传递给父组件。 在本篇文章中,我们将从以下几…

C++结构型设计模式之适配器模式概述

适配器模式的意图和动机 意图:适配器模式(Adapter Pattern)是一种结构型设计模式,其意图是将一个类的接口转换成客户端所期望的另一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的类可以协同工作。 动机&#xff1a…

网安瞭望台第2期:零日漏洞密集爆发、2024年常见网络安全漏洞类型及分析

国内外要闻 Ubuntu 服务器 Needrestart 软件包惊现严重安全漏洞 近日,Ubuntu 服务器(自 21.04 版本起默认安装)的 Needrestart 软件包被曝存在多个可追溯至数十年前的安全漏洞。这些漏洞允许本地攻击者在无需用户交互的情况下获取根…

【Linux】apt 关闭 ssl 认证

【注意】apt 关闭 ssl 认证可能会引起软件安装风险,请尽量避免关闭。 执行以下命令可以实现全局关闭 sll 验证。 echo Acquire::https::Verify-Peer "false"; >> /etc/apt/apt.conf.d/99disable-signature-verificationecho Acquire::https::Verif…

Java前端基础——CSS

一、CSS介绍 1.1 什么是CSS CSS(Cascading Style Sheet),层叠样式表,用于控制页面的样式. CSS 能够对网页中元素位置的排版进行像素级精确控制, 实现美化页面的效果. 能够做到页面的样式和结构分离. 1.2 基本语法规范 选择器 {⼀条/N条声明} • 选择器决定针…

浅议Flink中的通讯工具: Akka

在Flink中,各个组件之间需要频繁交换数据和控制信息。Flink选择了基于Actor模型的Akka框架作为通信基础。 Akka是什么 Actor模型 Actor模型是用于单个进程中并发的场景。 在Actor模型中: ActorSystem负责管理actor生命周期 将每个实体视为独立的 Ac…

Java-05 深入浅出 MyBatis - 配置深入 动态 SQL 参数、循环、片段

点一下关注吧!!!非常感谢!!持续更新!!! 大数据篇正在更新!https://blog.csdn.net/w776341482/category_12713819.html 目前已经更新到了: MyBatis&#xff…

Vue.js 自定义指令:从零开始创建自己的指令

vue使用directive 前言vue2使用vue3使用 前言 关于使用自定义指令在官网中是这样描述的 vue2:对普通 DOM 元素进行底层操作,这时候就会用到自定义指令。 vue3:自定义指令主要是为了重用涉及普通元素的底层 DOM 访问的逻辑。 在 Vue.js 中使用自定义指令&#xf…

uni-app快速入门(十一)--常用JS API(上)

在前面学习了uni-app的布局、组件、路由等知识点以后,还要掌握uni-app的JS API ,也可以理解为基于uni-app的java script。本节介绍uni-app的request请求、文件上传、数据缓存、获取位置、获取系统信息、获取手机的网络状态、拨打电话API。 一、request请求 使用uni…

Ubuntu24.04解决向日葵安装libgconf-2-4依赖问题

最近在加装的ssd上加装了个Ubuntu,当然要装最新的长期支持稳定版啦,24.04.1,却发现常用的向日葵不好安装成功,即使是官方的说明,应该是用这个版本系统的人还不多。 找到了一个帅哥的解决方案,是可行的 但是…

工厂模式-工厂方法模式实现

具体的产品有具体的工厂类生产,这样当新增商品时,不需要修改原来的工厂类 主要有4个角色 抽象工厂 具体工厂 抽象产品 具体产品 1. 定义抽象产品,本文以生产手机为例 /*** @desc 抽象产品**/ public interface Phone { } 2. 定义具体产品-Apple /*** @desc 具体产品…

详解SpringCloud集成Camunda7.19实现工作流审批(一)

背景是公司里的一个企业管理系统项目里许多业务涉及了审批流,因此需要引进工作流引擎来开发一个通用的工作流服务,经过调研最终采用的是集成Camunda7.19版本引擎来实现文章目录 一、参考资源二、工作流简介三、工作流引擎四、Camunda安装1.流程图设计器2…

【Linux内核剖析】深入分析inet_init的处理机制

inet_init 是 Linux 内核中用于初始化 TCP/IP 协议栈的函数。它在内核启动时被调用,完成各种协议和数据结构的注册和初始化。 主要功能: 注册 TCP、UDP、ICMP 等协议。初始化 ARP、IP 和其他网络协议模块。设置 socket 操作和协议处理。 前后调用关系链…

使用 .NET 创建新的 WPF 应用

本教程介绍如何使用 Visual Studio 创建新的 Windows Presentation Foundation (WPF) 应用。 使用 Visual Studio,可以向窗口添加控件以设计应用的 UI,并处理这些控件中的输入事件以与用户交互。 在本教程结束时,你有一…

【机器学习chp3】判别式分类器:线性判别函数、线性分类器、广义线性分类器、分段线性分类器

前言: 本文遗留问题:(1)对最小平方误差分类器的理解不清晰.(2)分段线性判别函数的局部训练法理解不清晰。 推荐文章1,其中有关于感知机的分析 【王木头从感知机到神经网络】-CSDN博客 推荐文…

聚焦 NLP 和生成式 AI 的创新与未来 基础前置知识点

给学生们讲解的技术内容可以根据他们的背景、兴趣和教学目标来规划。以下是一些适合不同阶段和领域的技术主题建议,尤其是与大语言模型(如 ChatGPT)相关的内容: 1. 自然语言处理(NLP)基础 适合对 NLP 了解…