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

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

学完了线性分类,我们要开始对预测结果进行评估,进而优化权重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.kler.cn/a/313950.html

相关文章:

  • SHELL脚本(Linux)
  • 丹摩征文活动|丹摩智算平台使用指南
  • 【嵌入式开发】单片机CAN配置详解
  • 贪心算法入门(二)
  • mongoDB的安装及使用
  • 车载空气净化器语音芯片方案
  • 大批量查询方案简记(Mybatis流式查询)
  • Docker_启动redis,容易一启动就停掉
  • 使用Python实现深度学习模型:智能旅游路线规划
  • Base 社区见面会 | 新加坡站
  • 多层感知机paddle
  • 【nginx】搭配okhttp 配置反向代理
  • nvidia-docker Failed to initialize NVML: Unknown Error
  • 【漏洞复现】泛微OA E-Office jx2_config.ini 敏感信息泄漏漏洞
  • 在线查看 Android 系统源代码 Android Code Search
  • leetcode49字母异位词分组
  • 深度解析 MintRich 独特的价格曲线机制玩法
  • OpenGL 原生库5 变换
  • 从拥堵到畅通:HTTP/2 如何解决 Web 性能瓶颈?
  • 集合框架(一):Collection集合的遍历方式
  • Cypress初次安装启动常见问题
  • Element Plus 中Input输入框
  • JVM 内存管理详解
  • 宝塔面板FTP连接时“服务器发回了不可路由的地址。使用服务器地址代替。”
  • 共轭传热和浸没边界耦合相关的论文的阅读笔记
  • cesium效果不酷炫怎么办--增加渲染器