• (5)label smooth


    参考博客https://blog.csdn.net/qiu931110/article/details/86684241

    在多分类任务中我们往往无论是使用sigmod函数还是softmax函数,最终都要经过交叉熵函数计算loss:

     最终在训练网络时,最小化预测概率和标签真实概率的交叉熵,从而得到最优的预测概率分布。如果分类正确p=y,loss=0,否则若p=1-y,loss趋近于无穷大。也就是说交叉熵会尽量拉大正确和错误的差值,这样有两个后果。

    1.如果我们的标注数据没有那么准确,导致模型混乱,也就是说鲁棒性不强;

    2.如果训练样本不能表征所有样本特征,那么这种强制拉大两者距离的做法很容易过拟合,导致模型泛化能力弱。

    为了解决这个问题,在2016年,Szegedy等人提出了inception v2的模型(论文:Rethinking the inception architecture for computer vision.)。其中提到了Label Smoothing技术,用以减轻这个问题。label smoothing将真实概率分布作如下改变:

     从概率分布上看,他让峰值不那么尖锐:

     假设我们的分类只有两个,一个是猫一个不是猫,分别用1和0表示。Label Smoothing的工作原理是对原来的[0 1]这种标注做一个改动,假设我们给定Label Smoothing的值为0.1:

     可以看到,原来的[0,1]编码变成了[0.05,0.95]了。这个label_smoothing的值假设为ϵ,那么就是说,原来分类准确的时候,p=1,不准确为p=0,现在变成了p=1−ϵ和ϵ,也就是说对分类准确做了一点惩罚。与之对应,label smoothing将交叉熵损失函数作如下改变:

    其实我们可以理解为过拟合与模型的能力和参数个数有关,我们相当于在label空间内做了个data augmentation,或者理解为加入了噪声,用来缓解过拟合。

    在yolov3中这样使用(无论是focal loss 还是label smooth,yolov3都没有处理交叉熵):

  • 相关阅读:
    读取Java文件到byte数组的三种方式
    https://blog.csdn.net/eguid_1/article/category/6270094
    JavaCV 学习(一):JavaCV 初体验
    WebService服务发布与使用(JDK自带WebService)
    SourceTree 免登录跳过初始设置
    Owin password
    IIS并发
    压力测试
    nginx
    消息队列MSMQ
  • 原文地址:https://www.cnblogs.com/super-zheng/p/13258128.html
Copyright © 2020-2023  润新知