【深度学习】关键技术-损失函数(Loss Function)

损失函数(Loss Function) 是机器学习和深度学习模型训练过程中的核心概念,用于度量模型的预测输出与真实标签之间的差异。通过最小化损失函数的值,模型可以逐步优化其参数,提高预测性能。


损失函数的作用

  1. 衡量模型性能:反映模型当前的预测能力,误差越小,模型越好。
  2. 指导参数优化:通过梯度下降等优化算法,依据损失函数值的变化方向更新参数。
  3. 选择适合的训练目标:不同任务(分类、回归等)需要不同的损失函数。

常见的损失函数

1. 回归问题
  • 均方误差(Mean Squared Error, MSE)

    \text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2
    • 用途:适用于连续值预测问题,如房价预测。
    • 特点:对大误差较敏感。
  • 平均绝对误差(Mean Absolute Error, MAE)

    \text{MAE} = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i|
    • 用途:适用于回归问题。
    • 特点:对离群值的影响较小,但不可微分。
  • Huber 损失

    L(a) = \begin{cases} \frac{1}{2}(y - \hat{y})^2, & \text{if } |y - \hat{y}| \leq \delta \\ \delta |y - \hat{y}| - \frac{1}{2}\delta^2, & \text{otherwise} \end{cases}
    • 用途:结合了 MSE 和 MAE 的优点,对离群值不敏感。
    • 特点:适用于对异常值具有鲁棒性的场景。

2. 分类问题
  • 交叉熵损失(Cross-Entropy Loss)

    • 二分类\text{Loss} = - \frac{1}{n} \sum_{i=1}^{n} \left[y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i)\right]
    • 多分类\text{Loss} = - \frac{1}{n} \sum_{i=1}^{n} \sum_{j=1}^{C} y_{ij} \log(\hat{y}_{ij})
    • 用途:适用于分类任务,如图像分类、文本分类。
    • 特点:对概率分布建模效果显著。
  • KL 散度(Kullback-Leibler Divergence)

    D_{KL}(P || Q) = \sum_i P(i) \log \frac{P(i)}{Q(i)}
    • 用途:用于衡量两个概率分布之间的差异。
    • 特点:常用作正则化项,结合交叉熵。

3. 其他任务
  • 对比损失(Contrastive Loss)

    \text{Loss} = \frac{1}{2N} \sum_{i=1}^{N} \left[y \cdot d^2 + (1 - y) \cdot \max(0, m - d)^2\right]
    • 用途:用于对比学习、匹配问题。
    • 特点:区分正负样本对。
  • 生成对抗网络(GAN)的损失

    • 生成器损失: \text{Loss}_G = -\log(D(G(z)))
    • 判别器损失: \text{Loss}_D = -\left[\log(D(x)) + \log(1 - D(G(z)))\right]

代码示例

以下是使用不同损失函数的代码示例:

MSE 损失(回归任务)
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.losses import MeanSquaredError

# 创建模型
model = Sequential([
    Dense(64, activation='relu', input_shape=(10,)),
    Dense(1)
])

# 编译模型
model.compile(optimizer='adam', loss=MeanSquaredError())

交叉熵损失(二分类任务)
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.losses import BinaryCrossentropy

# 创建模型
model = Sequential([
    Dense(64, activation='relu', input_shape=(10,)),
    Dense(1, activation='sigmoid')
])

# 编译模型
model.compile(optimizer='adam', loss=BinaryCrossentropy())

自定义 Huber 损失
from tensorflow.keras.losses import Loss
import tensorflow as tf

class HuberLoss(Loss):
    def __init__(self, delta=1.0):
        super().__init__()
        self.delta = delta

    def call(self, y_true, y_pred):
        error = y_true - y_pred
        is_small_error = tf.abs(error) <= self.delta
        squared_loss = 0.5 * tf.square(error)
        linear_loss = self.delta * tf.abs(error) - 0.5 * tf.square(self.delta)
        return tf.where(is_small_error, squared_loss, linear_loss)

# 编译模型
model.compile(optimizer='adam', loss=HuberLoss(delta=1.0))


