Skip to content

Instantly share code, notes, and snippets.

@YimianDai
Created July 30, 2019 04:19
Show Gist options
  • Save YimianDai/c7aea61e690c1350eae90d5e97777b81 to your computer and use it in GitHub Desktop.
Save YimianDai/c7aea61e690c1350eae90d5e97777b81 to your computer and use it in GitHub Desktop.
Focal Loss

人生也跟 Focal Loss 一样

如果 easy samples 占据了你绝大部分的 loss,那么你再怎么优化,也只是在优化那些 easy samples 上的预测,所以这些优化都是无用功,在那些 Hard Samples 上一点力都没用,最后自然是 简单的能完成,难的一点都不会

人生也是如此,所以也要对人生采用 Focal Loss

自己人生的症结也是在于 gradient 被 overwhelming easy samples 的 loss 给 dominated 了,所以再怎么优化效果都不会好。希望自己接下来能够遵循 Focal loss,直面困难,走出舒适区。

Gradient 被 overwhelming 的 easy samples 的 loss 给 dominated 了

先理解 如何评价 Kaiming 的 Focal Loss for Dense Object Detection?

关键是这里的 “难” 怎么定义?

Focal Loss 是 将 predictions 作为 example 的难易反馈整合到 loss 中,在每次迭代中都能够自适应地鉴别样本的 “难” 还是 “易”,从而让模型在后期尽量去学习那些 hard example。

为什么 Focal Loss 会比 OHEM 好?

实际上,focal loss 可以看成 soft 的 OHEM。OHEM 是只取 3:1 的负样本去计算 loss,之外的负样本权重置零,而 focal loss 取了所有负样本,根据难度给了不同的权重。focal loss 相比 OHEM 的提升点在于,3:1 的比例比较粗暴,那些有些难度的负样本可能游离于 3:1 之外。之前实验中曾经调整过 OHEM 这个比例,发现是有好处的,现在可以试试 focal loss 了。

作者:mhliao 链接:https://www.zhihu.com/question/63581984/answer/211236300 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

那些有些难度的负样本可能游离于 3:1 之外,我觉得是有可能的,其实不仅仅是这种情况,还可能是即使用了 3:1 的比例,还是被 Easy samples dominated,问题在于 Easy vs Hard Imbalance 而不是 Positive vs Negative Imbalance,这个问题其实在即使用了 OHEM 下还是存在的

Focal Loss 会让整个 Loss 的曲线十分平滑,下降很稳定。在以往正负样本极不平衡的情况下,一定是避免不了难例挖掘的,这些难例的不稳定会使 Loss 抖动比较剧烈。而 Focal Loss 相当于是 Smooth Weighted Cross Entropy Loss,这个机制让 Loss 的下降更稳定。 同时出现的另一个现象是,对于类别的概率中不会出现以往极大的概率值,比如接近 1 的情况,相对概率的数值分布比较集中。

作者:Spaceman 链接:https://www.zhihu.com/question/63581984/answer/225874760 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

从我的理解上感觉是因为 detection 的最终目标(准确率)和实际训练的 log(p)不完全一致所以导致的存在优化空间,对于能准确识别的点没必要进一步提高准确率降低 loss,所以引出了这个改进 loss 的思路

插入一句,class imbalance 并不是 focal loss 要解决的问题,focal loss 要解决的是 easy samples dominant 的问题,这两个事情虽然经常同时出现,但是并不等价。 by Naiyan Wang

我的 理解是 focal loss 解决的是 easy sample 和 hard sample 的 imbalance 问题,而不是 Positive class 和 Negative class 的 imbalance 问题,其实越到后面,随着 CNN 的能力越来越强,越来越多的 sample 其实都变成了 easy sample,easy bu easy 其实不仅仅取决于样本,还取决于 Detector 的能力

因为有 easy samples 主导的问题,所以在 SSD 中并不是拿所有 anchor 都来训练效果就会好

one stage 的 proposal 就是 receptive field,所以我感觉 8 * 8 的 receptive field 检测小目标应该也没问题吧,看一下 finding tiny face 那篇文章

two-stage 的方法更容易做 Alignment; one-stage 方法只能指望 receptive field 去处理 Alignment。

alpha 是为了 Positive vs Negative Imbalance 引入的 gamma 是为了 Easy vs Hard Imbalance 引入的

kaiming 的 Focal Loss 中,为什么当增大γ时,要减小α呢? 【个人感觉无任何实验依据】,CE 情况下 neg 的 sample 个数多,导致总体累计的 loss 大于 pos 的数目,所以需要把 pos 的 weight 设的大一些(0.75 vs 0.25)。当 FL 时候,大幅度降低了简单的 case 的 loss,而个人猜想这些简单 case 大多是 neg sample,所以可能到最后 neg 的 loss 反而可能小于 pos,导致需要减少 pos 的 weight(0.25 vs 0.75)。后面的猜想没有做过试验,仅仅感觉。

作者:匿名用户 链接:https://www.zhihu.com/question/67926031/answer/257937896 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

前期收敛速度增加可能是:普通的 loss 初期浪费了一部分算力在简单的数据上,focal loss 可以更好的让算力跳过太简单的数据提前开始考虑难度稍微大的案例

develop a network architecture with a wide range of anchor-associated layers, whose stride size gradually double from 4 to 128 pixels

ensures that different scales of faces have adequate features for detection at corresponding anchor associated layers

stride size gradually double from 4 to 128 pixels

the scales of anchors from 16 to 512 pixels based on the effective receptive field and our equalproportion interval principle

这里的 stride 指的是

@dongli96
Copy link

写得太好了!第一段感悟也很精彩!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment