本文主要讲一下机器学习/深度学习里面比较常见的损失函数。

分类损失

hinge loss

其中y是标签,要么为1(正样本),要么为-1(负样本)。hinge loss被使用在SVM当中。对于正确分类的f(x)预测值,并且|f(x)|>=1,那么不会被计算到损失函数当中。只有那些错误分类,或者分类置信度不够(|f(x)|<1),才会计入损失,所以SVM对正确分类的离群点不敏感,不会鼓励分类器过分自信,更关注错误分类的那些样本。

指数损失

指数损失被用到adaboost算法当中,对错误分类的离群点比较敏感。

cross entropy

交叉熵是深度学习中最常见的分类损失函数,对数损失本质上也是交叉熵损失,可以通过定义推导出来:推导过程。

二分类交叉熵损失函数:

f(x)指模型预测类别为y的概率。

多分类交叉熵损失函数:

sigmoid的损失函数一般使用交叉熵而不是平方损失,理由是交叉熵可以在误差大时有较大梯度,收敛快。在误差小时梯度小,能够得到一个比较好的最优解。具体推导需要从权重参数更新的公式来考虑(推导过程),其中平方损失的权重更新公式包含了sigmoid的导数项,而交叉熵损失则不会出现这种情况。

focal loss

facal loss是加权的二分类交叉熵损失。用来解决样本不均衡和困难样本学习的问题。

记:

那么focal loss的表达式为:

其中,

越大,越关注难样本。某个类别
越大,越关注该类别。

在原论文中正样本的

, 其实是为了缓和
增加正样本的权重,所以给正样本一个较小的值。

对比损失

对比损失(constrastive loss)最初被使用在孪生网络里面,也是用来鼓励类间距离要足够大和类内距离要比较小。

其中

是样本对,y是类别判断函数,当x1和x2来自一个类别,则y(x1,x2)=1,否则为0;d是距离函数,margin使我们所想要的类间距离至少要大于阈值。

triplet loss

在人脸识别、行人识别里面,最重要的两个任务是特征提取和距离度量。好的特征一般是类内差距小,类间距离大的。所以就有了三元组损失,又叫做triplet loss:

triplet有三元组(a,p,n),a表示anchor,是关注的样本;然后p表示positive sample,是跟anchor同类别的样本,n表示negative sample,是跟anchor不同类别的样本。triple loss希望anchor的embedding跟positive接近,跟negative 距离比较远。其公式为:

其中,d是距离函数。当d(a,p)+margin > d(a,n)时,这时a是easy sample,不需要优化,所以损失为0。当d(a,p)+margin < d(a,n)时,a是hard sample。当d(a,p)<d(a,n)<d(a,p)+margin时,semi hard sample。实现时一般采用online方式,即每个batch里面去构建triplet。

回归损失

L1 loss(绝对值损失)

L2 loss (MSE、平方差损失)

huber loss(smoothed-L1 loss)

为了解决L1 loss在0点处不能求导以及L2 loss对离群点比较敏感的问题,提出了huber loss融合了L1、L2 loss的优点:

BCE loss

BCE loss是二元交叉熵损失,其实是二分类交叉熵损失,可以用在前背景分割、语义分割的网络训练当中。

dice loss

dice loss一般用在医学图像分割中。

原始版本:

为了避免除0的情况,加了平滑:

total variance loss

total valiance loss 一般是衡量图像平滑性的,定义为像素点与邻域像素点的灰度值的差的平方:

L =

一般说来,噪声图片的灰度值突兀的像素点比较多,引起的total variance比较大。

perceptual loss

感知损失,就是把预训练好的特征提取器相当于人的眼睛,要求生成的图像和真实图像经过预训练好的模型提取得到的特征尽可能相似。在图像生成里面,感知损失可以让图片生成地更加逼真一些:

其中

是预训练好的特征提取网络,比如VGG。

分布损失

KL散度损失

记事件X熵为H(X),则

,它衡量的是不确定的概率,熵越大,信息量越大,这个就越不确定。

其中P是真实样本分布,Q是模型预测分布。

对公式进行变形还可以得到:

为什么分类任务使用交叉熵不使用KL?

因为KL损失=事件熵+交叉熵,在分类任务里面,事件熵一般不会变化为常数,故直接使用交叉熵。

JS散度

为了解决KL损失不对称(P,Q交换得到的距离不一样)的问题,提出了JS损失。

vanilla GAN Loss

原始的GAN loss其实是在最小化JS散度。

辨别器loss:

生成器loss:

两种形式:

第二种形式在train GAN的开始时候梯度会好一点,实际上是通过label flipping(反转G生成样本的类别标签实现的)。

least square GAN loss

辨别器

生成器

