小样本论文笔记5:Model Based - [6] One-shot learning with memory-augmented neural networks. 学习笔记
0. 前言
相关资料:
论文基本信息
领域:小样本学习
作者单位:Google DeepMind
发表期刊和时间:ICML2016
一句话总结
提出了 Memory-Augmented Neural Network(MANN)结构,达到了,,,效果。
1. 要解决什么问题 使用带有记忆功能的神经网络Memory-Augmented Neural Network(MANN)元学习算法解决小样本学习问题。一个尺度可变的网络需要符合两点需求:
1、信息必须以特征方式存储在内存中,且具有稳定和易以元素形式访问的性质;
2、参数数量不应该与内存大小绑定
而Neurak Turing Machines(NTM)和内存网络符合这种要求。因此,作者采用MANN进行长期和短期记忆的元学习任务。
2. 用了什么方法
2.1 模型结构
如图(a)所示,整个训练过程分成多个Episode,每个Episode中包含若干个样本 和对应的标签 ,将所有的样本组合成一个序列, 表示在 时刻输入的样本, 表示与之对应的标记,但要注意的是输入时 和 并不是一一对应的,而是错位对应,即 为tt时刻的输入,这样做的目的是让网络有目的的记住先前输入的信息,因为只有保留有效的信息在下次再遇到同类样本才能计算得到对应的损失。在每个Episode之间样本序列都是被打乱的,这是为了避免网络在训练过程中慢慢记住了每个样本对应的位置,这不是我们希望的。可以看到对于每个单元(图中灰色的矩形块)他的输入信息既有前一个单元输出的信息,又有当前输入的信息,而输出一方面要预测当前输入样本的类别,又要将信息传递给下个时刻的单元,这与LSTM或RNN很相似。
在此基础上作者增加了一个外部记忆模块(如图(b)中的蓝色方框),他用来储存在当前Eposide中所有"看过"的样本的特征信息。怎样去理解他呢?比如网络第一次看到一张狗的照片,他并不能识别出它是什么,但是他把一些关键的特征信息记录下来了,而且在下个时刻网络得知了它的类别标签是狗,此时网络将特征信息与对应的标签紧紧地联系起来(Bind),当网络下次看到狗的照片时,他用此时的特征信息与记忆模块中储存的特征信息进行匹配(Retrieve,真实的实现过程并不是匹配,而是通过回归的方式获取信息,此处只是方便大家理解),这样就很容易知道这是一只狗了。这一过程其实与人类的学习模式非常接近了,但作者是如何利用神经网络实现这一过程的呢?作者引入了神经图灵机(NTM),为了方便下面的讲解此处需要先介绍一下NTM。
2.2 NTM&MANN
2.3 Least Recently Used Access 最少最近使用原则
写的过程就是描述如何合理有效的将当前提取的特征信息存储到记忆模块中。作者采用了最少最近使用方法(Least Recently Used Access,LRUA),具体而言就是倾向于将特征信息存储到使用次数较少的记忆矩阵位置,为了保护最近写入的信息;或者写入最近刚刚读取过的记忆矩阵位置,因为相邻两个样本之间可能存在一些相关信息。写入的方法也是为记忆模块中的每一行计算一个写入权重 ,然后将特征向量 乘以对应权重,在加上先前该位置保存的信息 得到当前时刻的记忆矩阵 。而写入权重 计算过程如下:
表示上一时刻的读取权重,该值由读的过程计算得到,权重越大表示上一时刻刚刚读取过这一位置储存的信息; 表示sigmoid函数, 表示一个门参数,用于控制两个权重的比例。 表示上一时刻最少使用权重,其计算过程如下:
其中, 表示向量 中第 个最小的值, 表示内存读取次数, 表示使用权重,其计算过程如下
包含三个部分,上个时刻的使用权重 , 是衰减系数,读取权重 和写入权重 ,当 小于 时表示位置 是使用次数最少的位置之一,那么在下次写入时,使用该位置的概率就更高。
根据写入权重更新记忆矩阵:
因此,内存可以写入零内存槽或先前使用的槽;如果是后者,那么最少使用的内存就会被删除。
3. 效果如何
3.1 数据集
数据集有两种:
用于分类任务和Omniglot;
从固定参数的高斯过程采样函数,用于回归;
对Omniglot数据集进行了旋转和变换等数据增强操作,利用旋转新增了一些类别;最终1200类用于训练,423类用于测试。并且对图片缩放到20*20.
3.2 Omniglot 分类
在训练10万个Episode(包括5个随机选取的类别和5个随机选取的标签???类别和标签对应吗?),对模型用一系列的测试episode进行测试。在该过程中,没有进行更多的训练,并且模型从未见过Omniglot测试集中的类别。模型表现出了高分类精度:在样本第二次被输入模型时,就获得了在每个episode上82.8%的准确率,第五次出现时,精度94.9%,第10次出现时则表现出98.1%的精度(所以,在测试过程中记忆矩阵也是会改变的?所以才能记住测试集中样本的特征,从而在下次“看见”同类样本时才能“认出来”吗?)
与人类表现相比,模型效果要优于人类对新样本的识别能力。具体对人类的测试过程如下。参与者的任务细节:
1、对于一张图片,他们必须从1到5选择一个合适的数字标签。
2、然后,那张图片再次出现,参与者需要根据图片的类别标签做一个不计时的预测。
3、然后,图片消失,受试者被给予关于图片标签正确性与否的反馈。
4、正确的标签会被展示无论预测结果准确度高低,目的是让受试者进一步确认正确的预测内容。
5、在一个短期的2s延时之后,一个新的图片会出现,然后重复这个过程。
并且,有趣的是,即使是MANN第一次碰到新样本,它的分类效果也好于“随机瞎猜”。因为,它会根据“记忆”排斥一些确定的错误选项。这个过程也跟人类参与者的思考过程类似。
表2是分别使用5类和15类分类时,MANN与其他结构对比的分类效果。KNN的效果其实还不错。无参,并且对记忆空间无限制。但MANN使用LRUA效果还是有效的,并且随着次数的增多,精度逐步上升。
3.3 回归-拟合从未见过的函数
- x值固定,是数据样本,y值是函数值;(a)是MANN经过20个样本之后对x的预测值;(b)是GP产生的函数值。
4. 还存在什么问题&有什么可以借鉴