Optimization as a model for few-shot learning. (优化一个模型,用于少样本学习)---论文阅读笔记

正在更新中。。。。。。
参考博客:https://blog.csdn.net/weixin_37589575/article/details/96995985

1. 摘要

尽管深度神经网络已经在大数据领域取得了巨大的成功,但是他们通常在少样本学习任务上表现很糟糕。少样本任务需要分类器必须在仅看到每个类很少的样本后快速推广泛化。一般认为,在高容量的分类器中的基于梯度的优化算法需要 在大量样本上进行大量的迭代步骤 以取得良好的表现。本文提出了一个基于 LSTM 的 元学习者(meta-learner) 用以学习一个用于训练另一个在少样本情况下的 学习者(learner) 神经网络分类器的优化算法。我们模型的参数化允许我们的模型学习恰当的、专门用于只能进行一定量更新的参数更新方法。同时我们的模型为 学习者(learner) 网络,也就是分类器网络学习了一个通用的初始化,这个初始化可以帮助 学习者(learner) 网络在训练的时候快速收敛。

为了更好理解,我把 学习者(learner) 改为 任务学习者(task learner) , 元学习者(meta-learner) 不变。文中有的地方的 dataset 理解为 task 会更加符合 meta-learning 的哲学。

(1)新的任务(新的类);(2)训练样本很少;(3)学习一个优化过程和一个易于微调的初始化参数;
这三个特征满足 few-shot learning,meta-learning 的基本特征,而且可以看成属于 meta-learning 中的学习微调 (Learning to Fine-Tune)。

2. 介绍

深度学习在各种具有大量数据的任务上取得了巨大的成功,这些成就依赖于这些深度高容量模型需要大量的有标签数据以及大量的迭代更新的优化。但是这种优化在少样本情况下会崩塌。本文主要关注这个方面,我们没有很大的数据集,我们只有一少组有标记的数据,其中每个类别的样本只有很少的几个有标签。本文的动机不仅在于人类智能和深度学习之间的差异:人类甚至是小孩可以在看过一个给定目标的样本后做到快速的归纳泛化,而深度学习模型则需要大量的数据。并且如果模型具有这种能力将会有很多有用的用途:首先,可以缓解数据收集的麻烦;其次,有很多情况下,类别很多,但是每个类的样本很少,如果模型具有少样本学习的能力,那么可以很好地学习这种情况下的数据。

基于梯度下降的优化算法在少样本问题上失效的原因:

基于梯度下降的算法:momentum、adagrad、adadelta 以及 adam 等都不是专门设计以用于少样本少量参数更新迭代的。
对于分离的多个任务,网络参数通常会从一个随机的初始化参数开始训练,这就严重影响了在少量参数更新迭代之后的表现。
迁移学习可以通过微调一个从另一个任务中预训练出来的模型来缓解这个问题,但是如果预训练的任务与目标任务之间的差异太大,那么预训练的收益很大大降低。因此我们需要一种系统的方法来训练一个 有益的共同的初始化 可以作为一个在少样本学习条件下好的训练起点。这不仅可以提供和迁移学习一样的好处,而且可以保证这个初始化是一个用于微调的最佳起点。

元学习建议将学习问题制定为两层:

  • 任务学习者(task-learner,或者文中的learner):在每个独立的任务之中快速获取知识。
  • 元学习者(meta-learner):从大量的任务中缓慢的学习和提取信息,这些信息用于指导任务学习者学习。

本文旨在解决基于梯度优化的模型在少样本情况下问题,文章把少样本学习问题放在了元学习的框架下。

  • 文章提出了一个基于 LSTM 的元学习者,它被训练来用于优化任务学习者,任务学习者是一个分类器神经网络。
  • 元学习 LSTM 学习目标任务(meta-testing task)中的短期知识以及大量任务(meta-training tasks)中的长期知识。

使用一个直接捕获的优化算法在少样本设置下的归纳泛化能力的目标,元学习者模型被训练以在每个任务上任务学习者分类器可以快速收敛到一个好的解决方案。另外,元学习者模型还可以为任务学习者学习一个任务共同的初始化,这个初始化中具有所有任务共享的基础知识。

3. 任务描述

文中有很多地方的 dataset 我觉得理解为 task 会好很多。
文中的 D \mathscr{D}D 指的其实就是一个任务,Dmeta−train Dmeta−train,D meta−validation 和 Dmeta−test
分别是用于训练,验证和测试的任务。D其实就是每个任务中的数据,Dtrain和 Dtest 就是我们常见的 support set 和 query set。

3.1 问题设置

文中的问题还是最典型的 few-shot learning 问题的设置,就以 few-shot classification 问题为例。
Optimization as a model for few-shot learning. (优化一个模型,用于少样本学习)---论文阅读笔记
这里为了方便读者和自己理解,对原论文的这一部分做了修改,用了最 meta-leaning 的解释,其实本质是一样的。

在 few-shot learning 中有一个术语叫做 N NN-way K KK-shot 问题,简单的说就是我们需要分类的样本属于 N NN 个类中一种,但是我们每个类训练集中的样本只有 K KK 个,即一共只有 N∗K N * KN∗K 个样本的类别是已知的(其实这就是 Support Set)。

在 Meta-learning 中之前学习的 task 我们称为 meta-training task,我们遇到的新的 task(包含新的类)称为 meta-testing task。因为每一个 task 都有自己的训练集和测试集,因此为了不引起混淆,我们把 task 内部的训练集和测试集一般称为 Support set 和 Query set。文中有一个特别经典的示意图,每一行就是一个 task,虚线之前的就是support set,虚线之后的就是 query set。图中问题是一个 5-way 1-shot 分类问题,每个任务有 5 个类,每个类只有一个样本,图中 query set 中有 2 个样本,这个数据是没有要求的,通常会设置为 15-20(5-way 1-shot 任务)以保证测试结果的有效性。注意:meta-test 任务中的类别和 meta-train 中的类别完全不同,也就是全新的类。

4. 模型

4.1 模型描述

对一个单一任务来说,我们的任务学习者的参数 θ \thetaθ 是在 support set 上面训练的。一种常规的梯度下降优化方法形式是:
Optimization as a model for few-shot learning. (优化一个模型,用于少样本学习)---论文阅读笔记