(CS231n课程笔记)深度学习之损失函数详解(SVM loss,Softmax,熵,交叉熵,KL散度)

news/2024/12/22 20:48:21/

学完了线性分类,我们要开始对预测结果进行评估,进而优化权重w,提高预测精度,这就要用到损失函数。

损失函数(Loss Function)是机器学习模型中的一个关键概念,用于衡量模型的预测结果与真实标签之间的差距。损失函数的目标是通过提供一个差距的度量,帮助模型进行优化,最终减少预测误差。不同的任务(如分类、回归等)会使用不同的损失函数来反映不同类型的误差。

1.SVM loss(铰链损失函数或合页损失函数)

  SVM(支持向量机)的损失函数通常指的是铰链损失函数(Hinge Loss Function),它用于最大化分类边界的同时最小化分类错误。目标是找到一个超平面将数据点分为两类。对于一个线性可分问题,SVM 会选择能够最大化正类与负类之间的分类间隔(Margin)的超平面。对于线性不可分问题,SVM 通过加入惩罚项来允许一定的错误分类。

铰链损失函数的形式为:

公式的含义为:(分类中其他标签的得分 — 该标签的得分 + 1)与0对比选出最大的数。我们还以上一讲的例子来解释。

线性分类器得分如上图,我们来计算汽车的损失值:

结果为0,说明预测结果很好,汽车的得分要大于其他标签的得分,并且大于一定的范围。经过损失函数能够对预测结果进行一定的评估。

2.Softmax激活函数

Softmax 函数将神经网络的输出转化为一个概率分布,使每个输出在 (0, 1) 之间,且所有输出之和为 1。其公式如下:

  • zi​ 是模型输出的第 i类的得分(logits)。
  • Softmax 函数将这些得分转换为属于每个类别的概率,如下图。

尽管 Softmax 不是损失函数,但它通常与交叉熵损失函数(Cross-Entropy Loss)结合使用,形成一个完整的多类分类模型的损失计算流程。

Softmax vs SVM

  • Softmax:主要用于多类分类任务。Softmax 是一个激活函数,通常与交叉熵损失函数结合使用,来进行多分类任务的训练。Softmax 将模型输出的 logits 转换为概率分布,确保每个类别的概率在 0 到 1 之间,且所有类别的概率之和为 1。模型通过最小化交叉熵损失来提高分类准确率。

  • SVM(支持向量机):SVM 是一种基于最大化分类间隔的分类算法。它尝试找到一个超平面(或决策边界),以最大化正类和负类之间的间隔。SVM 使用的是铰链损失(Hinge Loss),目的是找到能够最大化分类间隔的最优决策边界,通常用于二分类问题,但也可以通过扩展用于多分类任务。

下面的三种损失函数都是建立在softmax函数处理之后的:

3.交叉熵损失函数(Cross-Entropy Loss):衡量预测的真实度

交叉熵是用来衡量两个概率分布之间的距离,特别是在分类任务中用来评估预测的概率分布与真实的分布之间的差异。假设真实分布为 P,预测分布为 Q,那么交叉熵的公式为:其公式为:

交叉熵衡量的是模型预测分布 Q和真实分布 P 之间的差异,预测越接近真实分布,交叉熵越小。

4.墒(熵,Entropy):衡量预测难度

熵是信息论中的概念,度量的是一个系统或分布的不确定性或混乱程度。熵越高,表示系统的混乱程度越大,信息越难以预测。对于离散随机变量 X 其熵定义为:

5.KL 散度(Kullback-Leibler Divergence, KL Divergence):衡量预测与真实的差距

KL 散度用于衡量两个概率分布之间的相对熵差异。它衡量的是预测分布 Q 偏离真实分布 P 的程度。KL 散度的公式为:

KL 散度表示的是,当我们用分布 Q来近似真实分布 P 时,会丢失多少信息。它可以看作是交叉熵与熵的差值:

三者之间关系如何

熵衡量的是一个分布自身的不确定性,交叉熵衡量的是真实分布和预测分布之间的距离,而 KL 散度则是交叉熵减去真实分布的熵,表示了两个分布之间的相对差异。KL 散度用于度量一个分布相对于另一个分布的差异。


http://www.ppmy.cn/news/1527229.html

相关文章

openCV的python频率域滤波

在OpenCV中实现频率域滤波通常涉及到傅里叶变换(Fourier Transform)和其逆变换(Inverse Fourier Transform)。傅里叶变换是一种将图像从空间域转换到频率域的数学工具,这使得我们可以更容易地在图像的频域内进行操作,如高通滤波、低通滤波等。 下面,我将提供一个使用Py…

linux-L3-linux 复制文件

linux 中要将文件file1.txt复制到目录dir中,可以使用以下命令 cp file1.txt dir/复制文件 cp /path/to/source/file /path/to/destination移动 mv /path/to/source/file /path/to/destination复制文件夹内的文件 cp -a /path/to/source/file /path/to/destinati…

Rust的常量

【图书介绍】《Rust编程与项目实战》-CSDN博客 《Rust编程与项目实战》(朱文伟,李建英)【摘要 书评 试读】- 京东图书 (jd.com) Rust编程与项目实战_夏天又到了的博客-CSDN博客 3.3.1 常量的定义 常量和变量是高级程序设计语言中数据的两种表现形式。这里我们先…

Go语言并发编程之select语句详解

在Go语言的并发模型中,channel是用于在goroutine之间进行通信的主要工具,而select语句则是将多个channel结合在一起的关键机制。通过select语句,开发者可以同时监控多个channel的状态,从而构建更为复杂和灵活的并发逻辑。本文将详细介绍select语句的原理和用法,并通过多个…

62. 圆圈中最后剩下的数字

comments: true difficulty: 简单 edit_url: https://github.com/doocs/leetcode/edit/main/lcof/%E9%9D%A2%E8%AF%95%E9%A2%9862.%20%E5%9C%86%E5%9C%88%E4%B8%AD%E6%9C%80%E5%90%8E%E5%89%A9%E4%B8%8B%E7%9A%84%E6%95%B0%E5%AD%97/README.md 面试题 62. 圆圈中最后剩下的数字…

硬件工程师笔试面试学习汇总——器件篇目录

目录 一、器件篇目录 1、电阻(Resistors) 1.1、 基础 1.2、相关问题 1.3、上拉电阻 1.4、下拉电阻 2、电容(Capacitors) 2.1、基础 2.2、相关问题 3、电感(Inductors) 3.1、基础 3.2、相关问题 4、二极管(Diodes) 4.1、基础 4.2、相关问题 5、三极管 5.1…

PostgreSQL的walsender和walreceiver进程介绍

PostgreSQL的walsender和walreceiver进程介绍 在 PostgreSQL 中,WAL (Write-Ahead Logging) 是一种用于确保数据库事务日志安全可靠的机制。WAL 是 PostgreSQL 进行数据库恢复、复制等操作的基础。walsender 和 walreceiver 是 PostgreSQL 内部两个非常重要的进程&…

unity UnityWebRequest 的request.downloadHandler 空应用

unity UnityWebRequest 的request.downloadHandler 空应用 private IEnumerator Test_Get() {UnityWebRequest request new UnityWebRequest(tmp_getURL, "GET");yield return request.SendWebRequest();if (request.result UnityWebRequest.Result.ConnectionErr…