前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Meta Learning 4: 基于优化的方法

Meta Learning 4: 基于优化的方法

作者头像
朴素人工智能
发布2021-05-28 17:40:57
1.2K0
发布2021-05-28 17:40:57
举报

相比较机器学习模型需要大量的标注数据进行训练,人类学习新知识和新技能的过程要更快更高效。

Meta Learning元学习的目标是模型在多种多样的任务上进行训练之后,只需要少量的训练样本就可以学会一个新的任务。让机器学习模型更加智能。

Meta Learning一般有两类解决方案:

  1. 基于度量的方法 Metric-Based 基于度量的方法主要针对分类任务,将分类问题转换为匹配问题,从而实现少样本分类的目的。 首先,将图片/文本原始数据 编码 为浮点数值的向量表示; 接着,将同一类别的样本向量 归纳 为类向量; 最后,求 待分类样本向量 和 类向量 的 相似度,取相似度最高的类别,即为分类结果。 在系列文章的前三篇中,对这一类解决方案有了详细的介绍。
  2. 基于优化的方法 Optimization-Based 基于优化的方法在模型的参数优化这一步做文章,找到可以让模型在少样本的情况下优化得更快更好的策略。 本篇将介绍其中最有代表性的是MAML算法,它不受任务类型或模型结构的限制,可以应用在任何采用梯度下降法训练的模型上。不管是回归、分类、强化学习任务,还是CNN、RNN、BERT,都可以用MAML来减少深度学习模型对标注数据数量的依赖。

Model-Agnostic Meta Learning (MAML)

MAML[1]元学习算法全名Model-Agnostic Meta Learning,强调了它不受模型结构限制的特点,只要是采用梯度下降法训练的深度学习模型即可。

Meta Learning的目标是训练一个模型,对于每一个新任务只需要少量的训练数据和参数更新就可以很好的迁移。 如果用传统的训练方法,一条数据作为一个样本,一条数据对模型进行一次参数更新的话,没有办法实现上述目标。因为新任务训练数据的数量相比用来做基础训练的任务的训练数据的数量要小得多,所以新任务的训练数据对模型参数的影响非常小。怎么样可以克服不同任务训练样本不均衡的问题呢? 还记得在系列文章第一篇中介绍的Meta Learning的训练思路,把一个完整的少样本任务作为一个样本,每个样本都是一个新任务,实现了不同任务训练样本的均衡。 MAML算法通过最小化大量少样本任务的loss,使得模型面对新的少样本任务时能够得到最好的结果。

MAML算法的具体步骤

以少样本图像分类任务为例,目标是训练一个图像分类

f_\theta

模型,可以快速迁移到任意图像类别。

4-shot 2-class 图像分类

  1. 初始化模型
f

的参数

\theta
  1. 采样大量的少样本图像分类任务
T

,作为训练样本 meta-learning samples。 如上图所示,第一个样本是猫和鸟的图像分类任务,第二个样本是花和自行车的图像分类任务,以此类推,采样大量的不同类别的图像分类任务作为样本进行训练。 2.1 对每一个少样本任务

T_i

,有8个训练数据 train samples,和若干个测试数据 val samples 2.2 模型

f_\theta

在8个训练数据上进行训练,经过若干次参数更新,得到

\hat{\theta}

2.3 模型

f_\hat{\theta}

在测试数据上进行测试,得到loss,对原始参数

\theta

进行更新。回到2.1

  1. 另外采样一些少样本图像分类任务
T

,作为测试样本 meta-testing samples 3.1 每个测试样本,同样分成8个训练数据 train samples,和若干个测试数据 val samples 3.2 模型

f_\theta

在8个训练数据上进行训练,得到

\hat{\theta}

3.3 模型的元学习效果由模型

f_\hat{\theta}

在测试数据上的测试结果体现

二次梯度

MAML算法的难点在于,用模型

f_\hat{\theta}

在测试数据上计算得到的loss对原始参数

\theta

进行更新,这涉及到二次梯度的计算。 深度学习框架Pytorch和Tensorflow现在都可以支持二次梯度的计算。

First-Order MAML (FOMAML)

为了降低MAML算法的计算复杂度,MAML作者提出了简化版。 直接舍去二阶导的项,用

L_\hat{\theta}

\hat{\theta}

的梯度代替

L_\hat{\theta}

\theta

的梯度。这样可以在保持效果几乎一样的基础上,提速33%。

Reptile

Reptile[2]是另一个一阶的基于优化的元学习算法,和MAML非常相似,同样的适用于所有深度学习模型。

Reptile算法非常简单,效果却出乎意料的好。

  1. 初始化模型
f

的参数

\theta
  1. 进行若干次迭代 2.1 采样一定数量的少样本任务
T

2.1.1 对每一个少样本任务

T_i

,不分训练数据和测试数据 2.1.2 模型

f_\theta

T_i

所有训练数据上进行训练,经过若干次参数更新,得到

\theta_i

。回到2.1.1 2.2 取当前迭代所有任务得到的

(\theta_i-\theta)

的平均值对原始参数

\theta

进行更新。回到2.1

Reptile

总结

Meta Learning元学习的系列文章到这里就全部结束了,感谢大家的支持。

参考资料

[1]

Model-agnostic meta-learning for fast adaptation of deep networks: http://proceedings.mlr.press/v70/finn17a/finn17a.pdf

[2]

On First-Order Meta-Learning Algorithms: https://arxiv.org/pdf/1803.02999.pdf

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-05-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 朴素人工智能 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Model-Agnostic Meta Learning (MAML)
    • MAML算法的具体步骤
      • First-Order MAML (FOMAML)
        • Reptile
        • 总结
          • 参考资料
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档