小样本学习与元学习--学习随笔1

小样本学习(Few-shot learning)

深度学习已经广泛应用于各个领域,解决各类问题,传统的深度学习需要大量的数据来训练出一个好的模型。然而,在我们生活中,有些问题要获取大量样本是不现实的,获取的成本也非常大,比如在医疗领域、安全领域等。那么我们是否能像人类一样,只需学习很少的样本,就能准确的识别出新的样本?这就是小样本学习问题(Few-shot learning)

解决方法1—数据增强

最常见的例子:对数据集预处理,将图片旋转 90 、180 、270 度,这样就可以使样本数量变为原来的 4 倍。

解决方法2—正则化

在训练的时候加入一个正则项,例如“Few-shot Classification on Graphs with Structural Regularized GCNs”中,作者在训练的时候给损失函数加了一个正则项。作者将 feature 到 embedding 的过程看成编码器 encoder,然后额外加了几层网络作为 decoder,将 embedding 重构为 feature ,然后重构误差作为正则项,准确率从 40% 提升了大约 10 个百分点。

解决方法3—元学习(Meta-learning)

定义:通过大量的数据,现在的AI系统能从0开始学习一个复杂的技能。我们希望AI系统能获得多种技能并能适应各种环境,但针对每种技能都从0开始训练是无法承受的。因此,我们希望它能够从之前的经验快速地学习新的技能,而不是把新的任务孤立地考虑。这个方法,我们称为元学习(learning to learn,或meta learning)
简单地说就是:先学习一个先验知识(prior),在这个先验知识的基础上,解决新的问题。
meta-learning 需要一些类来构建 meta-training task。由于 meta-testing 的类别要和 meta-training 完全不同,因此如果我们只有 MNIST 数据集,没法使用 meat-learning 来解决 MNIST 上的 10-way few-shot learning 问题,但是方法 2.1 可以。不过我们可以使用 meta-learning 解决 MNIST 上的 N-way (N < 6) 的 few-shot learning 问题。那么如果我们非要解决 MNIST 上的 10-way few-shot learning 问题怎么办呢,可以在另外一个数据集,例如 Omniglot ,上面进行 meta-training,然后学到的先验知识用来解决这个问题。

Meta-learning 中 task 的概念是和 meta-learning 的本质有关的。Meta-learning 其实还有一个名字叫做“学会学习” (Learn to learn),这来自于对人类智能的基本认知:我们人类学习一个东西的时候不是从头开始学的,都是基于之前学习的知识来进行学习的。但是我们的深度学习模型呢,学习新的东西(可以看成新的类,新的 task)需要从头开始学习( 当然需要大量的样本 ),即使你之前学过特别类似的东西。因此 Meta-learning 就像让深度学习学会学习,利用之前学过的知识在面对新的问题可以学习得又快又好

元学习的方法分为三类:
(参考文章《Learning to Compare: Relation Network for Few-Shot Learning》)

1、学习微调 (Learning to Fine-Tune)

MAML(《Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks》) 是这类方法的范例之一。MAML 的思想是学习一个 初始化参数 (initialization parameter),这个初始化参数在遇到新的问题时,只需要使用少量的样本 (few-shot learning) 进行几步梯度下降就可以取得很好地效果( 参见后续博客 )。另一个典型是《Optimization as a Model for Few-Shot Learning》,他不仅关注于初始化,还训练了一个基于 LSTM 的优化器 (optimizer) 来帮助微调。

2、基于 RNN 的记忆 (RNN Memory Based)

最直观的方法,使用基于 RNN 的技术记忆先前 task 中的表示等,这种表示将有助于学习新的 task。
参考论文:《Meta networks》和 《Meta-learning with memory-augmented neural networks.》

3、度量学习 (Metric Learning)

学习一个 embedding 函数,将输入空间(例如图片)映射到一个新的嵌入空间,在嵌入空间中有一个相似性度量来区分不同类。我们的先验知识就是这个 embedding 函数,在遇到新的 task 的时候,只将需要分类的样本点用这个 embedding 函数映射到嵌入空间里面,使用相似性度量比较进行分类。
参考论文:《Learning a Similarity Metric Discriminatively, with Application to Face Verification.》,《Siamese neural networks for one-shot image recognition》,《Siamese neural networks for one-shot image recognition》,《Matching networks for one shot learning》,《Prototypical Networks for Few-shot Learning》,《Learning to Compare: Relation Network for Few-Shot Learning》。

未完待续。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值