目录
论文信息:
Finn C, Abbeel P, Levine S. Model-agnostic meta-learning for fast adaptation of deep networks[C]//Proceedings of the 34th International Conference on Machine Learning-Volume 70. JMLR. org, 2017: 1126-1135.
元学习的目标是在各种学习任务上训练一个模型,这样它就可以使用少量的训练样本来解决新的学习任务。
该方法在两种few-shot图像分类基准(Omniglot和 MiniImagenet)上取得了较好的性能,在few-shot回归上取得了较好的效果,并利用神经网络策略加速了策略梯度强化学习的微调。
显式训练与隐式训练
参考显函数与隐函数的概念:
- 隐函数:能确定y与x之间关系的方程,F(x,y)=0。x与y混杂在一起。有些隐函数可显化为显函数。
- 显函数:用y=f(x)表示的函数。x与y明显区分。
- 函数是方程,方程不一定是函数。因为函数需要实现一个数域到另一个数域的映射,而方程只要是含有未知数的等式即可。
这样模型参数的显式训练与隐式训练就可以理解为因果区分与因果混杂的情况。
- 隐式训练:没有明确的表达式来对目标参数进行更新。
- 显式训练:存在明确的表达式来更新目标参数。
参数方法与非参数方法
- 参数方法(parametric method):根据先验知识假定模型服从某种分布,然后利用训练集估计出模型参数。这种方法中模型的参数固定,不随数据点的变化而变化。
- 非参数方法(parametric method):基于记忆训练集,在预测新样本值时每次都会重新训练数据,得到新的参数值。参数的数目随数据点的变化而变化。
Hessian Matrix(海森矩阵)
海塞矩阵(Hessian Matrix),又译作海森矩阵,是一个多元函数的
二阶偏导数
构成的方阵。处理一元函数极值问题,如\(f(x)=x^2\) ,我们会先求一阶导数,即 \(f^{\prime}(x)=2x\) ,然后根据
费马定理
——极值点处的一阶导数一定等于 0。但这仅是一个必要条件,而非充分条件。如 \(f(x)=x^3\),显然只检查一阶导数是不足以下定论的。所以进行二次求导,得出以下规律:
- 如果一阶导数\(f^{\prime}(x)=0\) 且二阶导数\(f^{\prime \prime}(x_0)<0\) ,则\(f(x)\) 在此点处取得局部极大值;
- 如果一阶导数\(f^{\prime}(x)=0\) 且二阶导数\(f^{\prime \prime}(x_0)>0\) ,则\(f(x)\) 在此点处取得局部极小值;
- 如果一阶导数\(f^{\prime}(x)=0\) 且二阶导数\(f^{\prime \prime}(x_0)=0\) ,则无法确定
处理多元函数极值问题,则需要首先对每个变量求偏导,令其为零,定位极值点的可能位置,然后利用二阶导数判断是极大值还是极小值。\(n\) 元函数有 \(n^2\) 个二阶导数,因此构成海森矩阵:
\[ \mathbf{H}=\begin{bmatrix} \frac{\partial^2f}{\partial x_1^2} & \frac{\partial^2f}{\partial x_1\partial x_2} & \cdots &\frac{\partial^2f}{\partial x_1\partial x_n} \ \frac{\partial^2f}{\partial x_2\partial x_1} & \frac{\partial^2f}{\partial x_2^2} & \cdots &\frac{\partial^2f}{\partial x_2\partial x_n} \\ \vdots & \vdots & \ddots & \vdots \ \frac{\partial^2f}{\partial x_n\partial x_1}&\frac{\partial^2f}{\partial x_n\partial x_2}&\cdots &\frac{\partial^2f}{\partial x_n^2} \end{bmatrix} \]
- 海森矩阵的极值判断阶段如下:
- 如果是正定矩阵,则临界点处是一个局部极小值
- 如果是负定矩阵,则临界点处是一个局部极大值
- 如果是不定矩阵,则临界点处不是极值
元学习问题引入
元学习过程实际上是一个创造一个高级代理
的过程,这个代理在处理新任务的新数据时,能将先验知识整合进来并且能避免过拟合,即在不同任务之间具备泛化能力。
高级代理可以理解为创造模型的模型,或者是一组模型参数,它能够根据不同的任务生成不同的模型参数,这套模型参数能够在新任务给定的新数据上快速的学习,适应任务的需要。
为了得到具有快速适应能力的模型,元学习训练一般以Few-Shot Learning(少样本学习)
的形式进行。
Few-Shot,可以分为1~k shot,即在训练过程中提供给模型1~k个样本数据,让模型进行学习。
注意与
Small Sample Learning(SSL,小样本学习)
进行区分。后者的范围比前者更加广泛,具体参见Small Sample Learning in Big Data Era
通过少量的样本数据构建成一个任务,然后让元学习模型在许多依此法创建的任务上进行训练学习,这样,经过训练的元学习模型就能凭借少量的数据和几次的训练快速适应新的任务了。
实际上,元学习模型的训练过程是以一整个一整个的任务作为”训练数据样本“的。
元学习问题的公式化表达
概念定义
定义一个模型,用\(f\)表示。模型\(f\)能实现观察值\(x\)到输出值\(a\)的映射。
定义单个任务\(T\):
\[
\mathcal{T= \left\{ L(\mathrm{x_1,a_1,\dots,x_H,a_H}),q(\mathrm{x_1}),q(\mathrm{x_{t+1}|x_t,a_t}),\mathrm{H}\right\}}
\]
期望模型适应的任务的分布\(p(\mathcal{T})\)。
学习过程
元训练
元测试
本文提出的MAML算法的关键思想:训练模型的初始化参数,使模型能在来自新任务的少量数据上对参数执行数次(1~多次)的梯度更新后能得到最佳的表现。
从特征学习的角度理解——MAML算法试图建立一种模型的内部表示,这种内部表示广泛适用于许多任务。这样在处理新的任务时,只需对模型参数进行简单的微调就能产生较好的结果。
从动态系统的角度理解——MAML的学习过程就是要让新任务的损失函数对于参数的敏感度最大化。当具有较高的敏感度时,参数的微小的局部变化就可以导致任务损失的巨大提升。
动态系统:若系统在t0时刻的响应y(t0),不仅与t0时刻作用于系统的激励有关,而且与区间(-∞,t0)内作用于系统的激励有关,这样的系统称为动态系统。
本文的主要贡献包括以下几个方面:
MAML算法的实现直觉(Intuition)是模型的某些内部表示更容易在不同的任务之间转换。比如存在某种内部表示能够适用于任务分布\(\mathcal{p(T)}\)中的所有任务而不是某一个具体的任务。由于最终模型会在新任务上使用基于梯度下降的学习规则进行微调,所以可以以一种显式的方式
去学习一个具备这种规则的模型。
这种待学习的规则可以理解为一组对任务变化敏感的模型参数,当参数沿着任务的损失梯度方向变化时,可以使得任务损失得到较大的改善。
原理图如下:
- \(\theta\) 是已经优化过的模型参数表示。
- 当 \(\theta\) 沿着新任务损失梯度方向变化时,会使得任务损失大幅改善,从而得到对于新任务的最佳模型参数 \(\theta^{\star}\)
算法描述:
模型由函数 \(f_{\theta}\) 表示,该函数由参数 \(\theta\) 决定。
整个算法分为两个循环:
- 两者共享模型参数 \(\theta\) 。
- 两者的梯度更新的学习率分别由超参数 \(\alpha\) 和 \(\beta\) 表示
SGD
梯度更新。注意
- 拥有“最佳参数”的模型在处理新任务时,由于具备了先验知识,所以只需进行微调就能产生较好的效果。
- 外循环又称之为
元优化(meta-optimization)
。- 为了适应不同的任务,内循环中的模型参数会演化成 \(\theta^{\prime}\)。而外循环中模型参数需要等到内循环中的所有任务的模型参数都优化后再进行更新。
- 由于存在一个嵌套关系,外层的梯度更新依赖内层的梯度,因此就会出现二阶导数(梯度的梯度)的计算,需要使用到
海森向量积(Hessian-Vector Product)
。- 在论文中,作者提出了一种近似算法,利用一阶梯度近似代替二阶梯度,形成FOMAML(First-Order MAML)算法,具体公式推导过程,见MAML讲解-李弘毅。
算法扩展:
监督学习(Supervised Learning):算法中的公式(2)和公式(3)分别指代下面的两个损失函数。
分类(Classification)任务的损失函数采用交叉熵(cross entropy):
\[
\mathcal{L_{T_i}(f_\phi)}=\sum_{x^{(j)},y^{(j)}\sim \mathcal{T_i}}y^{(j)}\log f_{\phi}(x^{(j)})+(1-y^{(j)})\log(1-f_{\phi}(x^{(j)}))
\]
回归(Regression)任务的损失函数采用均方差(mean-squared error):
\[
\mathcal{L_{T_i}(f_\phi)}=\sum_{x^{(j)},y^{(j)}\sim \mathcal{T_i}}\begin{Vmatrix} f_{\phi}(x^{(j)})-y^{(j)}\end{Vmatrix}_2^2
\]
强化学习(Reinforcement Learning):算法中的公式(4)指代下面的损失函数。
强化学习损失函数
- 强化学习过程基于马尔可夫决策过程(Markov Decision Porcess)。
- 具体细节还未深入了解,待补充……
\[ \mathcal{L_{T_i}(f_\phi)}=-\mathbb{E}_\mathcal{x_t,a_t\sim f_\phi,q_{T_i}}[\sum_{t=1}^H R_i(x_t,a_t)] \]
回归(正弦曲线)
比较MAML和预训练模型的学习曲线可以得出:
分类
通过将MAML模型以及简化后的FOMAML模型与用于Few-Shot Learning 分类的主流模型在Omiglot和MiniImagenet数据集上比较,可以发现:
MAML无视数据集差异、数据点多少以及网络结构差异,都有优异的表现。
FOMAML模型的表现与MAML的表现非常接近,但是两者的计算消耗却不同,FOMAML的计算复杂度要明显低于MAML,这一点也是值得进一步研究的问题。
对此,作者推测在大多数情况下,损失函数的二阶导数非常接近零,因而对模型表现没有产生太大的影响。
在On First-Order Meta-Learning Algorithms一文中,作者用泰勒公式,对导数进行了展开分析,揭露了深层次的原因。
强化学习
原文:https://www.cnblogs.com/veagau/p/11768919.html