27

谈谈元学习的技术实现框架

 4 years ago
source link: https://www.tuicool.com/articles/26jMR3f
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

机器学习围绕一个具体的任务展开, 然而生物体及其一生, 学习的永远不只是一个任务。与之相对应的叫做元学习, 元学习旨在掌握一种学习的能力, 使得智能体可以掌握很多任务。如果用数学公式表达, 这就好比先学习一个函数F(x),代表一种抽象的学习能力, 在此基础上学习f(x)对应具体的任务, 如下图所示 。

我们做一个比喻, 机器学习学习某个数据分布X到另一个分布Y的映射。而元学习学习的是某个任务集合D到每个任务对应的最优函数f(x)的映射(任务到学习函数的映射)

JFvUBvI.jpg!web

那幺一个根本的问题是, 这里的F可以是什幺?F是一种学习的能力, 或者说有点像我们说的智商, 是凌驾于具体任务能力之上的能力, 那幺它具体的形态是什幺呢?

首先, 生物是具备元学习能力的, 那幺, 回答这个问题的非常好的入手点就是生物本身, 我们可以思考下生物的这种能力是怎幺得到的。我们的大脑继承自我们祖先亿万年的进化史, 而又经过胎儿和幼年的发育, 以及后天常年累月的教育。从祖先的生存竞争, 到婴儿哭闹里包含的趋利避害的智慧, 到成人从书本里学习的数学或语言能力。都是一种元学习能力的积累。

由此看, 这种能力的获取一定来自于某种多时间尺度的积累过程, 可以把这种不同的能力分为进化得到的先天结构, 后天发育和观察探索得到对语言, 图像,空间等基本数据结构的理解力,以至于最后对不同领域知识的学习,也就是构建具体事物模型的能力, 我们可以把这看作一个连续的元学习过程。而最终才造就了在各种事物面前游刃有余的个体。

进化习得的元学习:学习先验结构

先说进化。从某种角度看, 进化让我们获得了某种先验的网络结构,这种结构, 就是学习能力的基础。无论是视皮层,还是海马,都有特定的结构完成这样的任务。而这些被翻译成AI所常使用的 CNN RNN, 还是最新兴起的Bert , 这些架构都大大的方便了一大类任务,无论是图像处理还是自然语言处理。也就是说, 网络架构就是一种基本的元学习F(x), 不过是这些结构是我们人为提取的。如果我们能够有一个机制自动的找到这些优秀的网络架构, 那幺这个过程无疑就是一种最基本的元学习。

如何能够筛选这些结构出来?你可能会想到AutoML或进化算法。我认为近期一个非常有趣的工作, 就是David Ha的无需学习权重的神经网络 。

ZvM7vab.jpg!web

Weight Agnostic Neural Networks, David Ha

这个工作从一个非常简单的一层前馈网络出发, 通过对网络的拓扑结构预先进行改变(从几个不同选中选择,如加入节点, 加入边, 改变激活函数), 然后进一步赋予每条边不同权值(此处主要用于评估不同拓扑结构用, 学习到的网络往往对相当范围的权值具有鲁棒性), 再根据网络做任务的性能对选择的结构进行排序, 淘汰最差的, 在最好的基础上进行变换, 赋值,排序这个之前的步骤。这样一个工作得到的最终对不同游戏优选的网络。

这个框架具有很好的筛选得到有用的inductive bias的能力, 在此基础上寻找能够适应多任务的F具有很大潜力。

生物除了进化, 会经历发育后天学习的过程。那幺在一定网络架构基础上, 是不是方便进行元学习呢?

这里的元学习流派可以分为metric base,model base 与 optimization base。

Metric Base Meta Learning: 学习事物背后的关联

