损失函数是深度学习模型优化的一个灵魂基础,所以无论是很新的transform模型,还是比较早期的AlexNet,都不可避免的要涉及到损失函数的设计和应用。

所以,各种形形色色的损失函数(Loss)也就成了面试场上,不经意间就会被牵扯到的问题。

其中,目标检测任务的损失函数由Classificition LossBounding Box Regeression Loss两部分构成。本次我们着重关注BoundingBox Loss 目标检测回归损失,之后有时间我们关注分类等损失函数。

1. L1 loss、L2 loss和Smooth L1 Loss

为了解决L1 loss和L2 loss存在的问题,Smooth L1 Loss从两个方面对梯度做限制:

  • 当预测框与 ground truth 差别过大时,梯度值不至于过大(过大就不稳定);
  • 当预测框与 ground truth 差别很小时,梯度值足够小(足够小,才能落入局部最优点)。

为啥要做这两方面的限制呢?

  • 差距大时,梯度过于大,可能会导致梯度爆炸;
  • 差距很小时,梯度足够小,能够接近最优点,避免横跳。

Smooth L1 Loss是不是就是满足这样优秀条件的呢?我们继续往下看,将Smooth L1 Loss与它相关的正则化损失L1 lossL2 loss,放一起做个对比。

考察如下几种损失函数,其中 x为预测框PDgroud truth(GT)之间的差异。会有:

此时,做损失函数对 x 的求道,分别为:

  • 观察方程(4),L2 对 x 的导数,与 x 成正比关系。也就是当 x 增大时,对 x 的导数也增大。这就导致在训练初期,预测值PD与 groud truth 差异过于大时,损失函数对预测值的梯度十分大,进而导致训练初期不稳定

  • 根据方程 (5), L1 对 x 的导数为常数,始终为 1 或 -1 。这就导致训练后期,预测值与 ground truth差异很小时,损失对预测值的导数的绝对值仍然为 1,而 learning rate如果不变,损失函数将在稳定值附近波动,难以继续进一步收敛,以达到更高精度。

  • 最后观察 (6),得到:
    1、 Smooth L1 Loss 在 x 较小时,也就是[-1,1] 区间,对 x 的梯度也会变小;
    2、 而在 x 很大时,对 x 的梯度的绝对值达到上限 1,也不会太大以至于破坏网络参数。 完美地避开了L1 lossL2 loss损失的缺陷。

其中,三个Loss的损失曲线,如下图所示:

优化后的Smooth L1 Loss函数图像如下所示:

由图中可以看出:

  1. 它在远离坐标原点处,大于 1 和小于 -1 处,图像和 L1 loss 很接近;
  2. 而在坐标原点附近,[-1,1],转折十分平滑,不像 L1 loss有个尖角;
  3. 因此叫做Smooth L1 loss,smooth平滑的 L1 loss,由此得名。

最后,给出Smooth L1 loss对 x 的梯度变化曲线,如下:

实际目标检测框回归任务中的损失loss为

其中,GT 的框坐标(x,y,w,h):

预测的框坐标:

即分别求4个点的loss,然后相加求和,作为Bounding Box Regression Loss

缺点:上面的三种Loss用于计算目标检测的Bounding Box Loss时,独立的求出4个点的Loss,然后进行相加得到最终的Bounding Box Loss这种做法的假设是4个点是相互独立的,实际他们之间是有一定相关性的

如何将这种关系给联系起来呢?这就是后面我们会继续学习到的,IOU Loss

2、L1正则化和L2正则化

前面提到L1 loss和L2 loss,就不得不提下经常遇到的L1正则化L2正则化。这个也是在面试题中,经常被问及的问题。

2.1、为什么需要正则化?

防止训练产生过拟合,用复杂的模型去你和训练集时,容易出现过拟合,也就是泛化能力不足。采用正则化的方法,去惩罚weight权重,约束复杂度。

2.2、L1正则化和L2正则化分别是如何约束复杂度的?

  • L1对模型权值weight绝对值之和约束
  • L2的模型权值weight平方和约束

2.3、区别和特点

  • L1正则化容易得到稀疏解(留下少量的特征,而其他的特征都是0。因为最有的参数值很大概率出现在坐标轴上,这样会导致某一维的权值为0,产生稀疏权重矩阵)
  • L2正则化容易得到平滑解(更多的特征,这些特征不为0,但都会接近于0。最优的参数值很小概率出现在坐标轴上,因此每一维的参数都不会是0。当最小化||w||时,就会使每一项趋近于0),得到更好的泛化能力

上述都过于笼统,会进一步优化的,着急的先根据这个视频进行学习:
1、“L1和L2正则化”直观理解(之二),为什么又叫权重衰减?到底哪里衰减了?
2、李沐哔哩哔哩视频

参考链接:请问 faster RCNN 和 SSD 中为什么用smooth L1 loss,和L2有什么区别?
参考链接:目标检测回归损失函数简介:SmoothL1/IoU/GIoU/DIoU/CIoU Loss

本文首发:CV初学者 感兴趣的可以去看原文:
【AI面试】BoundingBox Loss 之Smooth L1 Loss目标检测回归损失

