Focal Loss由来的通俗理解

前言

Focal Loss前前后后看了好几遍了,总是会忘记,写下来时常看看吧!

问题:为什么引入focal loss?

focal loss的提出背景是two-stage阶段速度慢,准确率高,可是one-stage阶段速度高,准确率差,能不能想办法在保持one-stage速度高的前提下,提升其准确率呢?

引入Focal Loss的思考过程:

one-stage准确率为什么不如two-stage的呢?作者认为是类别不均衡造成的,不均衡的原因有两个:

  • 正负样本不均衡
  • 预测正确和预测错误的不均衡

接下来就以完整的梯度下降为例进行说明
θ j + 1 = θ j − α ∂ ∂ θ j J ( θ ) = θ j − α ∂ ∂ θ j 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 = θ j − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j i \begin{aligned} \theta_{j+1} &=\theta_{j}-\alpha \frac{\partial}{\partial \theta_{j}} J(\theta) \\ &=\theta_{j}-\alpha \frac{\partial}{\partial \theta_{j}} \frac{1}{2 m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right)^{2} \\ &=\theta_{j}-\alpha \frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) x_{j}^{i} \end{aligned} θj+1=θjαθjJ(θ)=θjαθj2m1i=1m(hθ(x(i))y(i))2=θjαm1i=1m(hθ(x(i))y(i))xji
这里 J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta)=\frac{1}{2 m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right)^{2} J(θ)=2m1i=1m(hθ(x(i))y(i))2,我们可以将所有的样本分成4部分:TP,FP,FN,TN。这四部分对于参数 θ \theta θ的变化都有影响。

预测(列)label为正label为负
预测为正样本TP(真正例)FP(假正例)
预测为负样本FN(假例)TN(真反例)

当假设负样本数量过大,正样本数量很小,如下表所示,那么参数 θ \theta θ的变化量 α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j i \alpha \frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) x_{j}^{i} αm1i=1m(hθ(x(i))y(i))xji其实大部分都是TN造成的,也就是负样本中预测为负样本的那些,同时还有少量的FP,但是降低这部分的损失对于网络分类性能没有任何提升,应该更看重的是分类错误的样本FP和FN,也就是更关注错误分类的样本,同时需要提升这两类样本在损失函数中的占比,首先可以做的就是减小负样本在损失中的占比

预测(列)label为正(1份)label为负(10份)
预测为正样本TP(真正例)(0.9)份FP(假正例)(1份)
预测为负样本FN(假例)(0.1)份TN(真反例)(9份)

