我们来谈谈损失函数 1. 噪声鲁棒损失函数简析及代码实现

发布于:2024-10-24 编辑:匿名 来源:网络

今天我们来谈谈非常规损失函数。除了常用的分类交叉熵和回归均方误差之外,我们还会针对数据长尾、标签噪声、训练样本数据不平衡等可能出现的问题,讨论适合不同场景的针对性损失函数。

在第一章中,我们介绍了当注释标签存在噪声时可以尝试的损失函数。这里的标签噪声主要指与特征分布无关的标签噪声。

代码详情参见pytorch、Tensorflow?Symmetric Loss Function论文:Making Risk Minimization Tolerant to Label Noise 这里我们用最基本的二分类问题和一个简化的假设“标签噪声和标签独立且均匀分布”来解释什么是对标记噪声具有鲁棒性的损失函数。假设总体误标样本比例为 eta,则真实标签 y=0 和 y=1 中均存在 eta 误标比例,其中 1 标记为 0,0 标记为 1。

带噪声的损失函数为如下`$\begin{align}L(f(x), y_{噪声}) &= (1-\eta)L(f(x), y) + \eta L(f(x ), 1- y) \& = (1-2\eta)L(f(x),y) + \etaL(f(x),y)+L(f(x),1-y) \& = (1- 2\eta)*L(f(x),y) + \eta K \\end{align}$`所以如果损失函数满足 L(f(x),y)+L(f(x) ), 1-y)=constant,那么带噪声的损失函数将收敛到与不带噪声的 L(f(x),y) 相同的解。作者认为这样的损失函数是对称的。

那么对称损失有哪些常见的损失函数呢?梅就是它!对于二分类softmax的输出层L(f(x),y)+L(f(x),1-y)=|y-f(x)| + |1-y-f(x)| =1、敲黑板!记住这一点,因为后面的GCE和SCE其实都离不开MAE。对称损失的论证在这里得到了简化。

详细内容请参见论文~广义交叉熵(GCE)论文:Generalized Cross Entropy Loss for Training Deep Neural Networks with Noisy Labels。继续上面,虽然MAE是一个噪声鲁棒损失函数,但是在深度学习中,由于MAE的梯度要么是1,要么是-1,并且所有样本的梯度尺度相同,缺乏对样本的表征难度和模型置信度,所以MAE很难收敛。

作者提出了一种融合MAE和交叉熵的解决方案。废话不多说,直接上Loss`$L_{q}(f(x),y_j) = \frac{1-f_j(x)^q}{q} $`作者使用负box-cox作为损失函数,乍一看与MAE无关。

然而,如果你改变q的值,你会发现奥妙就在于q->1:L=1-f_j(x),即MAE Lossq->0:根据洛皮达定律,如果对分子微分和分母同时,你会得到 L =-log(f_j(x)) ,即交叉熵,因此GCE损失函数通过控制q的值找到MAE和CrossEntropy之间的折衷点。这有点类似于Huber Loss的设计,只不过Huber明确使用alpha权重来融合RMSE和MAE,而GCE是隐式融合。

q->1,对噪声更鲁棒,但更难收敛。作者还提出截断GCE,以截断过多的损失。

这里我就不详细说了。 pytorch实现如下。

TF实现参见文章开头链接代码语言: javascript copy class GeneralizeCrossEntropy(nn.Module): def __init__(self, q=0.7): super(GeneralizeCrossEntropy, self).__init__() self.q = q defforward(self, logits, labels): # 负框 cox: (1-f(x)^q)/q labels = torch .nn.function.one_hot(labels, num_classes=logits.shape[-1]) probs = F.softmax(logits, dim=-1) 损失 = (1 - torch.pow(torch.sum(labels * probs, dim =-1), self.q)) / self.q 损失 = torch.mean (loss) return lossSymmetric Cross Entropy (SCE) Symmetric Cross Entropy for Robust Learning with Noisy Labels 作者从交叉熵的另一个含义出发,最小交叉熵实际上是最小化预测分布与真实分布之间的 KL 散度。两者的关系如下,其中H(y)是真实标签的信息熵,是一个常数`$\begin{align}KL(y||f(x)) &= \sum ylog(f (x)) - \sum ylog(y) \& = H(y, f(x)) - H(y) = CrossEntropy(y, f(x)) - H (y)\end{对齐}$`考虑KL散度是不对称的,KL(y||f(x))!=KL(f(x)||y),前者衡量预测分布对于数据编码导致的信息损失的使用。