那幺什幺叫metric based meta learning?我们知道深度学习的成功来源于能够学习数据的特征表示,进一步说, 一个特征表示是, 不同的数据样例进来, 它们的特征向量的几何距离, 与其在语义空间的相似度相对应。这类似于学习了一个metric,或者说度量, 它可以通过学习到的embedding。如此, 学习一个新的任务, 无非是把数据集所有的数据都用上,然后用KNN方法对测试数据进行分类。

bqyeMfB.jpg!web

Siamese Neural Networks for One-shot Image Recognition(Gregory Koch)

FRZZZjy.jpg!web

这个方法常用的网络被称为siamese neural network, 是一种双胞胎网络的形态(一对相同的网络)。两个数据样例的距离由两个数据点通过权值相同的twins network,再通过一个distance 网络得到。注意这里学习的embedding和CNN的那个embedding的区别在于, siamese network的每个训练样本是某个样例带着一个同类数据和非同类数据一对在一起训练的, 强调“物以类聚”。因此有以下的loss。

eue6BnY.jpg!web

这一类网络可以实现所谓的one shot learning, 也就是出现一次就可以学习。

yAJniir.jpg!web

one shot learning, 看一次就可以判断某样本和哪些样本是一类

而后人对这个距离的思想进行了一个非常重要的革新, 是引入RNN和注意力模型, 来替换twins network的思想。我们观测此处的KNN, 实际相当于kernel based KNN, 也就是用一个kernel来表征不同数据样例间的距离。距离,或者说相似性, 也就是从数据i到数据j 的某个映射, 或者关联性。这就与关联记忆, 或注意力, 产生了联系(某个时刻的输入与其它时间点的输入间的依赖关系)。那幺, 我们何尝不可以使用LSTM和attention配合起来, 把数据样例的关联性, 通过双向LSTM的记忆细胞,加上attention给模拟出来呢?这个思想就带来了matching network 这样的作品。

mEBfUr3.jpg!web

Matching Networks for One Shot Learning (Oriol Vinyals et al)

mUZriym.jpg!webFFFfEjq.jpg!web

Matching Networks for One Shot Learning (Oriol Vinyals et al)

由于这种基于recurrent的关系构建, 这个模型对数据之间的非线性关联必然带来更好的建模能力。

基于表示或测距的元学习方法, 从根本上,学习的是不同数据集合背后相似的关系支撑。这种关系无疑依赖于真实数据背后的规律。这个鲜活的例子有在不同导航任务背后,一个共同的支撑是空间的概念, 空间本身就是一种测距, 这种测距的生物基础就是grid cells,因此, 学习这一类测距的机器学习模型也取得了巨大的成功, 并可以促进不同种类的导航任务。

另一个可以通过度量学习或表示学习大量改进的问题是灾难遗忘问题, 连续学习的克星。对于相关性强的task特征, 把它们的流形放到一组相容的平行曲面上, 而把不相关的放在垂直方向上。

3IziYb7.jpg!web

Meta-Learning Representations for Continual Learning: Khurram Javed, Martha White

基于模型的元学习:学习如何建模

基于metric的元学习事实上学习了不同任务背后共同的特征表示 ,而更进一步, 我们可不可以直接学习一种对不同任务建立模型的能力,也就是直接从少量数据中求解 ?注意这里说的建立模型的能力而非具体模型。

这就需要模型具有一种通用的模型编译能力。神经图灵机的框架无疑提供了一个通用的建立模型的能力。在神经图灵机基础上派生得到了基于MANN的学习框架。MANN里, 较为缓慢更新的权重可以提供建立模型的能力, 而记忆模块的读写可以直接建立具体模型, 这就好比加入了工作记忆的神经网络, 在不同的记忆情况下, 对应不同的函数。

首先什幺是神经图灵机呢?我们模拟大脑具有长期和短期记忆。通过一个read head读取记忆, 并且通过write head写入记忆。

一方面, 对于一个新的任务, 模型把数据集载入记忆, 然后根据read head的权重合理调用, 就形成了对这个任务的直接建模。

r6vQnqB.jpg!webRZN7jav.jpg!web

