【论文阅读笔记】GroupSoftmax交叉熵损失函数的推导

本文介绍GroupSoftmax交叉熵损失函数如何在不重新标注原有数据的情况下,解决目标检测中类别变化的问题,降低标注成本,适用于多数据集联合训练。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考文献:https://www.zhuanzhi.ai/document/cd49eeb11c338b1feaf4e6feae84ec5d

github【以simpledet为基础网络】:https://github.com/chengzhengxin/groupsoftmax-simpledet

1.能解决的问题

  • 在不重新标注原有数据的情况下,对新的标注数据,增加某些新的类别
  • 在不重新标注原有数据的情况下,对新的标注数据,修改原有的类别标准,比如将某个类别拆分成新的几个类别
  • 已标注数据集中,出现概率较高的类别一般属于简单样本,对新的数据只标注出现概率较低的类别,能够显著降低标注成本
  • 在标注大型目标检测数据集时,只标注矩形框,而不选择类别属性,能够有效降低标注成本

GroupSoftmax 交叉熵损失函数允许类别 K 和类别 j 发生合并,形成一个新的组合类别 g ,当训练样本 y 的真实标签为组合类别 g 时,也能够计算出类别 K 和类别 j 的对应梯度,完成网络权重更新。理论上, GroupSoftmax 交叉熵损失函数能够兼容任意数量、任意标注标准的多个数据集联合训练。

在参考文献中举例说明了为什么现实生活中需要这个损失函数,当数据集中原有的类别C4='自行车',C5='电动车'需要合并成C='非机动车类'时,可以使用GroupSofmax函数进行训练,而不是使用大量人工对样本进行标注

2.公式的推导

损失函数的定义【对于群组类这个类的损失计算如下】:

                                                       L_{i}=-\sum_{g}p_{i,g}logP_{g}

上式中,g表示一个群组类,比如说刚刚的非机动车类,里面就包含了自行车和电动车两个类;也有可能就是一个单独的摩托车类别谁也不包含。其中P_{g}为群组类的概率,公式如下【是两个类的概率和】:

                                                     P_{g}=\sum_{k\epsilon g}P_{k}=\frac{\sum_{k\epsilon g}e^{f_{k}}}{\sum_{j}e^{f_{j}}}

与Softmax损失函数一样,可以使用复合求导的方式进行求导【得到分类对于之前传向它的每个分类的分支m的导数】,因此有:

                                                      \frac{\partial L_{i}}{\partial f_{m}}= \frac{\partial L_{i}}{\partial P_{g}}\cdot \frac{\partial P_{g}}{\partial f_{m}}

1)公式一:

                                                      \frac{\partial P_{g}}{\partial f_{m}}= \frac{e^{f_{m}}\sum_{j}e^{f_{j}}-e^{f_{m}}\sum_{k\epsilon g}e^{f_{k}}}{​{\sum_{j}e^{f_{j}}}^{2}}

有两种情况,第一,当 群组类别g中包含了m类别【当样本m为自行车时,群组类别g=非机动车包含了m,但群组类g=摩托车不包含m】

                                                     \frac{\partial P_{g}}{\partial f_{m}}= \frac{e^{f_{m}}\sum_{j}e^{f_{j}}-e^{f_{m}}\sum_{k\epsilon g}e^{f_{k}}}{​{\sum_{j}e^{f_{j}}}^{2}}=P_{m}(1-P_{g})

                      第二,当 群组类别g中不包含m类别

                                                     \frac{\partial P_{g}}{\partial f_{m}}= \frac{-e^{f_{m}}\sum_{k\epsilon g}e^{f_{k}}}{​{\sum_{j}e^{f_{j}}}^{2}}=-P_{m}P_{g}

2)公式二:

                                                     \frac{\partial L_{i}}{\partial f_{m}}= \frac{\partial L_{i}}{\partial P_{g}}\cdot \frac{\partial P_{g}}{\partial f_{m}}=\frac{\partial -\sum_{g}p_{i,g}logP_{g}}{\partial P_{g}}\cdot \frac{\partial P_{g}}{\partial f_{m}} =-\sum_{g}p_{i,g}\frac{1}{P_{g}}\frac{\partial P_{g}}{\partial f_{m}}

                                                                                      =-\sum_{m\epsilon g}p_{i,g}\frac{1}{P_{g}}P_{m}(1-P_{g})+\sum_{m not \epsilon g}p_{i,g}\frac{1}{P_{g}}P_{m}P_{g}

                                                                                      =-\sum_{m\epsilon g}p_{i,g}\frac{(1-P_{g})}{P_{g}}P_{m}+\sum_{m not \epsilon g}p_{i,g}P_{m}

 又要分情况讨论了,

第一,当对应的输出分支y_{i}为正样本时,这种情况又有两种情况:

          m既是正样本 群组类g又包含m类,有\sum_{m\epsilon g}p_{i,g}=1

          m是正样本 群组类g不包含m类,有\sum_{m not\epsilon g}p_{i,g}=0

           所以有,-\sum_{m\epsilon g}p_{i,g}\frac{(1-P_{g})}{P_{g}}P_{m}+\sum_{m\epsilon g}p_{i,g}P_{m}=(P_{g}-1)\frac{P_{m}}{P_{g}}

第二,当对应的输出分支y_{i}为负样本时, 这种情况又有两种情况:

          m既是负样本 群组类g又包含m类,有\sum_{m\epsilon g}p_{i,g}=0

          m是负样本 群组类g不包含m类,有\sum_{m not\epsilon g}p_{i,g}=1

          所以有,-\sum_{m\epsilon g}p_{i,g}\frac{(1-P_{g})}{P_{g}}P_{m}+\sum_{m\epsilon g}p_{i,g}P_{m}=P_{m}

3)最后举个例子

对于群组类g=非机动车类来说,当m=电动车时,有\frac{\partial L_{i}}{\partial 'diandongche'}= (P_{'diandongche'}+P_{'zixingche'}-1)\frac{P_{'diandongche'}}{P_{'diandongche'}+P_{'zixingche'}}

对于群组类g=非机动车类来说,当m=摩托车时,有   \frac{\partial L_{i}}{\partial 'motuoche'}= P_{'motuoche'}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值