损失函数

news/2024/9/20 18:31:42/文章来源:https://www.cnblogs.com/EIPsilly/p/18423027

MSE

均方差(Mean squared error,MSE),是真实值与预测值的差值的平方然后求和平均。该指标计算的是拟合数据和原始数据对应样本点的误差的平方和的均值,其值越小说明拟合效果越好

\[MSE=\frac{1}{N}\sum_{i=1}^N(f(x_i)-y_i)^2 \]

RMSE

均方根误差。观测值与真值偏差的平方和与观测次数m比值的平方根。

\[RMSE=\sqrt{\frac{1}{N}\sum_{i=1}^N(f(x_i)-y_i)^2} \]

假如有2000次观测,即N=2000,对于某一次(第i次)观测来说,y值是真实值,而f(x)是观测值,对所有N次观测的的偏差取平方后相加,得到的值再除以m,然后再开根号,就得到RMSE了。

MAE

平均绝对误差(Mean Absolute Error,MAE),观测值与真实值的误差绝对值的平均值。用于评估预测结果和真实数据集的接近程度的程度,其值越小说明拟合效果越好

\[MAE=\frac{1}{N}\sum_{i=1}^N |f(x_i)- y_i| \]

MAPE平均绝对百分误差

\[MAPE=\frac{1}{N} \sum_{i=1}^N|\frac{y_i-f(x_i)}{y_i}| \times 100% \]

MAE和MSE的区别

参考资料:https://blog.csdn.net/qq_42189083/article/details/105811405

关于异常值

MAE和RMSE(即MSE的平方根,同MAE在同一量级中)的两个指标是用来描述预测值与真实值的误差情况。它们之间在的区别在于,RMSE先对偏差做了一次平方,这样,如果误差的离散度高,也就是说,如果最大偏差值大的话,RMSE就放大了。比如真实值是0,对于3次测量值分别是8,3,1,那么

\[RMSE=\sqrt{\frac{1}{3}(64+9+1)}=4.967\\ MAE=\frac{1}{3}(8+3+1)=4 \]

如果3次测量值分别是5,4,3,那么

\[RMSE=\sqrt{\frac{1}{3}(25+16+9)}=4.08\\ MAE=\frac{1}{3}(5+4+3)=4 \]

可以看出,两种情况下MAE相同,但是因为前一种情况下有更大的偏离值,所以RMSE就大的多了。

MSE对误差取了平方(令e=真实值-预测值),因此若e>1,则MSE会进一步增大误差。如果数据中存在异常点,那么e值就会很大,而 \(e^2\) 则会远大于|e|。因此,相对于使用MAE计算损失,使用MSE的模型会赋予异常点更大的权重。在第一个例子中,用RMSE计算损失的模型会以牺牲了其他样本的误差为代价,朝着减小异常点误差的方向更新。然而这就会降低模型的整体性能。如果训练数据被异常点所污染,那么MAE损失就更好用(比如,在训练数据中存在大量错误的反例和正例标记,但是在测试集中没有这个问题)

MSE与MAE如何选择

如果异常点代表在商业中很重要的异常情况,并且需要被检测出来,则应选用MSE损失函数。相反,如果只把异常值当作受损数据,则应选用MAE损失函数。总的来说,处理异常点时,MAE损失函数更稳定,但它的导数不连续,因此求解效率较低。MSE损失函数对异常点更敏感,但通过令其导数为0,可以得到更稳定的封闭解。

关于梯度

\[\frac{dL_\text{MAE}}{x}= \begin{cases} 1 & if x \geq 0\\ -1, & otherwise \end{cases} \]

\[\frac{dL_\text{MSE}}{x}=2x \]

MAE存在一个严重的问题(特别是对于神经网络):更新的梯度始终相同,也就是说,即使对于很小的损失值,梯度也很大。这样不利于模型的学习。为了解决这个缺陷,我们可以使用变化的学习率,在损失接近最小值时降低学习率。而MSE在这种情况下的表现就很好,即便使用固定的学习率也可以有效收敛。MSE损失的梯度随损失增大而增大,而损失趋于0时则会减小。这使得在训练结束时,使用MSE模型的结果会更精确。

交叉熵损失函数「Cross Entropy Loss」

参考资料:

  • https://www.jianshu.com/p/b07f4cd32ba6
  • https://blog.csdn.net/u012505617/article/details/108753869

交叉熵刻画的是实际输出(概率)与期望输出(概率)的距离,也就是交叉熵的值越小,两个概率分布就越接近,即拟合的更好。

交叉熵计算公式

\[H(p,q)=-\sum_{j=1}^Kp(x_j)\log q(x_j) \]

式中 \(x\) 为一个离散随机变量, \(p(x_j)\) 表示第 \(j\) 类的概率。

假设同一随机变量 \(X\) ,我们有两个单独的概率分布 \(P(x)\)\(Q(x)\) ,那KL散度是用以描述这两个分布之间的差异。计算公式:

\[D_{KL}(P\|Q)=E_{x \sim P}[\log P(x) - \log Q(x)] \]

交叉熵和KL散度的关系:

\[H(P,Q)=H(P)+D_{KL}(P\|Q) \]

当分布 \(P\) 是已知的,则熵是常量,此时最小化交叉熵等价于最小化KL散度。

最大似然估计

我们这里先说最大似然估计的计算步骤:

(1)写出似然函数;

(2)对似然函数取对数,并整理;

(3)求导数;

(4)解似然方程。

似然函数:

\[L=\prod_{i=1}^m Q(x:\theta) \]