focal loss的出发点是从交叉熵损失出发
C E ( p , y ) = { − log ⁡ ( p )  if  y = 1 − log ⁡ ( 1 − p )  otherwise  \mathrm{CE}(p, y)=\left\{\begin{array}{ll} -\log (p) & \text { if } y=1 \\ -\log (1-p) & \text { otherwise } \end{array}\right. CE(p,y)={log(p)log(1p) if y=1 otherwise 
接着引入一个记号 p t p_t pt:表示形式为:其中 p t p_t pt是关于 y y y的函数
p t = { p  if  y = 1 1 − p  otherwise  p_{\mathrm{t}}=\left\{\begin{array}{ll} p & \text { if } y=1 \\ 1-p & \text { otherwise } \end{array}\right. pt={p1p if y=1 otherwise 
这样我们可以将交叉熵损失计作
C E ( p , y ) = C E ( p t ) = − log ⁡ ( p t ) \mathrm{CE}(p, y)=\mathrm{CE}\left(p_{\mathrm{t}}\right)=-\log \left(p_{\mathrm{t}}\right) CE(p,y)=CE(pt)=log(pt)
对于单个样本来说,交叉上损失的计算 − log ⁡ ( p t ) -\log \left(p_{\mathrm{t}}\right) log(pt),对于正样本和负样本我们可以乘上不同的权重参数,比如 − α t log ⁡ ( p t ) -\alpha_t\log \left(p_{\mathrm{t}}\right) αtlog(pt),来调整正负样本的权重,

这里的 α t \alpha_t αt同样和类别相关,
α t = { α  if  y = 1 1 − α  otherwise  \alpha_{\mathrm{t}}=\left\{\begin{array}{ll} \alpha & \text { if } y=1 \\ 1-\alpha & \text { otherwise } \end{array}\right. αt={α1α if y=1 otherwise 
从表格上来看:经过 α t \alpha_t αt调整后的正负样本对损失的影响变换如下

预测(列)label为正(1份)*0.9=0.9份label为负(10份)*0.1=1份
预测为正样本TP(真正例)(0.9份)*0.9=0.81份FP(假正例)(1份)*0.1=0.1份
预测为负样本FN(假例)(0.1份)*0.9=0.09份TN(真反例)(9份)*0.1=0.9份

从上表上来看, a t a_t at解决了正负样本不均衡的一个问题,但是对于整个损失函数来说,TP和TN数量较大,虽然损失值较小,但是在整体损失中所占的比例不一定小,我们关注这些正确分类的样本的损失对于模型的性能提升没有意义,更重要的是需要看重错误分类的这些样本,我们接下来可以做的就是调整正确分类和错误分类样本之间的权重

接下来使用一个例子进行说明:

比如说两个bounding box的真实label都为正,对应的我们有两个预测结果,一个预测为正的概率为0.9(正确分类),另一个预测为正的概率为0.3(错误分类),假定0.5为判别正负的标准,此时的交叉熵损失分别为:

− log ⁡ ( 0.9 ) 以 及 − log ⁡ ( 0.3 ) -\log (0.9) 以及-\log (0.3) log(0.9)log(0.3),我们对这两个再做一个权重,更加看重错误分类的样本,一个简单的思路就是:对于 − log ⁡ ( 0.9 ) -\log (0.9) log(0.9)我们可以乘上(1-0.9)=0.1,对于 − log ⁡ ( 0.3 ) -\log (0.3) log(0.3)我们可以乘上(1-0.3)=0.7来进行调整。同理,我们假设两个bounding box的真实label都为负,对应有两个预测结果一个预测为正的概率为0.1(正确分类),另一个预测为正的概率为0.7(错误分类),此时交叉熵损失分别为 − log ⁡ ( 0.9 ) 以 及 − log ⁡ ( 0.3 ) -\log (0.9) 以及-\log (0.3) log(0.9)log(0.3),为了更看重错误分类的样本,我们分别乘上0.1和0.7。

从上面的例子中我们进行权重调整时,乘的系数 β t \beta_t βt为:
β t = { 1 − p  if  y = 1 p  otherwise  \beta_{\mathrm{t}}=\left\{\begin{array}{ll} 1-p & \text { if } y=1 \\ p & \text { otherwise } \end{array}\right. βt={1pp if y=1 otherwise 
p t p_t pt的关系是 β t = 1 − p t \beta_t = 1-p_t βt=1pt,由于 β t \beta_t βt是小于1的,再考虑复杂一点,我们进一步加大错分类样本的权重,比如对

β t \beta_t βt γ \gamma γ次方(此时 γ > 1 \gamma>1 γ>1),或者我们相比于 β t \beta_t βt减小错分类样本的权重( 0 < γ < 1 0<\gamma<1 0<γ<1),参考上面的例子,对正确分类样本和错误分类样本的权重调整由原来的0.1,0.7变成了 0. 1 γ 0.1^{\gamma} 0.1γ 0. 7 γ 0.7^{\gamma} 0.7γ γ = 2 \gamma=2 γ=2时,权重为0.01和0.49,7:1的关系,变成了49:1的关系。同理,对于 γ = 0.5 \gamma=0.5 γ=0.5,7:1的关系,将会变成8.4:3.2.

我们将上面的关系形式化表示是:
F L ( p t ) = − ( 1 − p t ) γ log ⁡ ( p t ) \mathrm{FL}\left(p_{\mathrm{t}}\right)=-\left(1-p_{\mathrm{t}}\right)^{\gamma} \log \left(p_{\mathrm{t}}\right) FL(pt)=(1pt)γlog(pt)
同时考虑对正负样本不均衡的调整得到Focal Loss最终的表示形式:
F L ( p t ) = − α t ( 1 − p t ) γ log ⁡ ( p t ) \mathrm{FL}\left(p_{\mathrm{t}}\right)=-\alpha_{\mathrm{t}}\left(1-p_{\mathrm{t}}\right)^{\gamma} \log \left(p_{\mathrm{t}}\right) FL(pt)=αt(1pt)γlog(pt)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值