【AI面试】L1 loss、L2 loss和Smooth L1 Loss,L1正则化和L2正则化相关推荐

  1. 【AI面试】hard label与soft label,Label Smoothing Loss 和 Smooth L1 Loss

    往期文章: AI/CV面试,直达目录汇总 [AI面试]NMS 与 Soft NMS 的辨析 [AI面试]L1 loss.L2 loss和Smooth L1 Loss,L1正则化和L2正则化 在一次询问 ...

  2. AI面试锦囊|字节算法工程师(搜索广告方向)三面分享

    ©原创作者 | 三金 写在前面 目前短视频行业越来越火爆,推荐算法.广告算法引擎已经成为了各个大厂的核心业务系统.在此背景下,字节跳动的搜索团队就主要负责抖音.今日头条.西瓜视频等产品的搜索算法创新和 ...

  3. 【AI面试】目标检测中one-stage、two-stage算法的内容和优缺点对比汇总

    在深度学习领域中,图像分类,目标检测和目标分割是三个相对来说较为基础的任务了.再加上图像生成(GAN,VAE,扩散模型),keypoints关键点检测等等,基本上涵盖了图像领域大部分场景了. 尤其是在 ...

  4. L1正则化,L2正则化与范数的关系?

    目录 深度学习基础:L1正则化,L2正则化与范数的关系? 范数的概念 范数如何与正则联系起来? 为什么最小化权重的范数就可以实现正则化? L1L1L1 范数和 L2L2L2 **范数** 有什么区别? ...

  5. 大厂AI面试官一语中的:一场面试暴露了你的机器学习水平

    https://www.toutiao.com/a6621033976142234115/ 2018-11-07 16:33:22 从事机器学习就业方向有很多,比如有些公司侧重数据挖掘,而有些则更倾向 ...

  6. AI面试锦囊|网易互娱AI Lab人工智能研究工程师两面分享

    ©原创作者 | 三金 写在前面 网易经过近20年的飞速发展,现已经跻身全球七大游戏公司之一,旗下拥有游戏行业领先的人工智能实验室--网易互娱AI Lab.该实验室致力于将AI技术应用在游戏中,现网易游 ...

  7. L1正则化与L2正则化

    1.1-范数,2-范数 1-范数: 2-范数:2-范数就是通常意义下的距离 2.L1和L2正则化 我们所说的正则化,就是在原来的loss function的基础上,加上了一些正则化项或者称为模型复杂度 ...

  8. 训练softmax分类器实例_一个值得深思的问题?为什么验证集的loss会小于训练集的loss...

    编辑:zero 关注 搜罗最好玩的计算机视觉论文和应用,AI算法与图像处理 微信公众号,获得第一手计算机视觉相关信息 在本教程中,您将学习在训练自己的自定义深度神经网络时,验证损失可能低于训练损失的三 ...

  9. 机器学习中L1正则化和L2正则化是什么?区别是什么?

    机器学习中L1正则化和L2正则化是什么?区别是什么? 我们所说的正则化,就是在原来的loss function的基础上,加上了一些正则化项或者称为模型复杂度惩罚项. 结构风险最小化: 在经验风险最小化 ...

最新文章

  1. php操作mysql的常用语句(大全)
  2. 盘点3个提升技能的AI项目,NLP/CV/BI,3个方向
  3. 螳螂捕蝉黄雀在后!地下黑客论坛免费远控木马被曝“后门”
  4. fwink函数c语言,wink: Wink is oscstudio library
  5. pix2pix, pix2pixHD, vid2vid
  6. python字符串替换空格_python - 用pandas中的NaN替换空白值(空格)
  7. boost::endian::endian_store的用法测试程序
  8. java构造函数调用其他程序的顺序_java初始化构造函数调用顺序
  9. python:单例模式--使用__new__(cls)实现
  10. python threading 结束线程
  11. 面试突击第 3 期 | Redis 如何实现查询附近的人?视频实战版
  12. 密码学 区块链中的应用专栏 【简介】
  13. 长三角,也开始“东北化”了
  14. Sklearn 0.21 中文文档校对活动 | ApacheCN
  15. PCB Layout 注意事项——布线
  16. Servlet 身份验证体系结构
  17. css深入理解flex布局中的剩余空间分配规则——flex-grow,flex-shrink和flex-basis
  18. 小程序二维码需要发布正式版后才能获取到_很意外!iOS 14.1正式版已出,修复多处问题...
  19. 《那些年啊,那些事——一个程序员的奋斗史》——41
  20. 华栖云与阿里云首推“云上电视台”,可实现内容云端一站式制作

热门文章

  1. linux命令 查看分辨率,linux怎样在命令行模式修改屏幕分辨率
  2. INS 、AHRS、VRU、IMU的区别与联系
  3. 【对学习现状的总结和思考】
  4. JAVA基础编程——IO编程
  5. 从keras看VGG16结构图
  6. 二维burgers方程_用格子Boltzmann方法研究二维Burgers方程
  7. FHQ大战Splay
  8. CAD设置命令框的字体
  9. Android 仿钉钉、微信 群聊组合头像
  10. 新零售mysql设计(采购表 入库信息表 入库商品表)