当前位置: 首页 > article >正文

深度学习系列--02.损失函数

一.定义

损失函数(Loss Function)是机器学习和深度学习中用于衡量模型预测结果与真实标签之间差异的函数,它在模型训练和评估过程中起着至关重要的作用

二.作用

1.指导模型训练

  • 提供优化方向:在训练模型时,我们的目标是调整模型的参数,使模型的预测结果尽可能接近真实结果。损失函数通过计算预测值与真实值之间的差异,为模型参数的调整提供了方向。例如在梯度下降算法中,会根据损失函数对参数的梯度来更新参数,使得损失函数的值逐渐减小,即模型朝着预测结果更准确的方向优化。
  • 确定训练停止条件:训练过程通常会持续进行,直到损失函数的值收敛到一个较小的值或者达到预设的训练轮数等条件。损失函数的值可以作为判断模型是否已经训练好的一个重要依据。当损失函数不再明显下降时,我们可以认为模型已经达到了一个相对较好的状态,此时可以停止训练,防止过拟合等问题。

2.评估模型性能 

  • 衡量模型优劣:在模型训练完成后,需要对模型的性能进行评估。损失函数的值可以直观地反映模型在测试数据集上的表现。损失函数值越小,说明模型的预测结果与真实值越接近,模型的性能也就越好。通过比较不同模型在相同数据集上的损失函数值,我们可以选择出性能最优的模型。
  • 比较不同算法和参数设置:在尝试不同的机器学习算法或对同一算法使用不同的参数设置时,损失函数可以帮助我们评估哪种算法或参数设置更优。例如在选择线性回归模型的正则化参数时,可以通过比较不同参数下模型的损失函数值,找到使损失最小的参数值,从而确定最优的模型配置

常见的损失函数包括均方误差(MSE)、交叉熵损失函数、绝对值损失函数等,不同的损失函数适用于不同的任务和数据类型,例如回归任务常用 MSE,分类任务常用交叉熵损失函数。 

三.损失函数是如何指导模型训练的 

  以下以简单的线性回归模型和均方误差损失函数为例,说明损失函数是如何指导模型训练的:

  假设我们有一组数据点(Xi,Yi),其中Xi是输入特征,Yi是对应的真实输出值,我们想要训练一个线性回归模型 y = wx + b 来拟合这些数据,这里w是权重,b是偏置。我们选择均方误差(MSE)作为损失函数,其计算公式为:

其中 y^i = wxi + b 是模型的预测值,是数据点的数量。 

训练过程如下:

  1. 随机初始化参数
    首先,随机初始化权重和偏置的值,例如w=0.5,b=0.2。此时模型的预测结果可能与真实值相差较大,损失函数的值也会比较大。

     2. 计算损失值

     3.计算梯度
接下来,需要计算损失函数对权重和偏置的梯度。根据求导公式可得:

     4. 更新参数

      5.重复迭代

重复步骤 2 到步骤 4,不断计算损失值、梯度,并更新参数。随着迭代的进行,损失函数的值会逐渐减小,模型的预测结果会越来越接近真实值。例如,经过多次迭代后,假设,,此时重新计算损失值:

此时损失函数值为 0,说明模型已经完美拟合了这组数据(在实际情况中,损失函数值通常不会恰好为 0,但会趋近于一个较小的值)。

  通过以上过程可以看出,损失函数通过计算预测值与真实值的差异,得到损失值,并通过计算梯度为模型参数的更新提供方向,使得模型在训练过程中不断调整参数,以减小损失函数的值,从而逐渐提高模型的准确性。

 四.常见的损失函数

1. 分类任务

 交叉熵损失函数(Cross-Entropy Loss)

 对数损失函数(Log Loss)

 Hinge 损失函数

2. 回归任务

平均绝对误差损失函数(Mean Absolute Error, MAE) 

 平均绝对百分比误差损失函数(Mean Absolute Percentage Error, MAPE)

Huber 损失函数 

 3.其他


http://www.kler.cn/a/534207.html

相关文章:

  • 基于直觉的理性思维入口:相提并论的三者 以“网络”为例
  • HTML5 教程之标签(3)
  • AI绘画:解锁商业设计新宇宙(6/10)
  • 如何优化垃圾回收机制?
  • 论deepseek软件底层原理
  • 基序和纯度分数的计算
  • k8m 是一款轻量级、跨平台的 Kubernetes 仪表板
  • RabbitMQ:python基础调用
  • DS图(中)(19)
  • 【分布式架构理论2】分布式架构要处理的问题及解决方案
  • 【自然语言处理(NLP)】Bahdanau 注意力(Bahdanau Attention)原理及代码实现
  • Day36-【13003】短文,数组的行主序方式,矩阵的压缩存储,对称、三角、稀疏矩阵和三元组线性表,广义表求长度、深度、表头、表尾等
  • 02、NodeJS学习笔记,第二节:express与中间件
  • Redis常见数据类型与编码方式
  • RabbitMQ 与 Kafka 的核心区别,如何选择合适的消息中间件?
  • 【LLM】为何DeepSeek 弃用MST却采用Rejection采样
  • 洛谷P2638 安全系统
  • 解锁.NET Fiddle:在线编程的神奇之旅
  • 【Elasticsearch】filter聚合
  • 信标链的基本概念
  • python基础入门:2.2运算符与表达式
  • 根据SQL导出三线表文档
  • 能否通过蓝牙建立TCP/IP连接来传输数据
  • js-对象-JSON
  • [LeetCode] 二叉树 I — 深度优先遍历(前中后序遍历) | 广度优先遍历(层序遍历):递归法迭代法
  • 微服务知识——微服务架构的演进过程