笔画最多的字900000画,笔画最多字9亿画

首页 > 大全 > 作者:YD1662022-12-11 23:04:36

关于数据集 Omniglot!

Omniglot数据集拥有50种文字,1623类手写字符。对于每类字符仅有20个样本,每个样本分别由不同的人绘制而成,分辨率为105*105。

笔画最多的字900000画,笔画最多字9亿画(9)

上面是Omniglot数据集的一些例子,如图所示,这里有很多种字符,如果你喜欢机器学习,你肯定听说过 MNIST 数据集。Omniglot有时被成为 MNIST 的转置,因为它有1623类字符,每类只有20个样本,相比 MNIST 的10个类别,每个类别都有上千样本,正好相反。Omniglot 还有创作的笔画数据,但是我们这里用不到它。

通常,我们把样本分为30类训练样本,剩下20类作为评估。所有这些不同的字符可以组成很多种单样本学习任务,所以它确实是单样本学习的一个很好的评估标准。

一个单样本学习的 Baseline:1 近邻

最简单的分类方式是使用 k-近邻方法,但是因为每个类别只有一个样本,所以我们需要用 1近邻。这很简单,只需要计算测试样本与训练集中每个样本的欧式距离,然后选择最近的一个就可以了:

笔画最多的字900000画,笔画最多字9亿画(10)

根据Koch等人的论文,在Omniglot数据集中的20类上,单样本分类,1-nn可以得到大约28%的精度,28%看起来很差,但是它已经是随机猜测(5%)的 6 倍了。这是一个单样本学习算法最好的baseline 或者“合理性测试”了。

Lake等人的 Hierarchical Bayesian Program Learning,层次贝叶斯程序学习(以下简称 HBPL)得到了大约 95.2%的精度,非常不错。我只看懂了30%,但它非常有趣,它与深度学习直接从原始像素上训练相比,是风马牛不相及的,因为:

  1. HBPL使用笔画数据,而不是仅仅用原始像素;

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

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

使用深度神经网络来做单样本学习?!

如果我们单纯的训练一个用交叉熵损失的softmax分类器神经网络来做单样本学习,很明显,网络会严重过拟合。即便是每类给出上百个样本,现代的神经网络依然会过拟合。深度网络有百万级别的参数来拟合训练数据,所以它们可以学习到一个巨大的函数空间(正式来说,是因为它们有一个很高的VC维,这就是为什么它们可以很好的从复杂的高维数据中学习的部分原因)。

很不幸的是,神经网络这个优势又成为了它们做单样本学习的一大障碍。当有百万级的参数需要做梯度下降,有这么多可能学习到的映射关系,我们怎么能设计一个网络,让他可以从单个样本去学习呢?

人类很容易从单个样本就能学会小铲刀或者字母Θ的意思,因为我们一辈子一直都在从相似对象中观察和学习。把一个随机初始化的神经网络与人类这种花了一辈子时间去识别物体和符号相比,的确不太公平,因为随机初始化的神经网络对数据的映射结构缺乏先验。这也是为什么我看到的单样本学习论文都是采用的从其他任务上的知识迁移方法。

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

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

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

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

孪生网络(Siamese Networks)

笔画最多的字900000画,笔画最多字9亿画(11)

我原本打算放一张连颅双胎作为这一节的介绍图片呢,但是我最终认为孪生的小猫的图片可能更好一点。

我在这篇教程中会实现一篇极好的论文中的方法(Siamese Neural Networks for One-shot lmage Recognition)。Koch 等人的单样本学习方法是同时给神经网络两张图片以让他来猜测两张图片是否是同一个类别。当我们做上面提到的单样本分类任务的时候,网络可以比较测试集与训练集中的每张图片,然后挑选出哪一张与它最可能是同样类别。所以我们想让神经网络架构同时输入两张图片,输出它们属于同一个类别的概率。

假设和是数据集中的2个类别,我们让

笔画最多的字900000画,笔画最多字9亿画(12)

上一页12345下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.