Markdown 尝试
简介
参数模型 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
博客 Matching Networks for One Shot Learning
Tensorflow实现: 这里的实现似乎没有对f, g分开处理, 对FCE的处理方式也和文章说的不太一样.
Markdown 尝试的更多相关文章
- Markdown语法及SublimeText下使用技巧
Markdown语法及SublimeText下使用技巧 0.缘起 最近因为一直在学习Sublime Text,所以也就顺便试用了一下ST对Markdown的支持.正好CSDN正在大力宣传新上线的Mar ...
- markdown_TestOne
这个是我写的一个markdown尝试 1.2 dafsdfeasdfaefasdfase afsdfasdfefasdfeadfasdfe
- 尝试一下markdown
尝试一下markdown 简单介绍以下几个宏: __VA_ARGS__是一个可变参数的宏,这个可变参数的宏是新的C99规范中新增的,目前似乎只有gcc支持(VC6.0的编译器不支持).宏前面加上##的 ...
- 尝试 Markdown 写测试用例
我的原帖https://testerhome.com/topics/9412 大家都知道我们社区的帖子提倡用Markdown格式编写,正好项目进入稳定期,尝试用Markdown写下测试用例.有几个目的 ...
- 尝试一下用MARKDOWN嵌入代码
public void test(){ // }
- 第二章作业-第3题(markdown格式)-万世想
第3题题目是: 完成小组的"四则运算"项目的需求文档(使用Markdown写文档),尝试同组成员在各自PC上修改同一文档后,如何使用Git命令完成GitHub上的文档的更新,而不产 ...
- Markdown 新手指南
Markdown 新手指南 「简书」作为一款「写作软件」在诞生之初就支持了 Markdown,Markdown 是一种「电子邮件」风格的「标记语言」,我们强烈推荐所有写作者学习和掌握该语言.为什么 ...
- 推荐一款Mac上好用的Markdown编辑器
[TOC] 推荐一款Mac上好用的Markdown编辑器 正文 我算是一位Evernote的重度用户吧.之前也尝试过为知笔记,有道云笔记,微软的onenote,最后还是觉的Evernote.因为我喜欢 ...
- 【三】用Markdown写blog的常用操作
本系列有五篇:分别是 [一]Ubuntu14.04+Jekyll+Github Pages搭建静态博客:主要是安装方面 [二]jekyll 的使用 :主要是jekyll的配置 [三]Markdown+ ...
随机推荐
- 菜鸟教程之学习Shell script笔记(中)
菜鸟教程Shell script学习笔记(中) 以下内容是学习菜鸟教程之shell教程,所整理的笔记 菜鸟教程之shell教程:http://www.runoob.com/linux/linux-sh ...
- python大法好——mysql防注入
MySQL 及 SQL 注入 如果您通过网页获取用户输入的数据并将其插入一个MySQL数据库,那么就有可能发生SQL注入安全的问题. 本章节将为大家介绍如何防止SQL注入,并通过脚本来过滤SQL中注入 ...
- Linux上安装jdk,mysql
1.准备工作 一台纯净的Linux系统需要先安装一些依赖才能安装jdk等 rpm: 本地添加安装程序:rpm -ivh 程序名 本地查看程序: rpm -qa 本地卸载程序: rpm -e --nod ...
- 深度学习原理与框架- tf.nn.atrous_conv2d(空洞卷积) 问题:空洞卷积增加了卷积核的维度,为什么不直接使用7*7呢
空洞卷积, 从图中可以看出,对于一个3*3的卷积,可以通过使用增加卷积的空洞的个数,来获得较大的感受眼, 从第一幅图中可以看出3*3的卷积,可以通过补零的方式,变成7*7的感受眼,这里补零的个数为1, ...
- VUE 引入阿里图标库
本身项目是VUE, Element-UI项目, 所以内置Element-UI图标库 地址如下, https://element.eleme.cn/#/zh-CN/component/icon 使用时: ...
- springboot + schedule
参考文章:https://blog.csdn.net/sinianliushui/article/details/78841713 参考文章: https://blog.csdn.net/hao703 ...
- Java源码分析:关于 HashMap 1.8 的重大更新(转载)
http://blog.csdn.net/carson_ho/article/details/79373134 前言 HashMap 在 Java 和 Android 开发中非常常见 而HashMap ...
- LevelDB源码分析-Version
Version VersionSet类 VersionSet管理整个LevelDB的当前状态: class VersionSet { public: // ... // Apply *edit to ...
- 二叉搜索树的第K大节点
题目描述 给定一颗二叉搜索树,请找出其中的第k大的结点. 分析 对二叉搜索树进行逆向中序遍历(先右再左),则遍历序列是降序排序的,因此中序遍历一颗二叉搜索树,可以很容易的得到它的第k大的节点.使用一个 ...
- task 异步 进程与线程的区别
用Wait方法(会以同步的方式来执行),不用Wait则会以异步的方式来执行 要在主线程中等待后台线程执行完毕,可以使用Wait方法(会以同步的方式来执行).不用Wait则会以异步的方式来执行. Tas ...