热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

自定义损失函数_关于样本于损失函数的权重

机器学习损失函数的定义非常重要,损失函数决定了如何从样本数据中进行学习,模型的总体损失函数由对样本的损失求和而来,对于特定问题࿰
20470eb8451063798ea5b9f545324dc4.png

机器学习损失函数的定义非常重要,损失函数决定了如何从样本数据中进行学习,模型的总体损失函数由对样本的损失求和而来,对于特定问题,有三种情况需要特别考虑样本损失的权重。

  1. 类别样本不均衡
    对样本量比较少的类别,加大该类样本权重,使模型不至于忽略了该类别的样本特征。比如对于违约样本占比1:9比例的二分类,如果不做权重调整,模型将学习到绝大多数正常样本的特征而忽略了违约样本的特征,此时模型准确率也能达到90%,而我们更关注的是违约样本。
  2. 错误分类样本权重调整
    采用AdaBoost类似的思路,多个模型组成训练队伍在迭代过程中不断对误判的样本加大权重,以期在后续的学习中捕获误判样本的特征,提升模型准确率,为避免过拟合,可以采用多个不同模型进行,学习中不断调整彼此其他模型误判的样本的权重。
  3. Focal Loss
    Focal Loss[1]为近来提出的针对hard/easy样本进行权重调整的方法。思路是对容易区分的样本(easy)调低权重,对难区分(hard)的样本调高权重。比如对于A样本预测概率为(0.9,01),说明模型对该样本很自信,属于easy样本,对于B样本预测概率为(0.53,0.47),说明模型对B这样类似样本的预测缺乏区分度,可以适当调整该样本的权重。具体的,Focal Loss的提出者提出了以下形式的损失函数:
e24cfd08523458b39c4fb3f447b80447.png


其中

为传统意义上的样本权重,比如为解决样本不均衡问题,而
则用于调整hard/easy样本的权重,但p较高(接近1)时,说明样本容易区分,之类样本其权重可以相对调低,当p较低时,权重
会相对变大。Focal Loss的提出者实验表明
取2时效果最佳。

Focal函数的图形如下,
=0时候退化为一般的交叉熵损失函数。
a068e42b25d7655e9357079cf47a7ddc.png


对于梯度下降的学习方法,需要其一阶导数。比如在xgboost上可以通过自定义损失函数实现Focal Loss,因其需要Focal Loss的一阶、二阶导数,用mathematica给出个符号形式:

6a6276c81fda92829c7ed8dc02c979a7.png

参考文献:
[1]Tsung-Yi Lin, Priya Goyal, Ross Girshick, Kaiming He, Piotr Dollár 2017 arXiv:1708.02002



推荐阅读
author-avatar
mobiledu2502871343
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有