简介

参数模型 vs. 非参数模型

  • 参数模型

    training examples need to be slowly learnt by the model into its parameters.

  • 非参数模型

    allow novel examples to be rapidly assimilated, whilst not suffering from catastrophic forgetting.

创新点

at the modeling level

模型设计中, 借鉴了当下流行的注意力LSTM, 考虑了整个参考集合的贡献.

We propose Matching Nets (MN), a neural network which uses recent advances in attention and memory that enable rapid learning.

at the training procedure

训练过程中,尽量模拟测试流程,使用小样本构造minibatch

our training procedure is based on a simple machine learning principle: test and train conditions must match.

模型结构

给定一个参考集, $ S = \left \{ (x_{i}, y_{i}) \right \}_{i=1}^{k} $, 定义一个映射$ S \rightarrow C_{S}(x)=p(y|x) $, 其中$ P $由网络参数确定.

在预测阶段, 给定未知的样本$ {x}' $和参考集$ {S}' $, 预测的标签为 $ argmax_{y} P(y|{x}', {S}') $

最简单的形式y为: $ y = \sum_{i=1}^{k}a(x, x_{i})y_{i} $, 其中$ a $是attention机制.

然而与通常的attention memory机制不同, 这里的本质上是非参数的. 当参考集变大时, memory也变大. 这种定义的分类器很灵活, 可以很容易适应新的参考集.

attention kernel

匹配函数, 相当于前述函数 $ a(x, x_{i}) $, 即如何考察测试样本特征 $ x $ 和参考集样本特征 $ x_{i} $ 之间的匹配程度.

可以有以下选择:

  • cosine : $$ a(x, x_{i}) = c(x, x_{i}) $$

  • Softmax : $ a(x, x_{i}) = exp[c(x, x_{i})] / \sum_{j}exp[c(x, x_{j})] $

  • cosine(FCE) : $ a(x, x_{i}) = c(f(x), g(x_{i})) $

  • Softmax(FCE) : $ a(x, x_{i}) = exp[c(f(x), g(x_{i}))] / \sum_{j}exp[c(f(x), g(x_{j}))] $

其中c表示余弦距离, FCE表示Full Conditional Embedding.

Full Context Embeddings

在通常的image或者是sentence的表示的基础上(如CNN的表示, embedding的表示等), 可以进一步加上 FCE, 使得到的 representation 依赖于support set.

$ g(x_{i}) $ 应该依赖于参考集 $ S $, 另外 $ S $ 也应该影响 $ y(x) $.

  • $ g(x_{i}, S) $

    使用 bilstm, 在 $ S $ 的上下文中(将其视为一个序列)编码 $ x_{i} $
