原文地址:算法
https://blog.csdn.net/qq_29056645/article/details/88909728网络
------------------------------------------------------------------------------------------------框架
自深度学习发展起来以后, 智能化的各类设备也慢慢变多,可是对于智能化的程序来讲,须要数以万计甚至百万千万的数据行进训练,以近年来最为出名的AlphaGo为例,虽然下棋的是一台电脑,但其后台须要庞大的数据支持训练才能达到这样的效果。因此这也是深度学习的一个短板,训练数据须要太多,但有时一些训练任务并不能找到这么多的训练数据。这种状况下,若是训练数据较少时给深度学习器加以训练,会出现过拟合的现象,这是不利于应用的,因此对于此随之而来的即是小样本学习问题,即针对样本量较少的任务,须要有一个学习器可以成功应用少许的数据进行好的训练,达到学习器所需的功能。函数
其实小样本学习问题的产生在另外一方面也是由于人的缘由,对于人来讲,初识一个新的物品,你能够经过探索很快地了解并熟悉它,而这种学习能力,是目前机器所没有的。因此人们思考,若是机器也能拥有这种学习能力的话,面对样本量较少的问题时,即可以快速地学习,这即是元学习(meta learning),也能够称为元学习。
oop
提及小样本学习的发展,在2015年Science杂志封面刊登过一篇文章《Human-level concept learning through probabilistic program induction》,该文章提出了贝叶斯规划学习(BPL)框架,实现One-shot learning,数据集采用了世界各地字母表的手写字符(该文章这里就不具体介绍,有兴趣能够百度搜索一下)。这篇文章也是我接触小样本学习看的第一篇论文,第一次接触小样本学习的同窗能够仔细阅读一下。
性能
在此以后,人们发现经过元学习可以很好地实现小样本分类任务,所以愈来愈多的人将目光投在了元学习上。整体来讲,经过元学习的方法实现小样本分类大致上有三种:学习
每一类中都有较多的论文与一些较新的研究成果,下面将简单介绍一下。优化
所谓度量(metric),即经过某种方式来表达两个样本的相关性,好比欧几里得距离,能够认为在某一个投影空间中(嵌入空间,通常使用含参数的神经网络来完成嵌入过程),距离越近的样本越为类似,即认为能够将其分为同一类别。固然,度量方法有不少,可是近几年中运用较多的是余弦距离和欧几里得距离。在此推荐两篇论文,都是基于度量的方法实现小样本学习,我也会在后续的博客中对这些论文进行总结阐述。spa
2016-NIPS-《Matching Networks for One Shot Learning》
2017-NIPS-《Prototypical Networks for Few-shot Learning》.net
两篇论文方法差不太多,但思想挺好,同时后续的挺多小样本学习方面的研究及论文也是基于这两篇论文完成的。
固然,这种方法有好也有坏,好处即是经过度量能够很简单的用距离来表达类似性,将距离较近的样本归为一类。但与此同时,我的认为度量学习的一个关键点在于怎么将样本投影至一个空间,同时在这个空间中距离近的样本为同一类别。也许在挺多实验和一些数据集上确实实现了,可是针对不一样类型的样本,使用同一套投影方法是否可行呢?面对不一样类型的样本是否须要从新训练神经网络的参数呢?这一点也是目前须要解决的问题,即面对不一样的分类任务,同一小样本分类器依旧能够较好的使用。
其二简单地使用距离来表达类似性是否可行?在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