focal loss详解
-
focal loss 是一种处理样本分类不均衡的损失函数,它能够根据分辨样本的难易程度区分样本,给样本不用的损失权重,即容易区分的样本添加较小的权重 α 1 \alpha_1 α1,给难分辨的样本添加较大的权重 α 2 \alpha_2 α2。
- 分类置信度接近1或者0的样本称为易分辨样本
- 其余称之为难于分辨的样本
-
损失函数的定义如下,将损失函数的重点集中在难分辨的样本上
L s u m = α 1 × L 易区分 + α 2 × L 难区分 L_{sum} = \alpha_1\times L_{易区分}+ \alpha_2\times L_{难区分} Lsum=α1×L易区分+α2×L难区分 -
focal loss的出现过程
-
标准交叉熵损失,以二分类为例
C E ( p , y ) = { − l o g ( p ) i f y = 1 − l p g ( 1 − p ) o t h e r w i s e CE(p,y)=\begin{cases}-log(p)&if \quad y=1\\-lpg(1-p)& otherwise\end{cases} CE(p,y)={−log(p)−lpg(1−p)ify=1otherwise-
为统一 p p p、 1 − p 1-p 1−p,我们设置 p t p_t pt函数:
p t = { p i f y = 1 1 − p o t h e r w i s e p_t=\begin{cases}p &if \quad y=1\\1-p& otherwise\end{cases} pt={p1−pify=1otherwise -
可以得到 C E ( p , y ) = C E ( p t ) = − l o g ( p t ) CE(p,y)=CE(p_t)=-log(p_t) CE(p,y)=CE(pt)=−log(pt)
-
这种损失函数在处理类不平均衡时非常糟糕,会因为某类的冗余,而主导损失函数,使模型失去效果。
-
-
为了解决类不平衡问题,常见的做法是添加权重因子,即平衡交叉熵。在 α ∈ [ 0 , 1 ] \alpha\in[0,1] α∈[0,1]的前提下,对类别1添加 a l p h a alpha alpha,对类别-1添加 1 − α 1-\alpha 1−α。为了形式上的方便,我们采用 a t a_t at,从而可以得 C E ( p t ) = − a t l o g ( p t ) CE(p_t)=-a_tlog(p_t) CE(pt)=−atlog(pt)。但是,当我们处理大量负样本、少量正样本的情况时,即使我们把负样本的权重设置很低,但是因为负样本的数量太大,积少成多,负样本的损失函数也会主导损失函数。
-
那些即使置信度很高的样本在标准交叉熵里也会存在损失。置信度很高的负样本往往占总样本的绝大部分,如果将这部分损失去除或者减弱,那么损失函数的效率会更高。
- 作者想减少置信度很高的样本损失在总损失中的比重,即在标准交叉熵前添加了权重因子
(
1
−
p
t
)
γ
(1-p_t)^\gamma
(1−pt)γ,形成focal loss:
- F L ( p t ) = − ( 1 − p t ) γ l o g ( p t ) FL(p_t)=-(1-p_t)^\gamma log(p_t) FL(pt)=−(1−pt)γlog(pt)
- 之前提到了解决类不平衡的平衡交叉熵,那么将平衡交叉熵和focal loss 两者混合就可以得到focal loss的
α
\alpha
α变体,如下,这个损失函数不仅考虑吧了"容易分辨",还考虑了“正负样本”的问题,在处理类不均衡的问题上,可以发挥巨大的作用。
- F L ( p t ) = − α t ( 1 − p t ) γ l o g ( p t ) FL(p_t)=-\alpha_t(1-p_t)^\gamma log(p_t) FL(pt)=−αt(1−pt)γlog(pt)
-
F
L
(
p
)
=
{
−
α
(
1
−
p
)
γ
l
o
g
(
p
)
i
f
y
=
1
−
(
1
−
α
)
p
γ
l
o
g
(
1
−
p
)
o
t
h
e
r
w
i
s
e
FL(p)=\begin{cases}-\alpha(1-p)^\gamma log(p) &if \quad y=1\\ -(1-\alpha)p^\gamma log(1-p) & otherwise\end{cases}
FL(p)={−α(1−p)γlog(p)−(1−α)pγlog(1−p)ify=1otherwise
-不同的参数,需要仔细调参,褒贬不一
- Focal loss与CE损失对比,易受噪音干扰
- 作者想减少置信度很高的样本损失在总损失中的比重,即在标准交叉熵前添加了权重因子
(
1
−
p
t
)
γ
(1-p_t)^\gamma
(1−pt)γ,形成focal loss:
-