从FocusLoss到hardsample

Focus Loss

何凯明大神在2017年的论文中提出Focus loss 论文
Focus Loss是一种处理深度学习中正负样本不均衡的方法. 它并没有固定形式,应该算是一种思路: 降低non-hard-sample的loss, 提高hard-sample的loss. 以二分类cross entropy loss为例

L(y,y0)=log(Py)

其中
Py=Pif y0=1

Py=1Pif y0=0

y0是truth label, Py是predicted probablity,Py[0,1]
Focus Loss的一个实现是修改loss为如下形式
L(y,y0)=(1Py)2log(Py)

显然Py越接近1的样本,其分类效果越好,也说明这个样本属于non-hard-sample,观察下图,focus loss压制了较大的Py对应的loss值,降低在反向传播过程中的作用
从FocusLoss到hardsample

hard-sample

图像分类中,hard-sample就是对当前分类器难以区分的样本,”难以区分”包含两种情况
* 分类正确,但置信度不高
上面二分类的例子就属于这种情况
* 分类错误
adaboost中权重调教策略,更接近这种情况
显然训练中希望大部分都是hard-sample,避免在non-hard-sample上消耗资源,有助于提高训练效率

hard-sample 和 SVM

hard-negative-sample 对SVM训练十分关键, 前几轮训练出的SVM分类器效果都不会太好,需要反复几轮筛选hard-negative-sample,构成训练集中负样本,才有可能得到较好的分类器. 这里hard-sample通过人工筛选方式获得.

hard-sample 和 adaboost

adaboost通过修改训练样本权重(提高hard-sample权重,降低non-hard-sample权重)驱动分类器选择那些对hard-sample更加有效的弱分类器,构成强分类达到高准确度的目的. 下面是常用的一个样本权重更新公式

w1=w0eyf(x)

其中w0是当前样本x权重, w1是更新后的权重,y{1,1}是样本x的truth label,f(x)当前分类器对x的预测结果,最简单的实现中f(x)是预测值和某个阈值的比较,大于阈值f(x)=1,否则f(x)=1.yf(x),,w_1< w_0,w_1> w_0$. adaboost中样本权重更新的思路和focus loss一致.

hard-sample 和 neural network (此处特指浅层网络,不是deep learn)

似乎早期有人用sliding-window + neural network, 其中涉及繁复的负样本人工筛选,类似SVM中的策略

hard-sample 和 random forest

(random forest使用不多,不敢乱写,求指教)