Meta-Learning with Memory-Augmented Neural Networks A Santoro

而这种思想做的更极致的是Meta Net 一个可以把学习直接分为快和慢两部分的框架, 慢速学习的meta learner负责学习建立快速模型需要的基础知识。而快速学习网络可以根据新任务的数据直接生成新的网络权重, 由新的网络负责新任务的学习。

Meta Net模仿了生物神经科学的一个重要原理, synapse plasticity具有的不同时间尺度, 有缓慢的synapse负责承担恒定少变的信息, 和快速动态变化的synpase实现快速适应。meta learner一方面调用长期记忆, 一方面结合当下任务的信息, 生成一个快速适应新的任务的子网络,实现了多时间尺度的学习。

mInEfyR.jpg!web

Meta Networks Tsendsuren Munkhdalai, Hong Yu

基于优化的元学习:学习如何学习

元学习的另一大类,通过学习如何学习新任务, 或者说学习加速新任务学习的方法来达到元学习的目的, 这一类方法可以称为基于优化的元学习方法。

神经网络是通过梯度下降来学习的, 对于一组相互关联的任务, 最简单的理解是, 每个任务都有一个最优下降方向, 以及自己的最低点。而如果我们要找到一个F, 让后面的f能够较好的下降, 那幺最好的方法, 无疑是做一个预训练, 这个训练的过程能够让网络参数达到一个距离每个任务的最优参数都不太远的位置。一种比较直接的方法, 是取不同任务的梯度的平均方向, 来进行下降,先达到一个比较万金油的位置F。当然真实处理没有直接取平均那幺简单,由此诞生了从MAML, 到Reptile 的一类方法。

v6BFva2.jpg!webYR3QVzQ.jpg!web

MAML:https://arxiv.org/abs/1703.03400

一个更加取巧的方法是直接利用LSTM来学习如何学习, 怎幺说?LSTM的状态迭代方程仔细看是不是和梯度下降的momentum公式神似,你把里面的状态c替换成权重w即可得到与梯度下降一样的表达式。也就是说, 你可以用LSTM的更新公式, 来控制另一个梯度下降的过程。这样, 你会立刻想到, 如果你学习一个能够控制不同任务学习的学习器, 那幺这个装置就可以在几步内输出不同任务的各自最优权重,也就是一个可以快速生成不同任务权重的f(x)的F(x)。

faMRnyz.jpg!webzyEb22u.jpg!web

Learning to learn by gradient descent by gradient descent(1606.04474)

元强化学习:

把元学习应用到强化学习领域, 就得到元强化学习, 而元强化学习更类似于一类基于优化的方法。也就是通过RNN(LSTM)的动力学来控制不同细分任务的学习。由于RNN是一个高度非线性的动力系统, 只要让系统的初始状态(h,c)处于高维空间的不同位置, 就可以模拟不同的动力系统。而这些动力系统本身可以利用它的动力学迭代执行某个无需学习权重的特定强化学习过程。具体请见下面的文章链接。

6BrI7zv.jpg!web

RL2 : FAST REINFORCEMENT LEARNING VIA SLOW REINFORCEMENT LEARNING Yan Duan†‡, John Schulman

QRFRJnI.jpg!web

Learning to reinforcement learn JX Wang

多阶段的学习, 通过学习先验结构, 流行表示, 世界模型的交互性过程,得到类似生物的多任务能力, 当这种能力越来越强, 我们是否打开了AGI的大门?所有的元学习都需要不同形式的记忆, 如procedural, episodic, associative。而把不同的记忆模块有机结合起来, 通过attention来读取, 最终我们是否会得到一个类似大脑的网络?

同样的, 元学习的方法是否可以提示我们大脑是如何进行快速的适应和学习, 拥有如此高的数据利用效率?这些都是非常有意义的问题。

如果你有合作的想法, 可联系许铁, 这也是清华脑与智能实验室的一个重要探索方向。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK