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

机器学习损失函数

机器学习中常见的损失函数

为了衡量预测结果是否正确,需要一个损失函数,它负责在预测结果错误时给予惩罚,在预测结果正确时不予惩罚。为了方便依照损失函数来调整模型参数,通常希望损失函数是个取值非负的连续向导的函数,甚至是凸函数,比如二次函数或者交叉熵函数等。
这里介绍几个常用的损失函数。

1.Hinge函数

Hinge损失函数衡量的是预测模型的输出的符号和类别标签的符号是否一致以及一致的程度。Hinge损失是 0 − 1 0-1 01误差的上界,因此通过最小化Hinge损失,可以有效地减小 0 − 1 0-1 01误差。具体数学形式如下:
l ( w ; x , y ) = m a x { 0 , 1 − y g ( x ; w ) } l(w;x,y)=max\{0,1-yg(x;w)\} l(w;x,y)=max{0,1yg(x;w)}
g ( x ; w ) g(x;w) g(x;w) y y y符号相同且乘积数值超过1时,损失函数取值为0;否则,将有一个线性的损失(二者符号不同时,乘积的绝对值越大,损失越大)。Hinge损失函数是一个连续凸函数,但是它在0点不可导,人们通常会选择次导数集合中的任意一个数值参与优化过程。
Hinge损失函数如图所示:
在这里插入图片描述

2.指数损失函数

指数损失函数衡量的是预测模型的输出的符号和类别标签的符号是否一致以及一致的程度,其相较于Hinge函数而言,指数损失函数对情况不一致的情况有强烈的惩罚。指数损失函数也是 0 − 1 0-1 01误差的上界,它的具体形式如下:
l ( w ; x , y ) = e x p ( − y g ( x ; w ) ) l(w;x,y)=exp(-yg(x;w)) l(w;x,y)=exp(yg(x;w))
当预测模型输出的符号与类别标签符号不一致的情况有强烈的惩罚,相反,当二者符号一致且乘积数值较大时,损失函数的取值 会非常小。指数损失函数的基本形状和Hinge损失函数很接近,只不过它对于符号不一致的情况的惩罚力度更大(指数力度 vs. 线性力度),而且它是全程连续可导的凸函数,对于优化过程更加有利 。

指数损失函数如图所示:
在这里插入图片描述

3.交叉熵损失函数

交叉熵损失函数也是常用的损失函数之一,它假设预测模型以下述形式决定了标签的概率分布:
P ( Y − 1 ∣ x ; w ) = e x p ( g ( x ; w ) ) e x p ( g ( x ; w ) ) + e x p ( − g ( x ; w ) ) P(Y-1|x;w)=\frac{exp(g(x;w))}{exp(g(x;w))+exp(-g(x;w))} P(Y1∣x;w)=exp(g(x;w))+exp(g(x;w))exp(g(x;w)) P ( Y − 1 ∣ x ; w ) = e x p ( − g ( x ; w ) ) e x p ( g ( x ; w ) ) + e x p ( − g ( x ; w ) ) P(Y-1|x;w)=\frac{exp(-g(x;w))}{exp(g(x;w))+exp(-g(x;w))} P(Y1∣x;w)=exp(g(x;w))+exp(g(x;w))exp(g(x;w))
并且试图衡量该概率与标签之间的差别。其数学定义如下:
l ( w ; x , y ) = − ∑ z ∈ { − 1 , 1 } I { y = z } l o g P ( Y = z ∣ x ; w ) l(w;x,y)=-\sum_{z\in \{-1,1\}}I_{\{y=z \}}logP(Y=z|x;w) l(w;x,y)=z{1,1}I{y=z}logP(Y=zx;w)
可见,最小化交叉熵损失函数等价于最大化预测函数 g g g所对应的条件似然函数。
对于正类的样本而言,当预测模型的输出接近于1时,损失很小;而当预测模型的输出接近于0时,则产生一个很大的损失。相反,对于负类的样本而言,当预测模型的输出接近于1时,会产生很大的损失;而当预测模型的输出接近于0时,则损失很小。交叉熵损失函数也是一个全程连续可导的凸函数,并且是 0 − 1 0-1 01 误差的上界。

交叉熵损失函数如图所示:
在这里插入图片描述

相关文章:

  • Set接口学习(2)
  • Windows下更改并使用NTP
  • Framework面试之(Binder)(Handler)脚踏大厂面试大赏
  • Redis的不同系统安装教程
  • 几种Set的比较
  • 使用 ECK 在 Kubernetes 集群中管理 Elastic Stack
  • 在Qt中使用MySQL
  • java---SPFA算法---最短路(4)(每日一道算法2022.8.30)
  • 2382. 删除操作后的最大子段和--(phase2--day3)
  • 时间复杂度计算题
  • 不愧是阿里内部“千亿级并发系统架构设计笔记”面面俱到,太全了
  • SpringCloud之配置中心
  • C++征途 --- Stack(栈)容器和Queue(队列)容器
  • Mysql 用户权限设置 细分数据库、表操作
  • 车路协同、车联网、智慧交通、智能网联车、自动驾驶、无人驾驶、高精度地图
  • Angular4 模板式表单用法以及验证
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • CSS3 变换
  • Java超时控制的实现
  • PHP面试之三:MySQL数据库
  • python docx文档转html页面
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • socket.io+express实现聊天室的思考(三)
  • WePY 在小程序性能调优上做出的探究
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 闭包--闭包作用之保存(一)
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 前端_面试
  • 悄悄地说一个bug
  • 树莓派 - 使用须知
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 一、python与pycharm的安装
  • 自动记录MySQL慢查询快照脚本
  • 白色的风信子
  • gunicorn工作原理
  • 数据可视化之下发图实践
  • #android不同版本废弃api,新api。
  • (1)Nginx简介和安装教程
  • (175)FPGA门控时钟技术
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (done) 两个矩阵 “相似” 是什么意思?
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (正则)提取页面里的img标签
  • (转)iOS字体
  • (转)负载均衡,回话保持,cookie
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .NET 读取 JSON格式的数据
  • .Net6 Api Swagger配置
  • .so文件(linux系统)
  • /etc/skel 目录作用
  • [ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务
  • [23] 4K4D: Real-Time 4D View Synthesis at 4K Resolution