本文介绍一篇来自 https://www.analyticsvidhya.com/ 关于少样本学习的的博客。 原文地址
1. 少样本学习
1.1 为什么要有少样本学习?什么是少样本学习?
套用原博客中的原话,即:
Few-shot learning is the problem of making predictions based on a limited number of samples. The goal of few-shot learning is not to let the model recognize the images in the training set and then generalize to the test set. Instead, the goal is to learn.
简单说,就是很多场景样本数量很小,无法做传统的有监督学习 ,就需要少样本学习 。而少样本学习 是一种元学习(meta-learning) ,它的目标是去学习如何学习(learn to learn)。如何理解learn to learn ?请看下面的解释。
1.2 元学习和传统有监督学习的区别是什么?
理解元学习 ,关键要理解支持集(support set) 这一概念。support set 中每个类别的样本数量很小,无法像有监督学习 中的训练集(training set) 那样每个类别中样本数量足够大能够训练神经网络。
维基百科中对于元学习有这样一句非常精辟的总结: Meta learning can be defined as an awareness and understanding of the phenomenon of learning itself as opposed to subject knowledge.
原文博客里是这么说的: We do not train a big model using a big training set. Rather than training the model to recognize specific objects such as tigers and elephants in the training set, we train the model to know the similarity and differences between objects.
体会这两段话,元学习强调 “自己去学习,而非从大量的数据样本中直接获取知识”,它的意义是去学习不同类别之间的相似度和差异性。请看下面的例子以更加形象的比较两者的区别。
1.3 一个小例子
举一个关于元学习 简单的例子(原文博客中提到的),让一个小孩子(kid )去动物园,水中(water )躺着一个之前从未见过(unseen )的动物。给他几张卡片(card ),每张卡片上是动物的图片和名字,卡片上的动物也都是孩子没有见过(unseen )的。然后让他自己去学习,根据卡片与水中动物的相似性(similarity )去判断这个动物是什么。这就是元学习 。
而传统的有监督学习 可以这样认为(我的理解),让孩子每周去不同的动物园看动物,一周内在同一个动物园每天看。三个月后,将孩子领到一个陌生的动物园(园内所有的动物之前都见过),让孩子去说各个动物是什么。
1.4 再回来看少样本学习——从support set 到query
先总结几个很重要的术语:support set 、query 、k-way 、n-shot 在这个例子里:
- 卡片(
card )里的动物就是support set ,用于模型的训练 - 水(
water )里的动物就是query ,用于模型的测试 k-way 表示support set 里有k 个类别,即卡片(cards )里包含了几种动物n-shot 表示每个类别里有n 个样本,即卡片(cards )里展示同一种动物的卡片数量support set 的规格就被称为k-way and n-shot
在我们的例子中,孩子被每种动物给一张卡片,在这种情况下,这种 “learn to learn by himself” 的元学习就具象化为one-shot learning ,即n-shot 当n=1 时的少样本学习。 少样本学习的基本思想是通过训练得到一个function ,以能够预测不同类别之间的相似性(similarity )。 以上面两张图片的例子来说,query 与support set 中四个类别的相似度得分/概率我们粗略量化为0.6(猫)、0.4(猴子)、0.2(狮子)、0.9(狗),于是最后预测的结果就是狗。
2. 少样本学习预测的准确率
少样本学习预测的准确率依赖于 support set 中的way 与shot 的数目,显然这两者越大,最后预测的准确率越大。
3. 少样本学习的应用
少样本学习作为一个专门的机器学习分支,其应用非常广泛:
- 计算机视觉:文字识别、图像识别、图像分类
- 自然语言处理方面:机器翻译、文本分类、情感分析
- 机器人学:用少量训练集训练机器人
4. 少样本学习的数据集
原文博客中推荐了两个数据集供学习少样本学习:
关于对于两个数据集的分析和运行结果,我会之后在专门写另一篇博客,本篇暂不列出。
5. 我对少样本学习的一些思考
回顾我们从小到大的学习成长经历,我们的学习能力不是一成不变的;我们生命的初期,对这个世界的规则所知甚少,这时就需要像有监督学习一样接触大量的样本,才能提炼出其中的知识。在对世界的基本规则有了逐渐深刻的理解了之后,我们的学习能力有了极大的提高,那么在应对一些问题的时候,我们会基于我们脑海中最基本的规则做出判断,尽管这类问题我们之前并没有遇到过,这时实际上就是少样本学习的一种模式。 少样本学习似乎很高效,但是没有足够的学习能力、足够的背景知识与面临的问题相匹配,我们也无法从“少样本”中学习,去举一反三。就像我们进入一个新的领域,纵使在之前的领域我们已经有了很强的、泛化的学习能力,但是由于缺乏足够的新领域的基础知识,我们仍然到处碰壁。这时候有监督学习再次成为了我们学习模式的主要战斗力。 我们当前对于深度学习、机器学习背后的原理仍然所知甚少,但是这些最基本、最经典的机器学习,我们都可以从我们自己的身上找到它们的影子。大道至简,很多创新的、经典的idea实际上都简单又完美。在学习这些idea的时候也帮助我们认识自我、激发我们新的思考,这也是除了学习到idea本身最关键的一点,也是我们不受时空的限制,与前辈、与先驱者交流的一次机会、一种方式。共勉!
本篇博客到这里就结束了。才疏学浅,恐有疏漏和错误。欢迎大家批评指正和交流。本文基于原文博客加入了自己的理解,本文顶部贴出了原文地址,供大家学习。谢谢!
|