损失函数比较

article/2025/10/11 17:30:16

Pytorch学习之十九种损失函数

一、简介

损失函数(Loss Function)是用来评估模型好坏程度,即预测值f(x)与真实值的不一致程度,通常表示为L(Y, f(x))的一个非负的浮点数。比如你要做一个线性回归,你拟合出来的曲线不会和原始的数据分布是完全吻合(完全吻合的话,很可能会出现过拟合的情况),这个差距就是用损失函数来衡量。那么损失函数的值越小,模型的鲁棒性也就越好,对新数据的预测能力也就越强。

通常提到损失函数,我们不得不提到代价函数(Cost Function)及目标函数(Object Function)。

损失函数(Loss Function) 直接作用于单个样本,用来表达样本的误差

代价函数(Cost Function)作用于整个训练集,是整个样本集的平均误差,对所有损失函数值的平均

目标函数(Object Function)是我们最终要优化的函数,也就是代价函数+正则化函数(经验风险+结构风险)
在这里插入图片描述
其中,第一部分是代价函数,L代表损失函数;第二部分是正则化函数(也可以称为惩罚项),可以试L1,也可以试L2或者其他正则函数。整个表达式是要找到是目标函数最好的值。

二、损失函数

0-1损失函数(0-1 Loss Function)主要用于感知机

平方损失函数(Quadratic Loss Function)主要用于最小二乘法(OLS)

绝对值损失函数(Absolute Loss Function)

对数损失函数(Logarithmic Loss Function,Cross Entropy Loss Function, Softmax Loss Loss Function)主要用于Logistic回归与Softmax分类

指数损失函数(Exponential Loss Function)主要用于Adaboost集成学习算法

铰链损失函数(Hinge Loss Function)主要用于支持向量机(SVM)

2.1、0-1 损失函数(0-1 Loss Function)

在这里插入图片描述
当预测错误时,损失函数结果为1;当预测正确时,损失函数为0。该预测并不考虑具体的误差程度,直接进行二值化。

优点:稳定的分类面,不连续,所以不可导,但是次梯度可导

缺点:二阶不可导,有时候不存在唯一解

2.2、平方损失函数(Quadratic Loss Function)

在这里插入图片描述
预测值与实际值的差的平方。

优点:容易优化(一阶导数连续)

缺点:对outlier点敏感,得不到最优的分类面

2.3、绝对值损失函数(Absolute Loss Function)

在这里插入图片描述
与平方损失函数类似,去实际值与测试值的差值的绝对值,但是不会被放大。

2.4、对数损失函数(Logarithmic Loss Function)

在这里插入图片描述
对数损失函数用到了极大似然估计的思想。P(Y|X)表示在当前模型上,样本X的预测值为Y的概率,也就是说对于样本X预测正确的概率。由于统计极大似然估计用到概率乘法,为了将其转为假发,对其取对数即可方便展开为加法;由于是损失函数,预测正确的概率应该与损失值成反比,这里对概率取反得到 l o g ( 1 p ( y ∣ x ) ) log(\frac{1}{p(y|x)}) log(p(yx)1),转化一下可以得到 − l o g p ( y ∣ x ) -log~p(y|x) log p(yx)

优点:稳定的分类面,严格凸,且二阶导数连续。

2.5、指数损失函数(Exponential Loss Function)

在这里插入图片描述
学过Adaboost的知道它是前向分步加法算法的特例,是一个加和模型,损失函数就是指数函数。

2.6、铰链损失函数(Hinge Loss Function)

L ( w , b ) = m a x ( 0 , 1 − y f ( x ) ) L(w,b)=max(0,1-yf(x)) L(w,b)=max(0,1yf(x))
其中:
y = + 1 , − 1 f ( x ) = w x + b y=+1,-1~~~~~~~~~~~~~~~~~~~~~~f(x)=wx+b y=+1,1                      f(x)=wx+b

