三四行代码打造元学习核心,PyTorch元学习库L2L现已开源

2019 年 9 月 14 日 机器之心

选自Github

项目作者:learnables

机器之心编译

元学习似乎一直比较「高级」,毕竟学习如何学习这个概念听起来就很难实现。在本文中,我们介绍了这两天新开源的元学习库 learn2learn,它是用 PyTorch 写的,只需要三四行代码就能构建元学习最为核心的部分。


learn2learn 是一个用于实现元学习的 Pytorch 库,我们只需要加几行高层 API,就能为一般的机器学习流程添加元学习能力。 例如在元学习 MNIST 案例中,我们可以用 PyTorch 构建整个流程,但只要加上三行 L2L 代码就能打造元学习模型。 这三行代码只干三件事: 获取元数据集、生成元学习任务、定义元学习模型。


  • 项目地址:https://github.com/learnables/learn2learn


元学习的目标是让智能体学习如何学习,也就是说,我们希望智能体能够在解决更多问题的过程中成为更好的学习器。 例如,下图展示的智能体正在学习如何跑步,尽管它只会更新一个参数。



L2L 有什么特性


L2L 是一个元学习库,可以为用户提供 3 个级别的功能。 在最高级别上,它有很多使用元学习算法在大量数据集/环境上训练的示例。 在中间级别上,它为若干流行的元学习算法提供了功能接口以及便于加载其他数据集的数据加载器。 在最低级别上,它为模块提供了可扩展功能。


L2L 的一些特性包括:


  • 模块化 API:使用这个库中的底层工具实现你自己的训练循环;

  • 提供多个元学习算法(如 MAML、FOMAML、MetaSGD、ProtoNets、DiCE);

  • 具有统一 API 的任务生成器,兼容 torchvision、torchtext、torchaudio 和 cherry;

  • 提供标准化的视觉(Omniglot、mini-ImageNet)、强化学习(Particles、Mujoco)甚至文本(新闻分类)元学习任务;

  • 100% 兼容 PyTorch——使用你自己的模块、数据集或库。


最后,整个 L2L 库都是由 PyTorch 写的,因此它的源代码并不难理解,我们可以通过项目的源码学习怎样从底层实现元学习算法。


L2L 实现 MAML 元学习算法的局部源代码,它的源码拥有大量的注释,可以帮助理解实现过程。


示例代码


下面我们来看看 learn2learn 到底该如何学习一个能实现 MNIST 分类任务的模型,它使用非常高层的应用,因此理解起来很容易。


如下代码所示,总体而言,整个过程可以分为导入数据、定义元学习任务、定义元学习模型与最优化方法、在元学习任务内不同的学习器适配不同的数据,最后就是标准的损失计算与模型更新了。


import learn2learn as l2l

mnist = torchvision.datasets.MNIST(root="/tmp/mnist", train=True)

mnist = l2l.data.MetaDataset(mnist)
task_generator = l2l.data.TaskGenerator(mnist,
                                        ways=3,
                                        classes=[014689],
                                        tasks=10)
model = Net()
maml = l2l.algorithms.MAML(model, lr=1e-3, first_order=False)
opt = optim.Adam(maml.parameters(), lr=4e-3)

for iteration in range(num_iterations):
    learner = maml.clone()  # Creates a clone of model
    adaptation_task = task_generator.sample(shots=1)

    # Fast adapt
    for step in range(adaptation_steps):
        error = compute_loss(adaptation_task)
        learner.adapt(error)

    # Compute evaluation loss
    evaluation_task = task_generator.sample(shots=1,
                                            task=adaptation_task.sampled_task)
    evaluation_error = compute_loss(evaluation_task)

    # Meta-update the model parameters
    opt.zero_grad()
    evaluation_error.backward()
    opt.step()


整个 API 非常高层,只需要很少的代码量就能完成模型。 但与此同时,L2L 库还提供了中层和底层方面的 API,它允许我们做更多定制化的修改。 更多的例子读者可以在 GitHub 中查阅,其示例模型分为强化学习、文本处理和视觉模型三方面:


如果读者也想要试试这个库,那么直接在命令行中运行 pip install learn2learn 就行了,剩下的再看看文档和教程,就可以快速学会怎样使用元学习。


  • 文档地址:http://learn2learn.net/docs/learn2learn/

  • 教程地址:http://learn2learn.net/tutorials/getting_started/




文为机器之心编译,转载请联系本公众号获得授权
✄------------------------------------------------
加入机器之心(全职记者 / 实习生):hr@jiqizhixin.com
投稿或寻求报道:content@jiqizhixin.com
广告 & 商务合作:bd@jiqizhixin.com
登录查看更多
1

相关内容

Meta Learning,元学习,也叫 Learning to Learn(学会学习)。是继Reinforcement Learning(增强学习)之后又一个重要的研究分支。

知识荟萃

精品入门和进阶教程、论文和代码整理等

更多

查看相关VIP内容、论文、资讯等
【IJCAI2020-华为诺亚】面向深度强化学习的策略迁移框架
专知会员服务
25+阅读 · 2020年5月25日
元学习(meta learning) 最新进展综述论文
专知会员服务
275+阅读 · 2020年5月8日
【Google-CMU】元伪标签的元学习,Meta Pseudo Labels
专知会员服务
31+阅读 · 2020年3月30日
专知会员服务
85+阅读 · 2020年1月20日
必读的10篇 CVPR 2019【生成对抗网络】相关论文和代码
专知会员服务
31+阅读 · 2020年1月10日
快速上手深度强化学习?学会TensorForce就够了
Meta-Learning 元学习:学会快速学习
专知
24+阅读 · 2018年12月8日
入门 | 从零开始,了解元学习
机器之心
17+阅读 · 2018年5月6日
OpenAI发布大规模元学习算法Reptile
AI前线
6+阅读 · 2018年3月9日
资源 | GitHub上的五大开源机器学习项目
机器之心
9+阅读 · 2017年11月9日
手把手教TensorFlow(附代码)
深度学习世界
15+阅读 · 2017年10月17日
Knowledge Flow: Improve Upon Your Teachers
Arxiv
5+阅读 · 2019年4月11日
Arxiv
7+阅读 · 2018年6月19日
Arxiv
8+阅读 · 2018年5月21日
VIP会员
相关VIP内容
【IJCAI2020-华为诺亚】面向深度强化学习的策略迁移框架
专知会员服务
25+阅读 · 2020年5月25日
元学习(meta learning) 最新进展综述论文
专知会员服务
275+阅读 · 2020年5月8日
【Google-CMU】元伪标签的元学习,Meta Pseudo Labels
专知会员服务
31+阅读 · 2020年3月30日
专知会员服务
85+阅读 · 2020年1月20日
必读的10篇 CVPR 2019【生成对抗网络】相关论文和代码
专知会员服务
31+阅读 · 2020年1月10日
相关资讯
快速上手深度强化学习?学会TensorForce就够了
Meta-Learning 元学习:学会快速学习
专知
24+阅读 · 2018年12月8日
入门 | 从零开始,了解元学习
机器之心
17+阅读 · 2018年5月6日
OpenAI发布大规模元学习算法Reptile
AI前线
6+阅读 · 2018年3月9日
资源 | GitHub上的五大开源机器学习项目
机器之心
9+阅读 · 2017年11月9日
手把手教TensorFlow(附代码)
深度学习世界
15+阅读 · 2017年10月17日
Top
微信扫码咨询专知VIP会员