然而,当 y 本身存在噪声时,y 可能不是正确的标签,但 f(x) 是。在这种情况下,需要考虑另一个方向KL散度KL(f(x)||y)。

所以作者使用对称KL对应的对称交叉熵(SCE)作为损失函数`$SCE =CE + RCE = H(y,f(x)) + H(f(x),y) \= \ sum_j y_jlog(f_j (x)) + \sum_j f_j(x)log(y_j)$`看到这里你会觉得作者又挠头了>.<。但只需要在RCE部分进行改造,就会一下子清晰起来。

以二元分类为例,无法计算log(0)。使用常数 A 替换 `$RCE= H(f(x),y) = f_1(x) log(1) + (1-f_1(x)) log(0 ) = A(1-f_1(x)) $`RCE 部分是 MAE!所以SCE本质上是交叉熵和MAE的显式融合! pytorch实现如下。

TF实现参见文章开头链接代码语言:javascript copy class SymmetricCrossEntropy(nn.Module): def __init__(self, alpha=0.1, beta=1): super(SymmetricCrossEntropy, self).__init__() self.alpha = alpha self.beta = beta self.epsilon = 1e-10 defforward(self, logits, labels): # KL(p|q) + KL(q|p) labels = torch.nn.function.one_hot (labels, num_classes=logits.shape[-1]) probs = F.softmax(logits, dim=-1) # KL y_true = torch.clip(labels, self.eps, 1.0 - self.eps) y_pred = probs ce = -torch .mean(torch.sum(y_true * torch.log(y_pred), dim=-1)) # 反向KL y_true = probs y_pred = torch.clip(labels, self.eps, 1.0 - self.eps) rce = -torch .mean(torch.sum(y_true * torch.log(y_pred), dim=-1)) 返回 self.alpha * ce + self.beta * rcePeerLossPeer 损失函数:在不知道噪声率的情况下从噪声标签中学习NLNL:噪声标签的负学习与 GCE 和 SCE 相比,Peer 损失仅适用于交叉熵。其设计更加灵活。

每个样本的损失函数由常规损失和随机标签损失进行加权。得到的,权重为alpha,这里的损失支持任何分类损失函数。

随机标签作者是通过打乱一批标签的顺序来获得的~原理上感觉Peer Loss和NLNL很相似,都是负学习思想。对比两者的损失函数,PL就是最小化噪声标签y的损失,同时最大化模型在随机标签上的损失。

NL 直接最大化模型在非真实标签 y 上的损失。本质上,它们都是消极学习。

该模型不学习 x 是什么,而是学习 x 不是什么。通过将所有错误分类的p->0压入,得到正确的标签。

从这个逻辑来看,感觉Peer Loss和NLNL在高维多分类场景下应该会有更好的表现~`$PL(f(x),y) = L(f(x),y) - \alpha L ( f(x),\tilde{y}) $``$NL(f(x),y) = L(1-f(x), \tilde{y}) $`pytorch 实现如下,参见 TF实现第一链接代码语言:javascript copy class PeerLoss(nn.Module): def __init__(self, alpha=0.5, loss): super(PeerLoss, self).__init__() self.alpha = alpha self.loss = loss def front (self, preds, labels): index = list(range(labels.shape[0])) rand_index = random.shuffle(index) rand_labels = labels[rand_index] loss_true = self.loss(preds, labels) loss_rand = self. loss(preds, rand_labels) loss = loss_true - self.alpha * loss_rand return lossBootstrap Loss 使用 Bootstrapping 在噪声标签上训练深度神经网络 Bootstrap Loss 是从预测一致性的角度减少噪声标签对模型的影响。作者给出了soft和hard两个损失函数。