当我们在计算一个batch的最大似然时有

\[\begin{align} L&=\frac{1}{n}\sum_{i=1}^n\log \prod_{j=1}^Kq_j^{p_j} \\ &=\frac{1}{n}\sum_{i=1}^nlog(q_1^{p1} q_2^{p2}\cdots q_K^{p_K}) \\ &=\frac{1}{n}\sum_{i=1}^n(p_1\log q_1+p_2\log q_2+\cdots+p_K\log q_K) \\ &=\frac{1}{n}\sum_{i=1}^n\sum_{j=1}^K p_i\log q_i \\ &=\frac{1}{n}\sum_{i=1}^nH(p,q) \end{align} \]

实际上在使用最大似然估计时常取负数,通过上面的式子我们就可以看出,这样我们就发现最大似然和最小化交叉熵是等价的。(因为有一个负号,最小化交叉熵就是最大化似然,模型训练得到的效果是一样的)。

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

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

相关文章

DeepFM

参考资料:https://blog.csdn.net/u012328159/article/details/122938925 https://blog.csdn.net/u012328159/article/details/120684544?spm=1001.2014.3001.5501DeepFM FM部分 目前在模型层面做交叉特征的难点主要有以下两个方面:交叉特征的参数独立,强依赖于在样本中的共…

米尔STM32MP2核心板首发新品上市!高性能+多接口+边缘算力

米尔发布基于STM32MP257设计的嵌入式处理器模块MYC-LD25X核心板及开发板。核心板基于STM32MP2系列是意法半导体推出最新一代工业级64位微处理器,采用LGA 252 PIN设计,存储配置1GB/2GB LPDDR4、8GB eMMC,具有丰富的通讯接口,适用于高端工业HMI、边缘计算网关、新能源充电桩、…

Fork+GIT操作

上传分支,在主干,上传完成代码之后,点击新建分支,去一个名字,如1.0.9,双击分支,点击“push”即可将主干所以代码上传到分支上备份一个 合并分支,,双击进入分支,选中要合并的部分,右键点击“Cherry-pick”,再次点击“Push”

影像测试技能

主要分三种职业:3A算法开发、图像tuning,图像测试这三种。 3a算法:AE/AWB/AF的开发,入门难一些,资料很少。 图像tuning:在理解3A算法的基础上,调试3A参数,当前需求量还是比较大的,学习起来也不太难,难在实践积累,多看多调。 1、 AWB auto white balance 自动白平衡 …

Camstar建模表格弹出编辑

大部分都是用行内编辑,但是如果由弹出编辑的需求,也需要了解下。 以工单建模为例子。自己搞个VP。Grid是MaterialList。 此时,表格并不具备,弹出编辑的能力。改下表格的属性,DataSubmissionMode=Changed 添加WebPart编辑框开始修改,每个属性控件的,属性!不然会报错!!…

在 ASP.NET Core Web API 中使用异常筛选器捕获和统一处理异常

异常筛选器可以捕获和处理 ASP.NET Core Web API 中发生的异常,当系统中出现未经处理的异常的时候,异常筛选器就会执行,我们可以在异常筛选器中对异常进行处理,例如记录日志、返回自定义错误信息等。前言 在 ASP.NET Core Web API 中,异常筛选器(Exception Filter)是一…

js实现网页端录音功能

1、代码 首先安装依赖包:recorderxnpm install recorderx -S<template><div class="container"><div class="mt-30"><el-button @click="onStartRecord">开始录音</el-button><el-button @click="onStop…

教你几招,轻松设置Win11右键恢复旧版模样

大家好!今天要教大家如何把 Win11 右键菜单变回完整的展开模式哦!其实很简单,只要在 Windows 开始图标下面的运行里输入一段代码就可以啦!接下来就让我来详细地跟大家分享一下这个方法吧!Win11右键菜单恢复为完整展开模式的方法1、首先,按键盘上的【 Win + X 】组合键,或…

第三周《密码系统设计》学习总结思维导图

marmaid代码为:graph LRA[密码系统设计第三周] --> B[《Windows C/C++ 加密解密实战》]B --> C[第四章]C --> T[4.2 加密基础]W --> U[CryptoAPI介绍]T --> V[加密概念]T --> X[加密类型]X --> d[对称加密]X --> e[非对称加密]T --> f[加密场景]C …

从虚拟到现实:数字孪生与数字样机的进化之路

​数字化技术高速发展的当下,计算机辅助技术已成为产品设计研发中不可或缺的一环,数字样机(Digital Prototype, DP)与数字孪生技术便是产品研发数字化的典型方法。本文将主要介绍数字样机与数字孪生在国内外的发展,并针对其技术痛点提出一种基于国产自研仿真工具进行虚拟模…

WPF 数据模板Data Template

数据模板 DataTemplate 控件模板决定了数据的展示形式和用户体检,在软件UI设计中非常重要。同样数据的展示形式越来越多样化,正所谓:横看成岭侧成峰,远近高低各不同。同样的数据内容,在DataGrid中的展示是文本的列表形式,在ComboBox中是下拉框的形式。给数据披上外衣,将…

性能测试之链接服务器实操

一、项目背景 因公司业务发展用户量增多,一些重要的接口请求也随着增多,导致接口响应变慢,需要优化接口的性能,所以团队里面就开始针对这些接口进行性能压力测试。二、前期准备工作 1、性能测试的服务器(不能在生产的机器上进行测试) 2、Jmeter压测工具三、操作流程 1、从…