炼丹笔记四:小样本问题

炼丹笔记四:小样本问题

欢迎大家关注微信公众号:baihuaML白话机器学习

在这里,我们一起分享AI的故事。

您可以在后台留言,关于机器学习、深度学习的问题,我们会选择其中的优质问题进行回答!

本期问题

关于深度学习中的小样本问题,有哪些研究进展?

正所谓“巧妇难为无米之炊”,在是使用深度学习解决各种问题的时候,难免会遇到样本不充足的情况。那这个时候应该怎样做呢?

什么是小样本问题?

小样本问题是指研究如何从少量的样本中去学习。众所周知,深度学习的训练需要大量的数据,然而,在实际的生产生活中,可能由于数据采集困难,样本标注代价高等问题,使得训练样本的规模不大,因此,小样本问题就成为了机器学习领域中重要的研究方向之一。本。

小样本会对模型训练带来什么影响?

小样本训练模型时,容易产生过拟合现象。具体以分类问题为例:

对于classification model,有如下结论



训练样本N,h为Vc维数,详见cnblogs.com/HappyAngel/
如果现在训练模型的算法能使得training error很小,而model complexity penalty又很小,就能保证test error也很小的概率是 1-η。所以要使得模型的generalization比较好,要保证training error和model complexity penalty都能比较小。观察model complexity penalty项,可以看到,h越大,model complexity penalty就会越大。N越大,model complexity penalty则会越小。大致上讲,越复杂的模型有着越大的h(VC dimension),所以为了使得模型有着好的generalization,需要有较大的N来压低model complexity penalty。 这就是为什么深度学习的模型需要大量的数据来训练,否则模型的generalization会比较差,也就是过拟合。

目前关于小样本问题,有哪些研究进展?

对于小样本问题的研究主要有:
1. zero-shot learning(零样本学习),即要识别训练集中没有出现过的类别样本,虽然类别不存在,但是我们可以学习到一个映射X->Y。如果这个映射足够好的话,我们就可以处理没有看到的类了。 比如,我们在训练时没有看见过狮子的图像,但是我们可以用这个映射得到狮子的特征。一个好的狮子特征,可能就和猫,老虎等等比较接近,和汽车,飞机比较远离。


最早出现zero-shot的文章:
cs.cmu.edu/afs/cs/proje (zero-shot)


目前关于zero-shot已经出现很多优秀的成果,比如:


【1】Zero-Shot Object Detection
【2】Zero-Shot Recognition using Dual Visual-Semantic Mapping Paths
【3】Zero-shot Recognition via Semantic Embeddings and Knowledge Graphs
【4】Xian Y, Lampert C H, Schiele B, et al. Zero-shot learning-A comprehensive evaluation of the good, the bad and the ugly[J]. IEEE transactions on pattern analysis and machine intelligence, 2018
【4】等等

2. one-shot learning/few shot learning,即在训练集中,每一类都有一张或者几张样,主要方法可以关注迁移学习、meta-learning,metric-learning的相关研究进展。单例学习是迁移学习/Domain Adaptation的一个特例。模型在source domain训练好之后,迁移到target domain,target domain只用一个标记样本去训练模型的参数就可以了。

图8 平衡车单例识别
比如识别平衡车。训练时,source domain有大量标记样本,比如自行车、独行车、摩托车和轿车等类别,模型可以从source domain学到表示车的有效特征,比如有轮子、轮子尺寸大小、有踏板、方向盘或龙头等。测试时,在target domian,只需要一个或很少一些target domain的标记样本,比如只需要在模型可以准确识别车的条件下,给模型一张平衡车的标记图片就可以了。

更多内容推荐阅读:

【领域报告】小样本学习年度进展|VALSE2018,连接地址:blog.csdn.net/XWUkefr2t
《few shot learning调研》链接地址:zhuanlan.zhihu.com/p/56
最早出现one-shot的文章:vision.stanford.edu/doc (one-shot)

实际上,Zero/One-shot learning都属于transfer learning,要点在于先学到好的X->Y的关系,希望能应用到其他问题上。

3. 从数据增强的角度来看,也可以用来解决one-shot,zero-shot的相关问题

第一,利用流信息学习one-shot模型,常见的有半监督学习和transductive learning,探讨的是如何用无标签数据去做one-shot learning。
第二,在有预训练模型时,用这些预训练模型进行数据增强。
第三,从相近的类别借用数据,来增强训练数据集。
第四,合成新的有标签训练数据,用一些遥感里的方法,可以合成一些图像,或者3d物体。
第五,用GAN来学习合成模型,比如最近用GAN来做personal ID和人脸相关研究。
第六,属性引导的增强方法。具体大家可以在文章里进行详细了解。

几个小样本问题的数据集

1. 提供几个最常用的Zero-Shot Learning的数据集,均为GoogleNet提取的图片特征,引用相应数据时,请注意对应作者的引用说明。
AwA:pan.baidu.com/s/1nvPzsX
CUB:pan.baidu.com/s/1nv3KCY
aPaY:pan.baidu.com/s/1hseSzV
SUN:pan.baidu.com/s/1gfAc33
ImageNet2:pan.baidu.com/s/1pLfZYQ

2. one-shot learning 数据集
Omniglot
行人Reid数据集:Viper/CUHK01


欢迎加入深度学习、机器学习技术研讨群!

745224003

欢迎关注我们的微信公众号:baihuaML,白话机器学习

关注知乎“会写代码的好厨师”

发布于 2019-02-09

文章被以下专栏收录

    主要介绍机器学习中涉及到各种疑惑问题,希望能够介绍更多的干货,一方面带大家入门,另一方面让大家少踩坑