作者:郭必扬

小样本能用什么机器学习模型_深度学习

课程学习式数据增强(curriculum data augmentation)

这应该就是本文最主要的贡献了。作者使用文本增强时文本的改动幅度来衡量增强样本的难度,从而设计课程学习策略

小样本能用什么机器学习模型_人脸识别_02

具体分为两种方法:

① 两阶段法(two-stage)

先使用原样本进行训练,然后把增强样本混进来训练。这里的增强样本使用都是同样的改动幅度,所以该方法就是分了两个层级的难度。

②渐进式(gradual)

设定一个难度范围,从最低难度开始训练,收敛后就增大难度继续训练,直到训练到最大难度。

具体设置就是这段话:


小样本能用什么机器学习模型_深度学习_03

课程学习的具体设置

然后就可以直接看实验结果了:


小样本能用什么机器学习模型_人工智能_04

小样本能用什么机器学习模型_人脸识别_05

更详细的实验

总之就是,使用课程学习的思路来进行数据增强,确实会比传统的数据增强训练方式有效,这也是为什么two-stage的方式会更好。而那个gradual的方式,相当于设置了更多的课程阶梯,使用了更多的增强样本,所以效果肯定会好一些。

小样本学习和Triplet loss

这里再单独讲一讲few-shot learning和Triplet loss,因为一开始我是从数据增强角度去找到这篇文章的,加上之前对few-shot learning也不太了解,所以搞不懂为什么一定要跟triplet loss扯上关系。

我们回顾上面贴第二个实验结果表,它揭示了Triplet loss在few-shot任务中相比于使用cross-entropy loss的优势。

这个triple loss最开始是用于训练人脸识别模型的,因为人脸识别就是要识别的人一般非常多(类别多),但是我们能够提供给模型拿来训练的人脸样本非常少(few-shot),所以在这种背景下,triple loss就被设计出来,把一个分类问题,转化成相似度问题,使用少量的训练样本,训练出一个相似函数,然后在预测时,就可以计算新样本跟训练集中已有的样本的相似度,从而判断类别。

计算Triplet Loss使用的是一批三元组(A,P,N),计算公式是这样的:

其中,A代表anchor样本,P代表positive样本,N代表negative样本,则是一个用于缓冲的距离,或者说margin,d则是一个计算距离的函数,可以使用余弦距离或者欧氏距离。

借用B站Shusen Wang老师的教程(链接:https://www.bilibili.com/video/BV1vQ4y1R7dr?t=511.5)中的示意图来帮助理解:

小样本能用什么机器学习模型_人工智能_06


在训练样本很少的情况下,这种基于相似度的方法可以更加细致地刻画不同类别之间的区别,所以可以取得比cross-entropy更好的效果。

triplet loss VS. cross-entropy loss

这里我们不禁要问,那triplet loss和cross-entropy loss各自的适用场景是什么呢?

triplet loss,一般用于相似度、检索和小样本分类任务上,而一般的分类任务,则更常使用cross-entropy。