选择合适的损失函数

  1. 回归任务:使用 MSE、MAE 或 Huber Loss。
  2. 分类任务:使用交叉熵损失。
  3. 对比学习:使用对比损失或其他定制的距离度量损失。
  4. 生成任务:根据模型类型(如 GAN)选择对应的损失。

选择适合的损失函数是模型性能优化的重要步骤,应结合任务目标和数据特性进行实验调优。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

软件测试 —— Postman(2)

软件测试 —— Postman&#xff08;2&#xff09; GETURL结构协议与主机名路径查询字符串&#xff08;Query String&#xff09; 总结 urlcode和urldecodeParams 参数Authorization基本结构常见的认证方案1. Basic 认证2. Bearer Token (OAuth 2.0)3. API 密钥4. 其他认证方案 …

靠右行驶数学建模分析(2014MCM美赛A题)

笔记 题目 要求分析&#xff1a; 比较规则的性能&#xff0c;分为light和heavy两种情况&#xff0c;性能指的是 a.流量与安全 b. 速度限制等分析左侧驾驶分析智能系统 论文 参考论文 两类规则分析 靠右行驶&#xff08;第一条&#xff09;2. 无限制&#xff08;去掉了第一条…

算法日记6.StarryCoding P52:我们都需要0(异或)

一、题目 二、题解&#xff1a; 1、对于这道题&#xff0c;题意为让我们寻找一个数x使得 b[i]a[i]^x&#xff0c; 并且b[1]^b[2]^b[3]^ b[4]^b[5]....0 2、我们把b[i]给拆开&#xff0c;可以得到 3、又因为^满足结合律&#xff0c;因此&#xff0c;可以把括号给拆开 4、接着…

快速入门:如何注册并使用GPT

文章目录 ProtonMail邮箱步骤 1&#xff1a;访问Proton官网步骤 2&#xff1a;创建ProtonMail账户步骤 3&#xff1a;选择注册免费账户步骤 4&#xff1a;填写邮箱地址和手机号&#xff08;可选&#xff09;步骤 5&#xff1a;邮箱验证&#xff08;必须进行验证&#xff09;步骤…

嵌入式硬件篇---PID控制

文章目录 前言第一部分&#xff1a;连续PID1.比例&#xff08;Proportional&#xff0c;P&#xff09;控制2.积分&#xff08;Integral&#xff0c;I&#xff09;控制3.微分&#xff08;Derivative&#xff0c;D&#xff09;控制4.PID的工作原理5..实质6.分析7.各种PID控制器P控…

将IDLE里面python环境pyqt5配置的vscode

首先安装pyqt5全套&#xff1a;pip install pyqt5-tools 打开Vscode&#xff1a; 安装第三方扩展&#xff1a;PYQT Integration 成功配置designer.exe的路径【个人安装pyqt5的执行路径】&#xff0c;便可直接打开UI文件&#xff0c;进行编辑。 配置pyuic,如果下图填写方法使用…

LDD3学习9--数据类型和定时器

这部分对应的是第七章和第十一章&#xff0c;因为内容也不是很多&#xff0c;就一起写了。里面的内容基本上就是一个个的点&#xff0c;所以也就一个个点简单总结一下。 1 数据类型 1.1 数据长度 不同操作系统类型长度可能不一样&#xff0c;看图的话最好用u8&#xff0c;u16&…

python http server运行Angular 单页面路由时重定向,解决404问题

问题 当Angular在本地ng server运行时候&#xff0c;可以顺利访问各级路由。 但是运行ng build后&#xff0c;在dist 路径下的打包好的额index.html 必须要在服务器下运行才能加载。 在服务器下我们第一次访问路由页面时是没有问题的&#xff0c;但是尝试刷新页面或手动输入路…

SparkSQL数据源与数据存储

文章目录 1. 大数据分析流程2. Spark SQL数据源2.1 SparkSQL常见数据源2.2 SparkSQL支持的文本格式2.3 加载外部数据源步骤 3. 本地文件系统加载数据3.1 本地文件系统加载JSON格式数据3.1.1 概述3.1.2 案例演示 3.2 本地文件系统加载CSV格式数据3.2.1 概述3.2.2 案例演示 3.3 本…