二元函数图像生成器_常见的损失函数(loss function)相关推荐

  1. 二元函数图像生成器_谷歌程序员自制秃头生成器:一键get张东升同款发型,今天你脱发了吗?...

    文章来源于微信公众号:机器之心 作者 |Synced 原文链接:请点击 文章仅用于学习交流,如有侵权请联系删除 头可断,发型不能乱. 最近有一个男人的名字实在太火了,他叫「张东升」:比他本人更出名的, ...

  2. 交叉熵损失函数优缺点_【损失函数】常见的损失函数(loss function)总结

    阅读大概需要7分钟 跟随小博主,每天进步一丢丢 机器学习算法与自然语言处理出品 @公众号原创专栏作者 yyHaker 单位 | 哈工大SCIR实验室 损失函数用来评价模型的预测值和真实值不一样的程度, ...

  3. 机器学习之常见的损失函数(loss function)

    解决一个机器学习问题主要有两部分:数据和算法.而算法又有三个部分组成:假设函数.损失函数.算法优化.我们一般在看算法书或者视频教学时,更多的是去推算或者说参数估计出其假设函数,而往往不太注重损失函数, ...

  4. 经验 | 深度学习中常见的损失函数(loss function)总结

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作分享,不代表本公众号立场,侵权联系删除 转载于:机器学习算法与自然语言处理出品    单位 | 哈工大SCIR实 ...

  5. 二元函数图像生成器_GAN生成图像综述

    点击上方"CVer",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者:YTimo(PKU EECS)   研究方向:深度学习,计算机 ...

  6. smoothl1函数_Faster RCNN的损失函数(Loss Function)

    Faster RCNN的损失函数(Loss Function)的形式如下: : Anchor[i]的预测分类概率: Anchor[i]是正样本时, :Anchor[i]是负样本时, ; 什么是正样本与 ...

  7. 损失函数(Loss function)、代价函数(成本函数)(Cost function)、目标函数(objective function)的区别与联系

    基本概念: 损失函数(Loss function):计算的是一个样本的误差. 损失函数是定义在单个训练样本上的,也就是就算一个样本的误差,比如我们想要分类,就是预测的类别和实际类别的区别,是一个样本的 ...

  8. 损失函数(Loss function) 和 代价函数(Cost function)

    1损失函数和代价函数的区别: 损失函数(Loss function):指单个训练样本进行预测的结果与实际结果的误差. 代价函数(Cost function):整个训练集,所有样本误差总和(所有损失函数 ...

  9. python如何画损失函数图_Pytorch 的损失函数Loss function使用详解

    1.损失函数 损失函数,又叫目标函数,是编译一个神经网络模型必须的两个要素之一.另一个必不可少的要素是优化器. 损失函数是指用于计算标签值和预测值之间差异的函数,在机器学习过程中,有多种损失函数可供选 ...

最新文章

  1. echart x轴标签偏移_移动端H5页面滑动手势X轴实例
  2. 机器人组团到城市打工,第一站果然是赛博朋克城
  3. 编程之美-构造数独方法整理
  4. js调用c语言程序设计,HTML页面,测试JS对C函数的调用简单实例
  5. 包邮送50本畅销书,值得阅读!
  6. 【测试思考】测试段位之测试六段
  7. PHP中删除目录的三种方法
  8. HTML accesskey 属性
  9. 机器学习之使用Python完成逻辑回归
  10. 第一节:Create React App
  11. 使用google图片搜索寻找高质量的图片
  12. 统一接口平台(一) 产品介绍
  13. Java动态性——反射机制学习笔记
  14. 网络安全知识竞赛题库及答案(多选题1-100题)
  15. 使用 Python 计算 DID 及其对应P值
  16. Linux Ubuntu 安装 Realtek 8812BU无线网卡
  17. OPEN(SAP) UI5 学习入门系列之二: 最佳实践练习(上)
  18. CISC(复杂指令集)与RISC(精简指令集)的区别
  19. 郑大计算机技术专硕学费,郑州大学研究生学费标准及奖助政策情况
  20. [双系统]安装双系统的步骤及注意事项(含分区工具介绍)

热门文章

  1. reentrantlock原理_你必须要知道的热门 ReentrantLock 及 AQS 的实现原理
  2. 冬季海报素材温暖上线,PSD分层设计师最爱
  3. 冬季防御抗疫情宣传插画素材,时刻提醒大家注意
  4. 老板分分钟要急需应急海报怎么做?PSD分层万能模板帮你解决燃眉之急!
  5. 设计师需要的素材网站,给你归纳好了,拿走!
  6. 新手做UI?手里有几种常见的界面套路模板素材,你就成功一大半了!
  7. C++项目开发注意事项--持续更新
  8. PreparedStatement跟Statement的对比
  9. CoreOS rpm-ostree简介
  10. AWS上的Cilium网络拓扑和流量路径