Soft Bootstrap在交叉熵的基础上加上预测熵值,在最小化概率熵值的同时,最小化预测误差,将概率推向0/1,获得更加置信的预测。这里我们实际上应用了之前半监督中提到的最小熵原理(小样本工具3.半监督最小熵规则),就是将分类边界推离高密度区域。

对于噪声标签,模型最初估计的熵值会更大(p->0.5)。因为加入了熵正则化项,模型不再拟合噪声标签,而是移动到正确的标签(增加预测置信度,降低熵值),也会降低损失函数。

但感觉引入熵正则化也可能使模型预测置信度过高而导致过拟合`$L_{soft} = \sum (\beta y_i + (1-\beta) p_i) log(p_i) $` 和 Hard Bootstrap 将上面的预测概率值替换为预测概率最高的分类。硬比软更类似于标签平滑。

例如:当真实标签y=0,噪声标签y=1,预测概率为0.7,0.3,β=0.9时,Bootstrap拟合出来的y实际上是0.1,0.9,这样会降低置信度错误的标签。让模型有机会学习其他标签。

当模型预测与标签一致时,y值不会改变,因此不会对正确样本产生太大影响。作者估计Hard Bootstrap的效果明显更好~`$L_{hard} = \sum (\beta y_i + (1-\beta) argmx(p_i)) log(p_i)$`pytorch实现如下。

我们来谈谈损失函数 1. 噪声鲁棒损失函数简析及代码实现

站长声明

版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

标签:

