论文链接: https://arxiv.org/pdf/1708.02002.pdf
1. 问题
在阅读这篇论文之前,我们先考虑一个问题。
我们现在打算用神经网络训练一个二分类模型,但是在训练的过程中往往会遇到这样的情况:
(1)正样本和反样本的样本数不相同,甚至相差悬殊(实际上往往正样本数远远小于反样本数),如何解决样本不均衡的问题?
(2)在选择反样本(正样本)的过程中,很多样本都是易于区分的,也就是说,这些样本对于模型性能的提升贡献较小,添加了这些样本不仅对于模型的提升帮助有限,同时大量的这些样本也主导了梯度更新的方向,浪费了训练时间。
如果上述的疑问没有听懂或者接触的项目较少,这里我再举一个例子。现在我要训练一个语音唤醒词,名字叫东泰山。也就是说,送给神经网络一些语音,如果语音中包含东泰山,那么输出1,否则输出0。显然在我们训练神经网络模型的过程中,我们会遇到这样的情况(1)包含有东泰山的语音样本太少(其他任何不包含东泰山发音的都可以作为反样本)。(2)很多反样本易于区分,比如什么打呼噜声音,鸟叫声,汽车鸣笛声,这些都不包含东泰山,同时也是易于区分的样本,而对于五台山(台tai2山shan1与泰tai4山shan1),这种包含了东泰山发音的样本就是较难区分的样本。(3)大量无关样本主导了梯度更新的方向。
引用原文的话来说:
在训练的过程中,由于大多数都是简单易分的负样本(属于背景的样本),使得训练过程不能充分学习到属于那些有类别样本的信息;其次简单易分的负样本太多,可能掩盖了其他有类别样本的作用(这些简单易分的负样本仍产生一定幅度的loss,见下图蓝色曲线,数量多会对loss起主要贡献作用,因此就主导了梯度的更新方向,掩盖了重要的信息)