前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >focal loss理解及实现要点

focal loss理解及实现要点

原创
作者头像
用户4363240
修改2020-02-10 17:59:28
1.7K0
修改2020-02-10 17:59:28
举报
文章被收录于专栏:VisonVison

知识准备:cross entropy loss

cross entropy有两种解释。一种是信息论KL散度角度,一种是概率论角度MLE。详见参考文献[1]。

cross entropy loss
cross entropy loss

y=\{+1,-1\}, p\in [0,1] ,其中y是ground truth label, p是predicted scores。

p_t大时,样本简单,p_t小时,样本难。

这时cross entropy loss可写为:CE(p,y)=CE(p_t)=-logp_t

focal loss

公式:FL(p_t)=-\alpha(1-p_t)^\gamma logp_t

  • 调节正负样本不均衡的传统手段\alpha\alpha是权重系数, \alpha是针对类别y=+11-\alpha是针对类别y=-1的。
  • 调节难易样本(1-p_t)^\gamma 其中\gamma大于0, 常取值为2。样本简单时,1-p_t小;样本难时,1-p_t大。

focal loss 实现要点

focal loss在实现时,有三个要点:

  1. 正确的focal loss公式
  2. 计算p的最后加上sigmoid operation以保证数值稳定性
  3. 输出层需要设置正确的bias

第2条的妙用

这条比较明显,对于logx来说,如果x过大,logx数值很大,所以对xsigmoid(x)使得其数值范围在(0,1)之间,log(sigmoid(x))数值也在(0,1)内。

第3条的妙用

如果不设置合适的bias的话,focal loss的表现可能会不如L1或者L2 loss(自己实现过)。

如论文[3]中section 3.3及section 4.1 initialization所述,在训练刚开始的iteration里,负样本比例远大于正样本的情况下,负样本的loss也远大于正样本的loss,即对回传梯度的贡献也远大于正样本。这样会带来训练不稳定(loss-> Nan)或者训练不出好结果(loss一直下降,但AP趋近于0)的问题。

在section 4.1中,论文指出在训练最开始,把所有正样本anchor的confidence都取为\pi

则网络输出的最后一层的bias初始值应设置为b=-log((1-\pi)/\pi)

解释:

最后一层的输出loss = wx + b, wx = -logp_t, loss = -logp_t-log((1-\pi)/\pi)=-log(p_t*(1-\pi)/\pi)。在网络训练开始时,若数值上p_t\pi相消,只剩下-log(1-\pi)约为0。即这样构造可以使初始训练时loss不过于大。

笔者自己认为\pi设置为多少最好需要做几次实验试。第一次尝试可以取得和论文中一样, \pi=0.01。 设置bias比直接给正负样本的loss设置固定的加权系数好,因为只设置了bias的初始值,bias是网络参数,在迭代过程中会更新

一个实现例子

focal loss example in CornerNet见参考文献[2]。

In kp.py

代码语言:txt
复制
for tl_heat, br_heat in zip(self.tl_heats, self.br_heats):
tl_heat[-1].bias.data.fill_(-2.19)
br_heat[-1].bias.data.fill_(-2.19)

We set the bias following the formula given in Section 4.1 of the focal loss paper. We use pi equals to 0.1.

一个有用的trick

最后输出层设置bias是训练网络的一个有用的trick,适用于正负样本悬殊情况下的loss训练。

Reference

  1. cross entropy loss
  2. focal loss example in CornerNet
  3. Focal Loss for Dense Object Detection

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 知识准备:cross entropy loss
  • focal loss
  • focal loss 实现要点
    • 第2条的妙用
      • 第3条的妙用
        • 一个实现例子
          • 一个有用的trick
          • Reference
          相关产品与服务
          图像处理
          图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档