\vec{h}_{i}, \vec{c}_{i} = LSTM ({g_{i}}', \vec{h}_{i-1}, \vec{c}_{i-1})

\bar{h}_{i}, \bar{c}_{i} = LSTM ({g_{i}}', \bar{h}_{i+1}, \bar{c}_{i+1})

g(x_{i}, S) = \vec{h}_{i} + \bar{h}_{i} + {g}'(x_{i})

其中$ {g}'(x) $是一个神经网络, 比如图像任务中的CNN, 和自然语言任务中的word embedding.

  • $ f(x, S) $
f(x, S) = attLSTM({f}'(x), g(S), K)

其中$ {f}'(x) $是一个神经网络, 比如图像任务中的CNN, 和自然语言任务中的word embedding.

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

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

训练策略

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

训练流程

训练过程中,迭代一次的流程如下:

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

    这样的一个流程文中称为episode。

在测试过程中,同样遵守此流程:

  • 选择少数几个类别,在每个类别中选择少量样本;
  • 将选出的集合划分:参考集,测试集;
  • 利用本次迭代的参考集,计算测试集的误差;

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

参考资料

论文 Matching Networks for One Shot Learning

平价数据 One Shot Learning

博客 Matching Networks for One Shot Learning

Tensorflow实现: 这里的实现似乎没有对f, g分开处理, 对FCE的处理方式也和文章说的不太一样.

Markdown 尝试的更多相关文章

  1. Markdown语法及SublimeText下使用技巧

    Markdown语法及SublimeText下使用技巧 0.缘起 最近因为一直在学习Sublime Text,所以也就顺便试用了一下ST对Markdown的支持.正好CSDN正在大力宣传新上线的Mar ...

  2. markdown_TestOne

    这个是我写的一个markdown尝试 1.2 dafsdfeasdfaefasdfase afsdfasdfefasdfeadfasdfe

  3. 尝试一下markdown

    尝试一下markdown 简单介绍以下几个宏: __VA_ARGS__是一个可变参数的宏,这个可变参数的宏是新的C99规范中新增的,目前似乎只有gcc支持(VC6.0的编译器不支持).宏前面加上##的 ...

  4. 尝试 Markdown 写测试用例

    我的原帖https://testerhome.com/topics/9412 大家都知道我们社区的帖子提倡用Markdown格式编写,正好项目进入稳定期,尝试用Markdown写下测试用例.有几个目的 ...

  5. 尝试一下用MARKDOWN嵌入代码

    public void test(){ // }

  6. 第二章作业-第3题(markdown格式)-万世想

    第3题题目是: 完成小组的"四则运算"项目的需求文档(使用Markdown写文档),尝试同组成员在各自PC上修改同一文档后,如何使用Git命令完成GitHub上的文档的更新,而不产 ...

  7. Markdown 新手指南

    Markdown 新手指南   「简书」作为一款「写作软件」在诞生之初就支持了 Markdown,Markdown 是一种「电子邮件」风格的「标记语言」,我们强烈推荐所有写作者学习和掌握该语言.为什么 ...

  8. 推荐一款Mac上好用的Markdown编辑器

    [TOC] 推荐一款Mac上好用的Markdown编辑器 正文 我算是一位Evernote的重度用户吧.之前也尝试过为知笔记,有道云笔记,微软的onenote,最后还是觉的Evernote.因为我喜欢 ...

  9. 【三】用Markdown写blog的常用操作

    本系列有五篇:分别是 [一]Ubuntu14.04+Jekyll+Github Pages搭建静态博客:主要是安装方面 [二]jekyll 的使用 :主要是jekyll的配置 [三]Markdown+ ...

随机推荐

  1. Shell 编程中,在循环里使用ssh免密远程执行命令的注意事项

    前提:给自己机器配置ssh免密登录#!/bin/bashcat << 'EOD' > list1234EOD while read linedo if ssh myname@127. ...

  2. MySQL创建数据库时指定编码utf8mb4和添加用户

    CREATE DATABASE `wordpress` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE DATABASE `wor ...

  3. C# 拖拽事件

    实现一个textBox像另一个TextBox拖拽数据. 一个控件想要被拖入数据的前提是AllowDrop属性为true. 所以,首先需要将被拖入数据的textBox的AllowDrop属性设置为Tru ...

  4. Maven项目强制更新,解决Failed to read artifact descriptor for xxx.jar问题

    导入的maven项目pom.xml现红叉 分析原因:在maven本地仓库中找不到相应的jar包. 解决方案:让maven强制更新依赖. 项目右击菜单,Maven -> Update Projec ...

  5. LR常用函数

    web_set_max_html_param_len()--常用函数 设置可检索并保存为参数的任何HTML字符串的最大长度. intweb_set_max_html_param_len(const c ...

  6. 同时安装 Python 2 与Python 3 的方法及pip模块的下载安装

    Python虽然功能强大,上手容易,但版本问题却是个烦人的问题. Python 2.x 和 Python 3.x 版本之间存在很大的不兼容. 同时安装Python2.x和Python3.x 1. 在P ...

  7. Excel VBA 连接各种数据库(二) VBA连接Oracle数据库

    本文主要内容: Oracle环境配置 ODBC驱动设置.第三方驱动下载 VBA连接Oracle连接方法 Oracle10g官方免账号下载地址 系统环境: Windows 7 64bit Excel 2 ...

  8. Apache Flink 分布式运行时环境

    Tasks and Operator Chains(任务及操作链) 在分布式环境下,Flink将操作的子任务链在一起组成一个任务,每一个任务在一个线程中执行.将操作链在一起是一个不错的优化:它减少了线 ...

  9. HTML中<script>的defer属性与async属性

    defer 属性会在 DOMLoaded 事件之前完成异步加载,加载不会阻塞 DOM 解析,并且 script 的顺序会按照 DOM 中的顺序加载. async 属性就是异步加载,没有什么顺序的保证.

  10. FPGA_VHDL 学习课堂笔记001

    FPGA_VHDL 学习课堂笔记   记录说明:本文档主要记录大学期间,老师FPGA授课课堂笔记. 代码语言:VHDL 编程软件:MAX+plus II FPGA硬件:FLE-843   03月05日 ...