Hinge Loss function 一般在分类算法使用的分类函数,尤其使用于SVM。

优点:稳定的分类面,凸函数。可以极大化分类间隔。

三、代价函数

3.1 均方误差(Mean Square Error)

在这里插入图片描述

均方误差是指参数估计值与参数真值之差平方的期望值,MSE用来评估模型的好坏程度,MSE越小说明预测模型精确度越高。

通常用来做回归问题的代价函数

3.2 均方根误差(Root Mean Square Error)

在这里插入图片描述
均方根误差是均方的算术平方根,能够直观的观察预测值与真实值直接的差距。

通常用来作为回归算法的性能指标。

3.3 平均绝对误差(Mean Absolute Error)

在这里插入图片描述
平均误差是绝对误差的平均值,平均绝对误差能更好的反应预测值与实际值的实际误差情况。

通常用来作为回归算法的性能指标。

3.4 交叉熵代价函数(Cross Entry)

在这里插入图片描述
其中p(x)是真实分布的概率,q(x)是模型通过数据计算出来的概率估计。

交叉熵是用来评估当前训练得到的概率分布于真实分布的差异情况,减少交叉熵损失就是在提高模型的预测的准确率。

通常用来作为分类问题的代价函数。


http://chatgpt.dhexx.cn/article/3pnEB2EI.shtml

相关文章

常见的损失函数

1、损失函数的意义 机器学习中的监督学习本质上是给定一系列训练样本 ,尝试学习 的映射关系,使得给定一个 ,即便这个 不在训练样本中,也能够得到尽量接近真实 的输出 。而损失函数(Loss Function)则是这个过…

损失函数

损失函数(loss function)是用来估量你模型的预测值f(x)与真实值Y的不一致程度,它是一个非负实值函数,通常使用L(Y, f(x))来表示,损失函数越小,模型的鲁棒性就越好。损失函数是经验风险函数的核心部分,也是结…

常见损失函数

