目标检测之分类、回归和损失函数
一 、分类和回归
输出变量为有限个离散变量的预测问题成为分类问题;
输入变量与输出变量均为连续变量的预测问题是回归问题;
分类模型和回归模型本质一样,分类模型是将回归模型的输出离散化。
二 、分类和回归应用场景
1.回归问题的应用场景
回归问题通常是用来预测一个值,如预测房价、未来的天气情况等等,例如一个产品的实际价格为500元,通过回归分析预测值为499元,我们认为这是一个比较好的回归分析。一个比较常见的回归算法是线性回归算法(LR)。另外,回归分析用在神经网络上,其最上层是不需要加上softmax函数的,而是直接对前一层累加即可。回归是对真实值的一种逼近预测。
2.分类问题的应用场景
分类问题是用于将事物打上一个标签,通常结果为离散值。例如判断一幅图片上的动物是一只猫还是一只狗,分类通常是建立在回归之上,分类的最后一层通常要使用softmax函数进行判断其所属类别。分类并没有逼近的概念,最终正确结果只有一个,错误的就是错误的,不会有相近的概念。最常见的分类方法是逻辑回归,或者叫逻辑分类。
三 、举几个例子
1、 Logistic Regression 和 Linear Regression:
Linear Regression: 输出一个标量 wx+b,这个值是连续值,所以可以用来处理回归问题。
Logistic Regression:把上面的 wx+b 通过 sigmoid函数映射到(0,1)上,并划分一个阈值,大于阈值的分为一类,小于等于分为另一类,可以用来处理二分类问题。
更进一步:对于N分类问题,则是先得到N组w值不同的 wx+b,然后归一化,比如用 softmax函数,最后变成N个类上的概率,可以处理多分类问题。
2、 Support Vector Regression 和 Support Vector Machine:
SVR:输出 wx+b,即某个样本点到分类面的距离,是连续值,所以是回归模型。
SVM:把这个距离用 sign(•) 函数作用,距离为正(在超平面一侧)的样本点是一类,为负的是另一类,所以是分类模型。
神经网络用于 分类 和 回归:
用于回归:最后一层有m个神经元,每个神经元输出一个标量,m个神经元的输出可以看做向量 v,现全部连到一个神经元上,则这个神经元输出wv+b,是一个连续值,可以处理回归问题,跟上面 Linear Regression 思想一样。
用于N分类:现在这m个神经元最后连接到 N 个神经元,就有 N 组w值不同的 wv+b,同理可以归一化(比如用 softmax )变成 N个类上的概率。
拓展: 上面的例子其实都是从 prediction 的角度举例的,如果从training角度来看,分类模型和回归模型的目标函数不同,分类常见的是 log loss, hinge loss, 而回归是 square loss。
四 、损失函数
监督学习的神经网络都需要一个函数来测度模型输出值p和真实的因变量值y之间的差异,甚至有些无监督学习的神经网络也需要类似的函数。模型输出值p和真实值y之间的差异一般被称为残差或者误差,但是这个值并不能直接用来衡量模型的质量。当一个模型完美的时候,其误差为0,而当一个模型不够完美的时候,其误差不论为负值还是正值,都偏离0;因此衡量模型质量的是误差偏离0的相对值,即误差函数的值越接近于0,模型的性能越好,反之则模型的性能越差。误差函数也被称为损失函数。
损失函数的一般表示为L(y,f(x))L(y,f(x)),用以衡量真实值yy和预测值f(x)f(x)之间不一致的程度,一般越小越好。为了便于不同损失函数的比较,常将其表示为单变量的函数,在回归问题中这个变量为y−f(x)y−f(x),在分类问题中则为yf(x)yf(x)。下面分别进行讨论。
分类问题常用损失函数:
1、交叉熵损失:
这种损失函数也叫做对数损失函数,是针对分类模型的性能比较设计的,按照分类模型是二分类还是多分类的区别,可以分为二分类交叉熵和多分类交叉熵两种。交叉熵的数学表达式很简单,可以写作: H ( p ) = ∑ x ( p x l o g 1 q x ) H\left ( p \right )=\sum_{x}\left ( p_{x}log\frac{1}{q_{x}} \right ) H(p)=∑x(pxlogqx1)因此交叉熵可以被解释为映射到最可能的类别的概率的对数。因此,当预测值的分布和实际因变量的分布尽可能一致时,交叉熵最小。
2、Logistic loss:
logistic Loss为Logistic Regression中使用的损失函数:
3、Hinge loss:
hinge loss为svm中使用的损失函数,hinge loss使得yf(x)>1的样本损失皆为0,由此带来了稀疏解,使得svm仅通过少量的支持向量就能确定最终超平面。hinge loss被翻译为“合页损失”。
回归问题的损失函数
回归问题中yy和f(x)f(x)皆为实数∈R∈R,因此用残差 y−f(x)y−f(x)来度量二者的不一致程度。残差 (的绝对值) 越大,则损失函数越大,学习出来的模型效果就越差(这里不考虑正则化问题)。
a、均方差(MSE):
这种损失函数通常用在实数值域连续变量的回归问题上,并且对残差较大的情况给予更多的权重。
b、平均绝对差(MAE):
这种损失函数也通常用在上面提到的那类回归问题上,在时间序列预测问题中也常用。在这个误差函数中,每个误差点对总体的误差的贡献与其误差绝对值成线性比例关系,而上面介绍的MSE没有这个特性。
c、位置回归采用稳定的 Smooth L1:
SmoothL1公式 为:
参考:
https://blog.csdn.net/laobai1015/article/details/83059178
https://www.cnblogs.com/massquantity/p/8964029.html
https://blog.csdn.net/Heloiselt/article/details/79904456
https://blog.csdn.net/yunxinan/article/details/88550114
目标检测之分类、回归和损失函数相关推荐
- 3D点云点云分割、目标检测、分类
3D点云点云分割.目标检测.分类 原标题Deep Learning for 3D Point Clouds: A Survey 作者Yulan Guo, Hanyun Wang, Qingyong H ...
- 电气领域相关数据集(目标检测,分类图像数据及负荷预测),电气设备红外测温图像,输电线路图像数据续
另外一部分见:电气领域相关数据集(目标检测,分类图像数据及负荷预测),输电线路图像数据 1. 变电站烟火检测图像数据集(3600多张,VOC标签) 2. 导线破损检测图像数据集(有拼接增强,VOC标签 ...
- 目标检测中bbox回归中class-agnostic和class-specific的区别在哪?
目标检测中bbox回归中class-agnostic和class-specific的区别在哪? (本文取自知乎问答,仅作个人学习收藏使用,文末有参考链接) 明显是网络预测的object 类别数目不同. ...
- 【目标检测系列】yolov3之损失函数以及边框回归pytorch源码注释以及理论理解
1.代码下载: https://github.com/ultralytics/yolov3 2.边框回归与损失函数相关的源码,在文件utils.py中.边框回归和损失函数. 边框回归说白了就是:找到一 ...
- 目标检测中边框回归的直观理解 bbox regression
目录 1 摘要 2 算法要解决的问题 3 从结果推原因,算法的实现思路 3.1 最直接的实现 3.2 合理性讨论 4 CNN的尺度不变性的影响 4.1 log函数的非线性问题 5 线性模型的损失函数 ...
- 综述:基于点云的自动驾驶3D目标检测和分类方法
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 参考论文:Point-Cloud based 3D Object ...
- 目标检测和分类的评价指标
准确率 (Accuracy),混淆矩阵 (Confusion Matrix),精确率(Precision),召回率(Recall),平均正确率(AP),mean Average Precision(m ...
- 目标检测中bbox回归中class-agnostic和class-specific的区别
明显是网络预测的object 类别数目不同. class-specific 方式,很多地方也称作class-aware的检测,是早期Faster RCNN等众多算法采用的方式.它利用每一个RoI特征回 ...
- 从L1 loss到EIoU loss,目标检测边框回归的损失函数一览
本文转载自知乎,已获作者授权转载. 链接:https://zhuanlan.zhihu.com/p/342991797 目标检测任务的损失函数由Classificition Loss和BBox Reg ...
- 边框回归的损失函数_CVPR 2019:精确目标检测的不确定边界框回归
本文由AI科技评论读者 BBuf 投稿 来稿见文末说明 大规模的目标检测数据集(例如MS-COCO)在进行Ground Truth框标注时仍然存在歧义.这篇论文提出了新的边界框回归损失针对目标框的移动 ...
最新文章
- Apache ServiceComb — Service Center
- python中的h5py开源库的使用
- C++ STL算法之accumulate函数
- 200725学习日报循环语句和数组
- 华为鸿蒙os再见了安卓,再见了安卓!华为鸿蒙OS 2.0正式登场,开机只需19秒
- Stacked Hourglass Networks 人体姿态检测
- python3 round函数
- 堪比黑石 花旗、摩根大通的股东 揭开贝莱德的神秘面纱
- iOS自动化测试---使用的相关工具
- 墙裂推荐几款桌面应用
- 5S管理跟精益生产的关系是什么?如何使5S管理有效落地?
- 傻子都能看懂的 财务报表入门
- 有些人的微信字体可以变成蓝色,点进去就可以知道答案,这是为什么呢?
- 微信小程序 | 微信公众平台SpringBoot开发实例 │ 表情消息
- 国内主要遥感期刊投稿信息
- 学习笔记:强化学习与最优控制(Chapter 2)
- BitTorrent协议DHT网络爬虫BitTorrentNetworkSpider
- 网络上怎么赚钱?这3个赚钱方式目前最稳妥!
- 语音识别ASR和NLP有什么区别?
- Arrays.deepToString()与Arrays.toString()的区别
热门文章
- Redis源码分析——用剖析工具的方式来分析Redis的底层实现细节”
- 云服务器怎么增加d盘_如何给日本云服务器加D盘?
- Redis源码学习(2),t_string.c 学习(一),Set命令实现学习
- laravel 图像验证码 Gregwar\\Captcha 和 mews/captcha
- 《有效学习》——浓缩咖啡
- 咖啡网站定制开发设计方案
- c语言编程求5的阶乘传统流程图,C语言算法第五源代码以及流程图.doc
- 抖音艺术签名小程序源码/艺术签名设计小程序源码/字节跳动小程序开发
- 鸟叔的Linux私房菜基础篇-学习笔记(七)
- python如何读英语_python如何提取英语pdf内容并翻译