原文地址:
https://blog.csdn.net/qq_29056645/article/details/88909728
------------------------------------------------------------------------------------------------
自深度学习发展起来之后, 智能化的各种设备也慢慢变多,但是对于智能化的程序来说,需要数以万计甚至百万千万的数据行进训练,以近年来最为出名的AlphaGo为例,虽然下棋的是一台电脑,但其后台需要庞大的数据支持训练才能达到这样的效果。所以这也是深度学习的一个短板,训练数据需要太多,但有时一些训练任务并不能找到这么多的训练数据。这种情况下,如果训练数据较少时给深度学习器加以训练,会出现过拟合的现象,这是不利于应用的,所以对于此随之而来的便是小样本学习问题,即针对样本量较少的任务,需要有一个学习器能够成功应用少量的数据进行好的训练,达到学习器所需的功能。
其实小样本学习问题的产生在另一方面也是因为人的原因,对于人来说,初识一个新的物品,你可以通过探索很快地了解并熟悉它,而这种学习能力,是目前机器所没有的。所以人们思考,如果机器也能拥有这种学习能力的话,面对样本量较少的问题时,便可以快速地学习,这便是元学习(meta learning),也可以称为元学习。
说起小样本学习的发展,在2015年Science杂志封面刊登过一篇文章《Human-level concept learning through probabilistic program induction》,该文章提出了贝叶斯规划学习(BPL)框架,实现One-shot learning,数据集采用了世界各地字母表的手写字符(该文章这里就不具体介绍,有兴趣可以百度搜索一下)。这篇文章也是我接触小样本学习看的第一篇论文,第一次接触小样本学习的同学可以仔细阅读一下。
在此之后,人们发现通过元学习能够很好地实现小样本分类任务,因此越来越多的人将目光投在了元学习上。总体来说,通过元学习的方法实现小样本分类大体上有三种:
- 基于度量的元学习
- 基于模型的元学习
- 基于优化的元学习
每一类中都有较多的论文与一些较新的研究成果,下面将简单介绍一下。
- 基于度量的元学习
所谓度量(metric),即通过某种方式来表达两个样本的相关性,比如欧几里得距离,可以认为在某一个投影空间中(嵌入空间,一般使用含参数的神经网络来完成嵌入过程),距离越近的样本越为相似,即认为可以将其分为同一类别。当然,度量方法有很多,但是近几年中运用较多的是余弦距离和欧几里得距离。在此推荐两篇论文,都是基于度量的方法实现小样本学习,我也会在后续的博客中对这些论文进行总结阐述。
2016-NIPS-《Matching Networks for One Shot Learning》
2017-NIPS-《Prototypical Networks for Few-shot Learning》
两篇论文方法差不太多,但思想挺好,同时后续的挺多小样本学习方面的研究及论文也是基于这两篇论文完成的。
当然,这种方法有好也有坏,好处便是通过度量可以很简单的用距离来表达相似性,将距离较近的样本归为一类。但与此同时,个人认为度量学习的一个关键点在于怎么将样本投影至一个空间,同时在这个空间中距离近的样本为同一类别。也许在挺多实验和一些数据集上确实实现了,但是针对不同类型的样本,使用同一套投影方法是否可行呢?面对不同类型的样本是否需要重新训练神经网络的参数呢?这一点也是目前需要解决的问题,即面对不同的分类任务,同一小样本分类器依旧可以较好的使用。
其二简单地使用距离来表达相似性是否可行?在Omniglot数据集上(手写字符),使用距离来表达相似性可行的原因是因为通过将图片的特征矩阵投影到一空间后,得到的矩阵是该手写字符的形状(即可以在矩阵中看出图形形状),这种情况下,就类似于KNN实现手写数字识别,使用距离来说明相似性是好使的。但对于一般的图片来说,得到的特征矩阵和投影后得到的矩阵,这些数字我们看不出任何意义(虽说计算机领域里都说神经网络里训练的数字我们是不能理解的,这些数字就是有用但我们不知道是什么意义),那么这种情况下使用距离来度量相似性是否可行呢?
- 基于模型的元学习
近年来,小样本学习分类发展迅速,面对众多的分类任务,都可以通过训练一个模型来达到任务要求。其中元学习的方法较多,为了最大的适用性,元学习的机制应该是任务的通用性,即面对不同的任务,不需要构建不同的模型,用同样的一套学习算法即可解决多种不同的任务。定义一个模型的可学习参数θ,面对不同的任务,可以通过改变参数θ的值来解决相应的任务。而参数θ的值可以通过元学习器去学习,在面对不同任务的时候,根据损失函数通过梯度下降的方法不断地更新θ值,使这个模型不断向能解决这个任务的模型靠近,当θ值最终收敛时,我们认为元学习器学习到了一个较好的参数θ,让模型自适应地解决相应任务。这个算法是十分高效地,因为它没有为学习器引入其他的参数,并且训练学习器的策略使用的是已知的优化过程(如梯度下降等)而不是从头开始构建一个。
在此推荐两篇有关论文:
2017-《Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks》
2018 - arXiv - 《Task-Agnostic Meta-Learning for Few-shotLearning》
后一篇是在前一篇的基础上进行的相关扩展。
- 基于优化的元学习
在样本量较少的任务中,通常的一些学习器会因为样本较少出现过拟合的现象,同时在训练过程中,为了达到一个较好的效果,学习器通常会训练迭代百万甚至千万次才能够收敛。这些问题不仅影响了学习器的性能,也影响了效率。所以在本项目中,我们考虑一种优化方案,能够在只有少量样本的情况下又能高效地学习,使模型能够通过几个例子很好的学习。我们在元学习器中采用了LSTM网络,使用任务中少量的已标记样本,通过元学习器来优化更新学习器的初始化参数,让学习器在面对相应任务的时候,能够仅用少量的样本,同时较快收敛,达到快速学习解决任务的目的。
在此推荐一篇论文
2017-ICLR-《Optimization as a model for few-shot learning》
虽说小样本学习和元学习的目的是快速学习,且近几年来所有研究采用的训练样本量都是少量的,但是个人认为,要实现机器能够自主学习,还是需要大样本做支撑的。就如人一样,其实刚出生的小孩也算是大量样本训练之后的产物,因为人的基因就好比模型的超参数,是经历的很长时间的演化得来的,所以,机器应该也是这样,需要不断学习,不断输入样本集,不断训练,才能达到最后具有学习能力的目的。
---------------------
作者:MSnoopy
来源:CSDN
原文:https://blog.csdn.net/Snoopy_S/article/details/88257054