常见损失函数 (cs231n) 文章目录 常见损失函数损失函数定义0-1损失函数(zero-one loss)绝对值损失函数(Absolute loss)log对数损失函数(Log Loss)平方损失函数(Square Loss)指数损失函数 (Exponential Loss)SVM损失函数(Hinge Loss)感知损失函数(percep…

【常见的损失函数总结】

文章目录 损失函数的定义神经网络的学习为何要设定损失函数?常见的损失函数1. 0-1损失函数(zero-one loss)2. 对数损失函数3. 平方损失函数MSE(均值平方差)4. Hinge 损失函数5. 交叉熵损失函数 (Cross-entropy loss function) 损失函数的定义 损失函数&…

神经网络损失函数汇总

目录 一、基础知识 二、分类 (1)二分类交叉熵损失函数(binary_crossentropy) (2)categorical_crossentropy损失函数 (3)sparse_categorical_crossentropy (4&#…

Jmeter 使用正则表达式提取器将返回值全部保存到一个文件中

目标:将响应数据 {"errorCode":0,"message":"success","data":null} 中的message字段的值全部保存到一个文件中。 1.正则表达式提取器 正则表达式:提取内容的正则表达式【()表示提取,对于你要提取的…

Jmeter性能测试报告模板

性能测试报告 一、测试内容 针对当当网——服务器,进行性能测试,主要针对的核心业务是:注册,登录,查看商品信息与提交订单等。 二、测试方法 本次采用Apache的开元测试工具jmeter,采用本地动态拼装请求数据…

Jmeter5.4.1测试批量上传文件(参数化)

0、下载jmeter5.4.1 jmeter5.4.1-Java文档类资源-CSDN下载 注意需要java环境哦 jdk1.8-java_sdk_jre-Java文档类资源-CSDN下载 启动命令: java -jar ApacheJMeter.jar 用这个启动才是中文版本,另外启动后,界面字体太小&#xff0c…

Jmeter接口测试参数化详解

接口测试是目前最主流的自动化测试手段,它组合不同的参数向服务器发送请求,接受和解析响应结果,通过测试数据的交换逻辑来验证服务端程序工作的正确性。我们在测试过程中需要考虑不同的输入组合,来覆盖不同的测试范围;…

Jmeter学习之用户定义变量与用户变量

一、User Defined Variables 1、添加方法:选择“线程组”,右键点击添加-Config Element-User Defined Variables,定义你所需要的参数,如 2、在对应的需要使用参数的位置,使用${host}替代。 …

jmeter请求get接口报错(java.net.URISyntaxException: Illegal character in query at index 153: http://qa....)

log: 问题描述: 接口请求类型:get 请求参数:{"canshu1":"17600000005","canshu2":"test-0004","canshu3":"2021090301"},如下: 请求的时候报错如下: …

jmeter文件上传请求配置:文件,图片,语音、视频上传

图片上传http请求配置: 跟一般的http请求相对,图片上传的配置请求参数多了以下3个部分 1.点击图中【高级】,将客户端实现方式改为java 2.点击【参数】,按照基本请求参数配置即可 3.点击【文件上传】,配置图片路径&am…

JMeter外观配置与汉化

1、JMeter外观配置 推荐使用系统默认的外观,原因:不会出现窗口拉伸、变形等问题。 路径:选项->外观->System 2、JMeter汉化 方法1:修改JMeter设置(一次性的,下次打开JMeter还会恢复默认配置&#x…

16、Jmeter如何创建桌面快捷带图方式(亲测有效)

First step** 1、先找到jmeter文件安装的bin目录—>jmeter.bat文件,创建桌面快捷方式。 ** 2、右键,点击“发送到”---->桌面快捷方式”。然后再选中桌面快捷方式,右键,点击“属性”,修改“属性”里的路径为&am…

11、jmeter读取CSV文件之元件数据文件设置基础页面了解(1)

使用场景以及好处: 读取用例的方法通常有两种,1、通过建立多个请求信息实现接口的入参参数化,2、通过读取csv文件,加载测试用例。第一种方法会导致脚本过于冗余,不便于维护,因此多数情况我们会使用读取csv文…

JMeter的基本使用

目录 一、下载JMeter 二、设置语言为简体中文 三、JMeter外观设置 三、添加线程组 四、添加HTTP请求 五、添加信息头管理器 ​六、创建察看结果树 七、运行查看结果 一、下载JMeter 下载地址:Apache JMeter - Apache JMeter™ 下载zip文件解压后运行bin目录…

使用Jmeter进行性能测试的基本操作方法

Jmeter是一款轻量型的优秀测试软件产品,在很多场合如个人测试,企业测试中都有广泛应用。相比体积巨大的我们在某些场合可能更倾向于对Jmeter的使用,那么我们要如何利用该软件进行性能测试呢? 我们需要下载安装这款全免费的测试软件…

JMeter下载安装及入门教程

1 JMeter介绍 JMeter使用了不同技术和协议,是一款可以进行配置和执行负载测试、性能测试和压力测试的工具。负载测试、性能测试和压力测试概念: 负载测试: 这类测试使系统或者应用程序在预先设计好的极端场景下测试运行。这类测试用来评估系统或者程序…

Jmeter模拟selenium操作浏览器

前言 selenium是一个web自动化测试的开源框架,它支持多语言:python/java/c#… selenium支持多语言,是因为selenium与浏览器驱动之间是通过http协议进行通信的。只关心通信的数据是否能够正确解读 ,并不关心这个数据是从哪个客户…

jmeter 安装与配置

目录 一、jmeter 安装配置与启动 1、安装 2、配置 3、启动 (若要求在 Linux 下启动,则用bin --> jmeter.sh 打开) 二、jmeter 插件安装 一、jmeter 安装配置与启动 (需要Java环境) 1、安装 安装与JDK版本对…