相关文章

  • 全球先进公司建成全球首座8英寸氮化镓代工厂

    全球先进公司建成全球首座8英寸氮化镓代工厂

    联合万宝消息,从硅片到8英寸晶圆代工厂报价纷纷上涨,全球先进8英寸产能供需紧张,已一直景气至年底,正积极扩大氮化镓(GaN)产能,国际主要IDM厂商看好电动汽车产业未来,已预判全球先进GaN产能。 明年,GaN产量将快速增长,成为全球第一家8英寸GaN代工厂。 半导体上游材料

    06-06

  • 宇策生物获3亿元C轮融资,由元智科技医疗领投

    宇策生物获3亿元C轮融资,由元智科技医疗领投

    据投资界8月25日消息,深圳市宇策生物科技有限公司(简称:宇策生物)近日宣布,已完成近3亿元C轮战略融资,由元智科技医疗领投,普华资本跟投。 宇测生物是国内首家以精准肿瘤免疫治疗为核心的基因检测及大数据分析公司。 致力于肿瘤基因组技术的研究和转化应用。 基于二代

    06-18

  • 一点大学获500万元天使轮融资

    一点大学获500万元天使轮融资

    据《年中国校园市场发展报告》显示,截至年内,全国在校大学生约2000人,总消费规模约1亿元,月均每日消费约1亿元,市场潜力巨大。    据投资界8月10日消息,校园O2O项目“一点大学”近日宣布获得达文家1万元天使轮融资。    据悉,本轮融资资金将用于扩充高校团队、建设

    06-18

  • CDM云数据管理厂商“云信达科技”完成1亿元B轮融资

    CDM云数据管理厂商“云信达科技”完成1亿元B轮融资

    近日,云信达科技宣布完成1亿元B轮融资。 本轮融资由SIG海纳亚洲领投,南京高新创投、中南投资跟投。 目前股东联想创投持续投资。 凡卓资本担任本轮融资的独家保荐人。 云信达成立于2007年,是一家为现代企业数据基础设施提供CDM云数据管理产品的制造商。

    06-18

  • 阿里云实时数据仓库Hologres技术揭晓2.0

    阿里云实时数据仓库Hologres技术揭晓2.0

    关键词:实时数据仓库、Hologres 创作者:阿里云实时数据仓库Hologres团队发布日期:2020年6月16日 报告简介 互联网数字商业的核心是“千人千面”,通过个性化推荐和产品排名,让消费者看到自己最感兴趣、最适合的产品。 同时,每个商家无论规模大小,都需要准确了解消费者的

    06-17

  • 辰涛资本投资海科鑫源,深度探索新能源汽车产业链

    辰涛资本投资海科鑫源,深度探索新能源汽车产业链

    投资圈(ID:pedaily)据11月4日消息,辰涛资本作为领投人方之毅投资海科鑫源签署投资协议海源科信园。 山东海科鑫源是锂离子电池电解液溶剂行业的领先者。 主要产品包括新能源汽车行业电解液溶剂(电子级DMC、EMC、DEC、EC、PC)、医药级和食品级丙二醇、食品级异丙醇、工业

    06-18

  • 证监会上市公司监管部赵立新:强化监管是创业板现实选择

    证监会上市公司监管部赵立新:强化监管是创业板现实选择

    资本市场杂志社主办的“资本市场圆桌对话”冬季主题会议在资本市场杂志社经纬堂举行2019年11月12日,本次圆桌对话的主题是“如何在危机中重获投资者对上市公司的信任”。 上图为中国证监会上市公司监管部副主任赵立新。   以下为现场实录:  根据我国国情和资本市场情况,

    06-18

  • 清研智束完成1亿元A轮融资,由云晖资本、无锡实业巨峰、水木创投联合领投

    清研智束完成1亿元A轮融资,由云晖资本、无锡实业巨峰、水木创投联合领投

    投资界(ID:pedaily)12月23日消息,近日,中国电子束3D打印领导者清研智束宣布完成亿元A轮融资,为处于时代变革和机遇之中的中国3D打印行业的发展增添了进一步的动力。 本轮融资由云晖资本、无锡实业巨峰、水木创投联合领投,钟鼎资本、华德资本等投资机构跟投。 这些投资机

    06-17

  • Alienware X 17体验:Alienware想要的不仅仅是一台游戏笔记本

    Alienware X 17体验:Alienware想要的不仅仅是一台游戏笔记本

    在拿到这款Alienware X17之前,我对它强大的性能也只是粗略的了解。 于是当我查看官网,一一查看了英特尔第11代i9处理器和RTX显卡的配置后,我立即截图给朋友确认:“请帮我看看这是不是游戏本能达到的效果”现在。 ”最高配置? “除了 i9-0HK+RTX,还有什么?英特尔最强移动

    06-21

  • 乘联会:一季度全国乘用车市场销量同比下降4.5%

    乘联会:一季度全国乘用车市场销量同比下降4.5%

    据乘联会最新零售数据统计,国内狭义乘用车市场销量达3月份销售9000辆,同比下降10.5%,环比下降10.5%。 增长25.6%; 1-3月累计销量5000辆,同比下降4.5%。 3月份前15名车企批发销量合计为1000辆,市场集中率为73.9%,环比下降0.7个百分点。 3月份前15名车企零售总量为5000辆

    06-18

  • 中国移动3G退网进行中

    中国移动3G退网进行中

    雷锋网3月11日报道,一条“移动3G退网”登上热搜第二位。 进一步消息显示,福州市广播电视管理局致函福州移动称,“你们单位关于注销TD-SCDMA基站申请的报告已收到,经研究同意注销TD-SCDMA基站”。 ——本单位已停止使用的SCDMA基站,封存数据库中的TD-SCDMA基站数据,并收回

    06-18

  • 一篇文章看懂中国自动驾驶30年

    一篇文章看懂中国自动驾驶30年

    2019年8月,美国陆军的电子工程师弗朗西斯霍迪尼坐在一辆用收音机控制前车的汽车里。 这种组合车利用后车发出的无线电波来控制前车的方向盘、离合器、制动器等部件。 尽管这种驾驶方法并不安全或完美,并且经常向其他接收器发送无线电波,但它是第一辆真正的“自动驾驶汽车”

    06-17