| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 【深度学习】损失函数详解 -> 正文阅读 |
|
[人工智能]【深度学习】损失函数详解 |
损失函数什么是损失函数?在机器学习中,损失函数是代价函数的一部分,而代价函数则是目标函数的一种类型。
损失函数用来评估模型预测值与真实值的偏离程度。通常情况下,损失函数选取的越好,模型的性能越好。不同模型间采用的损失函数一般也不一样。最常用的最小化损失函数的算法便是“梯度下降”(Gradient Descent)。 损失函数的分类损失函数的分类方式有多种,按照是否添加正则项可分为经验风险损失函数和结构风险损失函数。按照任务类型分类,可分为两种:回归损失(针对连续型变量)和分类损失(针对离散型变量)。 回归损失L1 Loss也称Mean Absolute Error,即平均绝对误差(MAE),计算预测值与真实值的差的绝对值,衡量预测值与真实值之间距离的平均误差幅度,范围为0到正无穷。
缺点:
L2 Loss也称为Mean Squred Error,即均方差(MSE),计算的是预测值与真实值之间距离的平方和,范围同为0到正无穷。
缺点:
Smooth L1 Loss平滑的L1损失(SLL),出自Fast RCNN。SLL通过综合L1和L2损失的优点,在0点处附近采用了L2损失中的平方函数,解决了L1损失在0点处梯度不可导的问题,使其更加平滑易于收敛。此外,在|x|>1的区间上,它又采用了L1损失中的线性函数,使得梯度能够快速下降。 IoU Loss交并比损失,出自UnitBox,由旷视科技于ACM2016中提出了IoU Loss将bounding box 的4个顶点构成的 box 看成一个整体做回归。是目标检测中常见的评价标准,主要是衡量模型生成的Predict bounding box和Ground-truth bounding box之间的重叠程度。《UnitBox: An Advanced Object Detection Network》
IoU Loss vs Lx Loss常规的Lx损失(L1 Loss、L2 Loss)中,都是基于目标边界中的4个坐标点信息之间分别进行回归损失计算的(只将bounding box的四个角点分别求 loss 然后相加,没有引入 box 四个顶点之间的相关性并且模型在训练过程中更偏向于尺寸更大的物体。)。因此,这些边框信息之间是相互独立的。然而,直观上来看,这些边框信息之间必然是存在某种相关性。如下图(a)-(b)分别所示,绿色框代表Ground Truth,黑色框代表Prediction,可以看出,同一个Lx分数,预测框与真实框之间的重叠程度并不相同,显然重叠度越高的预测框是越合理的。 IoU损失将候选框的四个边界信息作为一个整体进行回归,其满足非负性、同一性、对称性、三角不等性,相比于L1/L2等损失函数还具有尺度不变性,不论box的尺度大小,输出的iou损失总是在0-1之间,从而实现准确、高效的定位。为了解决IoU度量不可导的现象,可以取负对数的形式间接计算IoU损失。 GIoU Loss泛化IoU损失,全称为Generalized Intersection over Union,由斯坦福学者于CVPR2019年发表的这篇论文中首次提出,《Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression》。上面我们提到了IoU损失可以解决边界框坐标之间相互独立的问题,考虑这样一种情况,当预测框与真实框之间没有任何重叠时,两个边框的交集(分子)为0,此时IoU损失为0,因此IoU无法计算两者之间的距离(重叠度)。另一方面,由于IoU损失为零,意味着梯度无法有效地反向传播和更新,即出现梯度消失的现象,致使网络无法给出一个优化的方向。此外,如下图所示,IoU对不同方向的边框对齐也是一脸懵逼,所计算出来的值都一样。 解决方法: 如下图公式所示,GIoU通过计算任意两个形状(这里以矩形框为例)A和B的一个最小闭合凸面C(通常情况下可以理解为最小外接矩形),然后再计算C中排除掉A和B后的面积占C原始面积的比值,最后再用原始的IoU减去这个比值得到泛化后的IoU Loss。 DIoU Loss距离IoU损失,全称为Distance-IoU loss,由天津大学数学学院研究人员于AAAI2020所发表的这篇论文中首次提出,《Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression》。上面我们谈到GIoU通过引入最小闭合凸面来解决IoU无法对不重叠边框的优化问题。但是,其仍然存在两大局限性:边框回归还不够精确与收敛速度慢。考虑下图这种情况,当目标框完全包含预测框时,此时GIoU退化为IoU。显然,我们希望的预测是最右边这种情况。因此,作者通过计算两个边框之间的中心点的归一化距离,从而更好的优化这种情况。 CIoU Loss完整IoU损失,全称为Complete IoU loss,与DIoU出自同一篇论文。上面我们提到GIoU存在两个缺陷,DIoU的提出解决了其实一个缺陷,即收敛速度的问题。而一个好的边框回归损失应该同时考虑三个重要的几何因素,即重叠面积(Overlap area)、中心点距离(Central point distance)和高宽比(Aspect ratio)。GIoU考虑到了重叠面积的问题,DIoU考虑到了重叠面积和中心点距离的问题,CIoU则在此基础上进一步的考虑到了高宽比的问题。 CIoU的计算公式如下所示,可以看出,其在DIoU的基础上加多了一个惩罚项αv。其中 α 为权重为正数的重叠面积平衡因子,在回归中被赋与更高的优先级,特别是在两个边框不重叠的情况下;而 v 则用于测量宽高比的一致性。 分类损失Entropy熵, 最早起源于物理学,用于度量一个热力学系统的混乱程度。但更常见的,在信息论里面, 熵是用于描述对不确定性的度量。所以,这个概念可以延伸到深度神经网络中,比如我们的模型在做分类时,使用的交叉熵,与信息论中的信息熵虽然有所不同,但也存在千丝万缕的连系。因此,在正式介绍分类损失函数时,我们必须先了解熵的概念。 计算机网络中,各种类型数据的传输其底层都是0-1bit流在传输介质中传输,其中有些位是有用信息,有些位则是冗余信息,有些位甚至是错误信息,等等。当我们传达信息时,我们希望尽可能多地向接收者传递有用的信息。 下面以一个天气预报的例子为例,解释熵到底为何物?假设一个地方的天气是随机的,每天有50%的机会是晴天或雨天。
比如气象台说第二天会下雨,那么你的不确定性就降低了4倍,也就是2比特的信息。不确定性的减少就是事件概率的倒数。在这种情况下,25%的倒数是4,log(4)以2为底得到2。因此,我们得到了2位有用的信息。也就是说,有用信息的位数等于,以 2 的事件概率倒数的对数。再由对数的性质,进一步等价于负的以 2 为底的事件概率的对数。 我们刚刚所计算出来的就叫做熵(信息熵),它可以很好地描述事件的不确定性。它是由下式给出:
Cross Entropy下面来研究一下交叉熵,它代表发送平均信息长度。考虑同样的例子,8种可能的天气条件,所有都是等可能的,每一种都可以用3位编码 (2^3=8,3位比特位共表示8中可能状态)。 而这种隐式假设在神经网络中,便对应模型首先后对样本所在的真实概率分布p的估计q。 通过上面两种不同的编码,即两种不同的概率分布估计,可以得到模型估计越贴近真实分布,对应的交叉熵值越小,且下确界为真实概率分布对应的信息熵。并且交叉熵在数学形式上有更好的性能,这些性质恰恰符合我们训练模型时对损失函数的要求。 K-L DivergenceKL散度。对于交叉熵损失,除了我们在这里使用预测概率的对数(log(q(i)))外,它看起来与上面熵的方程非常相似。 如果我们的预测是完美的,那就是预测分布等于真实分布,此时交叉熵就等于熵。 但是,如果分布不同,则交叉熵将比熵大一些位数。交叉熵超过熵的量称为相对熵,或更普遍地称为库尔贝克-莱布里埃发散度(KL Divergence)。总结如下: Dice LossDice Loss 也称骰子损失,最先于VNet 这篇文章中被提出,后来被广泛的应用在了医学影像分割之中。 Dice 系数的计算
Dice Loss vs CE语义分割中一般用交叉熵来做损失函数,而评价的时候却使用IOU来作为评价指标,为什么不直接拿类似IOU的损失函数来进行优化呢?
Focal Loss焦点损失,出自何凯明的《Focal Loss for Dense Object Detection》,出发点是解决目标检测领域中one-stage算法如YOLO系列算法准确率不高的问题。作者认为样本的类别不均衡(比如前景和背景)是导致这个问题的主要原因。比如在很多输入图片中,我们利用网格去划分小窗口,大多数的窗口是不包含目标的。如此一来,如果我们直接运用原始的交叉熵损失,那么负样本所占比例会非常大,主导梯度的优化方向,即网络会偏向于将前景预测为背景。即使我们可以使用OHEM(在线困难样本挖掘)算法来处理不均衡的问题,虽然其增加了误分类样本的权重,但也容易忽略掉易分类样本。而Focal loss则是聚焦于训练一个困难样本的稀疏集,通过直接在标准的交叉熵损失基础上做改进,引进了两个惩罚因子,来减少易分类样本的权重,使得模型在训练过程中更专注于困难样本。其基本定义如下:
Reference |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 23:14:08- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |