One-shot Learning

来源:互联网 发布:java项目打包jar工具 编辑:程序博客网 时间:2024/06/07 08:30

背景

one-shot learning以及zero shot learning都属于迁移学习领域,主要研究的是网络少样本精准分类问题,单样本学习能力!很明显,机器学习系统很希望拥有这种快速从少量样本中去学习的能力,因为收集和标记数据是一个耗时费力的工作。而且,我认为这是通往通用人工智能的漫漫长路中很重要的一步。主要的研究就是单样本多类别问题,一个样本多个label,也就是弱监督!

Baseline:近邻

最简单的分类方式是使用k-近邻,KNN方法,但是因为每个类别只有一个样本,所以我们需要用1近邻。这很简单,只需要计算测试样本与训练集中每个样本的欧式距离,然后选择最近的一个就可以了,相关论文显示可达28%,虽然不是很高,但是这个是随机预测的6倍了。这是一个单样本学习算法最好的baseline 或者“合理性测试”了。
Lake等人的 Hierarchical Bayesian Program Learning,层次贝叶斯程序学习(以下简称 HBPL)得到了大约 95.2%的精度,非常不错。我只看懂了30%,但它非常有趣,它与深度学习直接从原始像素上训练相比,是风马牛不相及的,因为:

HBPL使用笔画数据,而不是仅仅用原始像素;
HBPL在Omniglot数据集上学习一个笔画的生成模型,这个算法需要更加复杂的标注,所以不像深度学习能直接从狗、卡车、大脑扫描图以及小铲子等图片的原始像素上去做单样本学习,这种图片也不是由笔画构成的。

Lake等人也指出,人类可以在Omniglot 数据集 20类样本上达到 95.5%的精度,仅仅比 HBPL高一点。在钻牛角尖思想的引导下,我亲自试验了一下20类任务,达到了97.2%的精度。我并不是做的真正的单样本学习,因为很多符号我本来就认识,因为我熟悉希腊字母、平假名和片假名,我把这些我本来就认识的移除,我还是得到了96.7%的精度。我认为是我从自己吓人的字迹中练就了超人般的字符识别能力。

快使用DNN

如果我们单纯的训练一个用交叉熵损失的softmax分类器神经网络来做单样本学习,很明显,网络会严重过拟合。即便是每类给出上百个样本,现代的神经网络依然会过拟合。深度网络有百万级别的参数来拟合训练数据,所以它们可以学习到一个巨大的函数空间(正式来说,是因为它们有一个很高的VC维,这就是为什么它们可以很好的从复杂的高维数据中学习的部分原因)。
很不幸的是,神经网络这个优势又成为了它们做单样本学习的一大障碍。当有百万级的参数需要做梯度下降,有这么多可能学习到的映射关系,我们怎么能设计一个网络,让他可以从单个样本去学习呢?
人类很容易从单个样本就能学会小铲刀或者字母Θ的意思,因为我们一辈子一直都在从相似对象中观察和学习。把一个随机初始化的神经网络与人类这种花了一辈子时间去识别物体和符号相比,的确不太公平,因为随机初始化的神经网络对数据的映射结构缺乏先验。这也是为什么我看到的单样本学习论文都是采用的从其他任务上的知识迁移方法。

神经网络非常擅长从结构化的复杂/高维数据中(例如图像)提取特征。如果给神经网络与单样本学习任务相似的训练数据,它或许能够从这些数据中学习到有用的特征,这些特征可能不需要调整就能用到单样本学习。这样,我们仍旧能叫他单样本学习,因为辅助的训练数据与单样本测试的数据不是相同的类别。(注意:这里的特征指的是“被用来训练的数据的映射数据”——译者注:例如经过CNN提取到的特征)。

接下来以一个有趣的问题就是,我们如何设计一个神经网络让它来学习特征?最显而易见的方法就是用迁移学习(如果有标记数据的话)——在训练数据上训练一个softmax分类器,然后在单样本学习任务的数据集上微调最后一层的权重。实际上,神经网络分类器在Omniglot数据集上不会有什么良好的表现,因为每类的样本仅有几个,即使是微调最后一层的权重,网络也会在训练集上过拟合。但这种方法也比使用L2距离的 k-近邻方法要好很多了(参考Matching Networks for One shot learning 中对各种单样本学习方法的效果的比较)。

这里还是有一种方法来做单样本学习的!忘了1近邻方法?这个简单的,非参的单样本学习器,计算测试集中的样本与训练集中每个样本的L2距离,并选择最近的作为它的类别。这种方法是ok的,但是L2距离会陷入严重的维度灾难问题,所以它在成千维的数据上(像Omniglot)上表现不太好。

另外,如果你有两个接近相同的图片,如果你把其中一张图片的像素向右移动一点,那么两张图片的L2距离会从0一下子变得非常高。L2距离在这种任务上是一个非常糟糕的度量。深度学习能奏效吗?我们可以使用深度卷积神经网络来学习一种非参的近邻分类器可以使用的相似性函数。

转载原文:https://sorenbouma.github.io/blog/oneshot/

原创粉丝点击