大数据文摘作品
编译:Zoe Zuo、丁慧、Aileen
本文来自OpenAI博客,介绍一种新的元学习算法Retile。
在OpenAI, 我们开发了一种简易的元学习算法,称为Reptile。它通过对任务进行重复采样,利用随机梯度下降法,并将初始参数更新为在该任务上学习的最终参数。
其性能可以和MAML(model-agnostic meta-learning,由伯克利AI研究所研发的一种应用广泛的元学习算法)相媲美,操作简便且计算效率更高。
MAML元学习算法:
http://bair.berkeley.edu/blog/2017/07/18/learning-to-learn/
元学习是学习如何学习的过程。此算法接受大量各种的任务进行训练,每项任务都是一个学习问题,然后产生一个快速的学习器,并且能够通过少量的样本进行泛化。
一个深入研究的元学习问题是小样本分类(few-shot classification),其中每项任务都是一个分类问题,学习器在每个类别下只能看到1到5个输入-输出样本(input-output examples),然后就要给新输入的样本进行分类。
下面是应用了Reptile算法的单样本分类(1-shot classification)的互动演示,大家可以尝试一下。
尝试单击“Edit All”按钮,绘制三个不同的形状或符号,然后在右侧的输入区中绘制其中一个,并查看Reptile如何对它进行分类。前三张图是标记样本,每图定义一个类别。最后一张图代表未知样本,Reptile要输出此图属于每个类别的概率。
Reptile的工作原理
像MAML一样,Reptile试图初始化神经网络的参数,以便通过新任务产生的少量数据来对网络进行微调。
但是,当MAML借助梯度下降算法的计算图来展开和区分时,Reptile只是以标准方法在每个任务中执行随机梯度下降(stochastic gradient descent, SGD)算法,并不展开计算图或者计算二阶导数。这使得Reptile比MAML需要更少的计算和内存。示例代码如下:
初始化Φ,初始参数向量
对于迭代1,2,3……执行
随机抽样任务T
在任务T上执行k>1步的SGD,输入参数Φ,输出参数w
更新:Φ←Φ+ϵ(w−Φ)
结束
返回Φ
最后一步中,我们可以将Φ−W作为梯度,并将其插入像这篇论文里(https://arxiv.org/abs/1412.6980)Adam这样更为先进的优化器中作为替代方案。
首