【深度学习】One Shot Learning

来源:互联网 发布:深入浅出mysql豆瓣 编辑:程序博客网 时间:2024/05/21 10:50

Vinyals, Oriol, et al. “Matching Networks for One Shot Learning.” arXiv preprint arXiv:1606.04080 (2016).

简介

问题

DeepMind团队的这篇文章解决小样本学习问题:对于训练过程中从未见过的新类,只借助每类少数几个标定样本,不改变已经训练好的模型,能够对测试样本进行分类。

举例:使用大规模人脸数据库训练好的人脸模型,应用于小规模人脸识别。每个使用者只提供较少几张注册图像。

亮点

Li Feifei老师的高徒,在ImageNet中为#科学献身#的人肉参照者,现供职于OpenAI的Andrej Karpathy对该论文给出了“可不咋地!”的崇高评价,并撰写了读文笔记。本文较大程度参考了该笔记。

本文创新之处有二:
- 模型设计中,借鉴了当下流行的注意力LSTM,考虑了整个参考集合的贡献;
- 训练过程中,尽量模拟测试流程,使用小样本构造minibatch。

模型

问题建模

给出的参考集中有k个样本:(xi,yi)i=1:k。注意k往往很小,类别的数量也不多。
对于测试样本x^,预测其标定y^

注意力模型

本文使用参考集标定的加权和作为预测:

y^=i=1ka(x^,xi)yi

充当权重的注意力函数a是softmax形式,用其他所有参考集样本归一化:

a(x^,xi)=exp[C(f(x^),g(xi))]kj=1exp[C(f(x^),g(xj))]

C是余弦距离,用于比较测试样本x^和参考样本xi的相似度。

f,g分别是测试样本和参考样本的特征提取函数(论文里称为embedding),使用深度网络实现,以下逐一说明。

参考样本特征g

首先使用一个简单的网络(例如VGG或者Inception)提取单个样本的原始特征g(xi)

每个样本xi维护四个状态变量

. 前向 后向 隐状态 hi hi 记忆 ci ci

前向变量前一个参考样本的隐状态和上下文经过LSTM确定,当前样本的原始特征作为输入:

hi,ci=LSTM(g(xi),hi1,ci1)

后向变量后一个参考样本的隐状态h和记忆c经过LSTM确定,当前样本的原始特征作为输入:

hi,ci=LSTM(g(xi),hi+1,ci+1)

参考集特征由其隐状态h和原始特征共同决定:

g(xi)=hi+hi+g(xi)i=1,2...k

实际上,这里将原本无序的参考样本集进行了排序1。对于排序后的参考集使用LSTM,使得每个样本的特征g(xi)不但和自身有关g(xi),还间接和其他参考样本相关。

测试样本特征f

同样使用简单的网络提取单个样本的原始特征f(x)

接下来对于每一个测试样本, 通过l=1,2...L次迭代,使用一个注意力LSTM模型(attLSTM)计算测试样本的特征2。

每一步维护四个状态变量

隐变量 读数 记忆 hl,h^l rl cl

在第l步,首先用LSTM模型计算原始隐变量h和记忆c

h^l,cl=LSTM(f(x^),[hl1,rl1],cl1)

加上原始特征,获得本步骤隐变量:

hl=h^l+f(x^)

本步骤读数是参考集特征的加权和3:

rl=i=1ka(hl1,g(xi))g(xi)

和之前类似,注意力函数也是softmax形式,用其他所有参考集样本归一化:

a(hl1,g(xi))=exp[hTl1g(xi)]kj=1exp[hTl1g(xj)]

换言之,除了以测试样本作为输入,在每一个步骤中,还要根据LSTM状态h,决定把注意力放在哪一些参考集样本上。

最后一步的读数即为测试样本特征:

f(x^)=rL

训练

训练策略是本文的闪光之处,再一次验证了机器学习实战中这条颠扑不破的真理:怎么用,怎么训。

训练过程中,迭代一次的流程如下4:
- 选择少数几个类别(例如5类),在每个类别中选择少量样本(例如每类5个);
- 将选出的集合划分:参考集,测试集;
- 利用本次迭代的参考集,计算测试集的误差;
- 计算梯度,更新参数

注意,在完成训练之后,所有训练中用过的类别,都不再出现在后续真正测试中。

总结

本文提供了一个端到端(end-to-end)、可以直接优化的模型。这个模型本身即包含了参考集样本的信息。换句话说,“如何利用参考集”这件事,也在优化的内容中。

本文的书写和实验部分尚有不尽如意之处,但理念富有创新性,值得持续关注。


  1. 原文没有提及如何将无序的参考集样本排序。Karpathy的笔记中猜测可能随机,并建议参考同作者文章:Order Matters: Sequence to Sequence for Sets. ↩
  2. 为与参考样本部分区分,此处符号和论文中有所不同。 ↩
  3. 此处原文公式(5)有误 ↩
  4. 此处原文说明不详,待研究。 ↩
1 0