LLM - 大模型 ScallingLaws 的 CLM 和 MLM 中不同系数(PLM) 教程(2)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/145188660 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 Scalin…

AI agent 在 6G 网络应用,无人机群控场景

AI agent 在 6G 网络应用,无人机群控场景 随着 6G 时代的临近,融合人工智能成为关键趋势。借鉴 IT 行业 AI Agent 应用范式,提出 6G AI Agent 技术框架,包含多模型融合、定制化 Agent 和插件式环境交互理念,构建了涵盖四层结构的框架。通过各层协同实现自主环境感知等能力…

信息奥赛一本通 1168:大整数加法

这道题是一道大整数加法&#xff0c;涉及到高精度的算法&#xff0c;比如说有两个数要进行相加&#xff0c;1111111111111111111111111111111111111112222222222222222222222222222222&#xff0c;那么如果这两个数很大的话我们常用的数据类型是不能进行计算的&#xff0c;那么…

基于YOLOv4与Tkinter的口罩识别系统

往期精彩 基于YOLOv11的番茄成熟度实时检测系统设计与实现 用YOLOv11检测美国手语&#xff1a;挥动手腕的科技魔法 基于YOLOv11模型PyQt的实时鸡行为检测系统研究 OpenCV与YOLO在人脸识别中的应用研究(论文源码) 计算机视觉&#xff1a;农作物病虫害检测系统&#xff1a;基于Y…

机器学习:监督学习与非监督学习

监督学习是利用带有标签的数据进行训练,模型通过学习输入和输出之间的关系来进行预测。也就是说,数据集中既有输入特征,也有对应的输出标签,模型的目标是找到从输入到输出的映射关系。 而无监督学习则使用没有标签的数据进行训练,模型的任务是发现数据中的内在结构或模式…

【unity进阶篇】不同Unity版本对应的C# 版本和API 兼容级别(Api Compatibility Level)选择

考虑到每个人基础可能不一样&#xff0c;且并不是所有人都有同时做2D、3D开发的需求&#xff0c;所以我把 【零基础入门unity游戏开发】 分为成了C#篇、unity通用篇、unity3D篇、unity2D篇。 【C#篇】&#xff1a;主要讲解C#的基础语法&#xff0c;包括变量、数据类型、运算符、…

H3CNE-13-静态路由(二)

1.路由优先级 路由类型DirectOSPFStaticRIP管理距离01060100 2.路由度量 配置示例&#xff1a; 配置接口IP、静态路由&#xff08;去包、回包&#xff09; 3.静态路由之路由备份 RTB: ip route-static 192.168.1.0 24 10.0.12.1 ip route-ststic 192.168.1.0 24 20.0.12.1 …

【数据分享】1929-2024年全球站点的逐年平均气温数据(Shp\Excel\无需转发)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、湿度等指标&#xff0c;其中又以气温指标最为常用&#xff01;说到气温数据&#xff0c;最详细的气温数据是具体到气象监测站点的气温数据&#xff01;本次我们为大家带来的就是具体到气象监…

[Qualcomm]Qualcomm MDM9607 SDK代码下载操作说明

登录Qualcomm CreatePoing Qualcomm CreatePointhttps://createpoint.qti.qua

PID控制算法原理,并用python实现演示

PID算法控制运用在哪些地方&#xff1f; PID&#xff1a;比列(Proportion)&#xff0c;积分(Integral)&#xff0c;微分(Differential) PID算法可以用来控制温度&#xff0c;压强&#xff0c;流量&#xff0c;化学成分&#xff0c;速度等等。汽车的定速巡航&#xff1b;伺服驱…

C语言之文本加密程序设计

&#x1f31f; 嗨&#xff0c;我是LucianaiB&#xff01; &#x1f30d; 总有人间一两风&#xff0c;填我十万八千梦。 &#x1f680; 路漫漫其修远兮&#xff0c;吾将上下而求索。 文本加密程序设计 摘要&#xff1a;本文设计了一种文本加密程序&#xff0c;旨在提高信息安…