论文标题:Siamese Neural Networks for One-shot Image Recognition算法
论文做者: Gregory Koch Richard Zemel Ruslan Salakhutdinov网络
论文地址:https://www.cs.cmu.edu/~rsalakhu/papers/oneshot1.pdf
架构
声明:小编翻译论文仅为学习,若有侵权请联系小编删除博文,谢谢!框架
小编是一个机器学习初学者,打算认真研究论文,可是英文水平有限,因此论文翻译中用到了Google,并本身逐句检查过,但仍是会有显得晦涩的地方,若有语法/专业名词翻译错误,还请见谅,并欢迎及时指出。机器学习
为机器学习应用程序学习一个好的特征的过程可能在计算上很是昂贵,而且在数据不多的状况下可能会变得困难。一个典型的例子就是一次学习设置,在这种状况下,咱们必须仅给出每一个新类的一个示例,就能够正确的作出预测。在本文中,咱们探索了一种学习孪生神经网络的方法,该方法采用独特的结构天然对输入之间的类似性进行排名。一旦网络被调整好,咱们就能够利用强大的判别功能,将网络的预测能力不只用于新数据,并且适用于未知分布中的全新类别。使用卷积架构,咱们能够在单次分类任务上得到近乎最早进的性能,从而超过其余深度学习模型的强大结果。函数
人类展示出强大的获取和识别新模式的能力。特别是,咱们观察到,当受到刺激时,人们彷佛可以快速理解新概念,而后在未来的感知中认识到这些概念的变化(Lake等,2011)。机器学习已成功用于各类应用程序中的最早进性能,例如Web搜索,垃圾邮件检测,字幕生成以及语音和图像识别。可是,当被迫对几乎没有监督信息的数据进行预测时,这些算法一般会崩溃。咱们但愿概括这些不熟悉的类别,而无需进行大量的从新培训,因为数据有限或在在线预测设置(例如网络检索)中,从新培训可能即昂贵又不可能。性能
图1:使用Omniglot 数据集进行20次单发分类任务的示例。孤独的测试图像显示在29张图像的网格上方,表明咱们能够为测试图像选择的可能看不见的类型。这20张图片是咱们每一个类别中惟一已知的示例。学习
一个特别有趣的任务是在这样的限制下进行分类:咱们可能只观察每一个可能类的单一示例。这杯称为单次学习,这是咱们在该工做中提出的模型的主要重点(Fei-Feiet等,2006;Lake等,2011)。这应该与零散学习区分开来,在零散学习中,模型没法查看目标类别中的任何示例(Palatucci等,2009)。测试
经过开发特定领域的功能或推理程序能够一直解决一次性学习的问题,这些功能或推理程序具备针对目标任务的高度区分性。结果,结合了这些方法的系统在相似状况下每每会表现出色,但没法提供可应用于其余相似问题的可靠解决方案。在本文中,咱们提出了一种新颖的方法,该方法能够限制输入结构的假设,同时自动获取使模型可以成功地从几个示例中成功推广的特征。咱们创建在深度学习框架的基础上,该框架使用多层非线性来捕获不变性以在输入空间中进行变换,一般是经过利用具备许多参数的模型,而后使用大量数据来防止过分拟合(Bengio,2009;Hinton等,2006)。这些功能很是强大,由于咱们能够在不强加先验的状况下学习他们,尽管学习算法自己的成本可能很高。优化
图2,咱们的整体策略。1)训练模型以区分相同/不一样对的集合。2)根据学习到的特征映射进行归纳以评估新类别,以进行验证。
一般,咱们经过具备监督性的基于度量的方法使用孪生神经网络来学习图像表示,而后将该网络的功能从新用于一次学习,而无需进行任何从新训练。
在咱们的实验中,咱们将注意力集中在字符识别上,尽管基本方法几乎能够用于任何形式(图二)。对于这个领域,咱们使用大量的孪生卷积神经网络,其中a)可以学习通用图像特征,这些特征对于作出关于未知类分布的预测很是有用,即便这些新分布中的例子不多。 b)使用标准优化技术对从元数据采用的对进行轻松训练;c)经过利用深度学习技术,提供了一种不依赖于特定领域知识的竞争性方法。
要开发用于单次图像分类的模型,咱们的目标是首先学习一个能够区分图像对的类身份的神经网络,这是图像识别的标准验证任务。咱们假设,在验证方面表现出色的网络应该推广到一键式分布。验证模型学习根据输入对属于相同类别或不一样类别的可能性来识别输入对。而后可使用该模型以成对的方式针对测试图像评估新图像,每一个新颖类刚好一个。而后根据验证网络将得分最高的配对授予一次任务的最高几率。若是验证模型学习到的特征足以确认或拒绝一组字母中的字符的身份,那么对于其余字母来讲,他们应该就足够了,只要该模型已暴露于各类字母中以鼓励之间的差别学习的功能。
整体而言,对一次性学习算法的研究还很不成熟,而且机器学习社区对此的关注还颇有限。可是,本文以前还有一些关键的工做领域。
一键式学习的开创性工做能够追溯到2000年初的李飞飞等人。做者开发了一个变种的贝叶斯框架,用于 oneshot 图像分类,前提是在给定类别中只有不多的示例可用时,能够利用先前学习的类别来帮助预测将来的类别(Fe-Fei等,2003;Fei-Fei 等)等(2006)。最近,Lake等人。从认知科学的角度解决了一次性学习的问题,经过一种被称为“层次贝叶斯程序学习”(HBPL)的方法解决了用于字符识别的一次性学习(2013)。在一系列的几篇论文中,做者模拟了生成字符的过程,以将图像分解成小块(Lake等,2011;2012)。HBPL的目标是肯定所观察像素的结构说明。可是,因为联合参数空间很大,所以在HBPL下进行推理很困难,从而致使难以解决的集成问题。
一些研究人员考虑了其余方法或转移学习方法。湖等。最近有一些工做,该工做针对语言原语来识别未知说话者的新单词(2014年)。Maas和Kemp在使用贝叶斯网络预测 Ellis Island 乘客数据的属性(2009年)的著做中只有少数发表,Wu和Dennis在机器人制动的路径规划算法的背景下解决了一次性学习(2012)。Lim着重研究如何经过调整衡量损失函数中的每一个训练样本应加权每一个类别多少的度量,来“借用” 训练集中其余类别的示例。对于某些类别几乎没有示例的数据集,此想法可能颇有用,它提供了一种灵活且连续的方式,将类别间信息归入模型。
图三,用于逻辑分类P的二进制分类的简单两层孪生网络。网络的结构在顶部和底部进行复制,以造成双胞胎网络,每一层都有共享的权重矩阵。
孪生网络由Bromley 和 LeCun 于 1990年代首次引入,以解决做为图像匹配问题的签名验证(Bromley等, 1993)。孪生神经网络由双胞胎网络组成,该双胞胎网络接受不一样的输入,可是在顶部由能量函数链接。此函数在每侧的最高层特征表示之间计算一些度量(图3)。双网之间的参数是绑定的,加权绑定保证了两个及其类似的图像可能没法经过各自的网络映射到特征空间中很是不一样的位置,由于每一个网络都计算相同的功能。并且,网络是对称的,所以每当咱们向双胞胎网络呈现两个不一样的图像时,最上层的链接层将计算相同的度量,就像咱们要呈现相同的两个图像但像相对的双胞胎同样。
在LeCun等人中,做者使用了包含两个项的对比能力函数,以减小类似对的能力并不类似对的能量(2005年)。可是,在本文中,咱们使用双特征向量h1和h2之间的加权L1距离结合S型激活,将其映射到区间 [0, 1]。所以,交叉熵目标是训练网络的天然选择。请注意,在LeCun等人中,他们直接学习了类似性指标,该类似性指标由能量损失隐式定义,而咱们按照 Facebook DeepFace论文中的方法(Taigman等人,2014)固定了上述指标。咱们性能最佳的模型在彻底链接的层和顶级能量函数以前使用多个卷积层。在许多大型计算机视觉应用中,特别是在图像识别任务中,卷积神经网络已经取得了优异的成绩(Bengio,2009; Krizhevsky等,2012; Simonyan&Zisserman,2014; Srivastava,2013)。
有几个因素使卷积网络特别有吸引力。局部连通性能够大大减小模型中的参数数量,从而固有的提供某种形式的内置正则化,尽管卷积层在计算上比标准非线性要贵。一样,在这些网络中使用的卷积运算具备直接过滤的解释,其中每一个特征图都与输入特征进行卷积,以将模式识别为像素分组。所以,每一个卷积层的输出对应于原始输入控件中的重要控件特征,并为简单变换提供了必定的鲁棒性。最后,如今可使用很是快的CUDA库来构建大型卷积网络,而无需花费大量的训练时间(Mnih,2009年; Krizhevsky等人,2012年; Simonyan&Zisserman,2014年)。
如今,咱们详细介绍了孪生网络的结构以及实验中使用的学习算法的细节。
咱们的标准模型时一个孪生卷积神经网络,每一个L层都具备 N1 个单位,其中h1,l 表明第一个双胞胎在 l 层中的隐藏矢量, h2,l 表明第二队双胞胎的相同。咱们在前 L-2 层中仅使用整流线性(ReLU)单元,而在其他层中使用 S型单元。
该模型由一系列卷积层组成,每一个卷积层使用单个通道,并具备大小可变且固定步长为1的滤波器。将卷积滤波器的数量指定为16的倍数以优化性能。网络将ReLU激活功能应用于输出特征图,还能够选择在最大池化以后使用过滤器大小和跨度为2。所以,没层中的第K个过滤器采用以下形式:
其中Wl-1 , l是第 l 层特征图的三维张量,咱们采用 * 是有效的卷积运算,对应于仅返回哪些在每一个卷积滤波器和输入特征图之间彻底重叠的结果的输出单元。
图四,选择用于验证任务的最佳的卷积架构。没有显示连体双胞胎,但在4096个单位的彻底链接层以后当即加入连体,其中计算了向量之间的L1份量方向距离。
最终卷积层中的单位被展平为单个向量。该卷积层以后是一个彻底链接的层,而后再一层计算每一个孪生双胞胎之间的感应距离度量,该距离度量被提供给单个S型输出单元。更准确的说,预测矢量为 P=),其中 其中σ是S型激活函数。 最后一层在第 (L-1)隐藏层的学习特征空间上引入度量,并对两个特征之间的类似性进行评分。αj是模型在训练过程当中学习的其余参数,加权了份量方向距离的重要性。这为网络定义了最后的 Lth全链接层,该层将两个孪生双胞胎相连。
咱们在上面描述了一个示例(图4),该示例显示了咱们考虑的模型的最大版本。该网络还为验证任务中的任何网络提供了最佳结果。
损失功能:令M表明小批量的大小,其中 i 索引第 i 个小批量。如今让 y(x1, x2) 是一个长度为M的向量,其中包括小批量的标签,其中,当 x1 和 x2 来自同一字符类时,咱们假设 y(x1, x2) =1 ,不然,咱们在如下形式中的二进制分类器上强加一个正规化的交叉熵目标:
优化器:这个目标与标准的反向传播算法结合在一块儿,在该算法中,因为权重的关系,整个双子网络的梯度是相加的。咱们将学习速率ηj,动量µj和L2正则化权重λj分层定义,从而将小批量大小固定为128,所以在时间点T的更新规则以下:
其中 ∇wkj 是相对于某层第 j 个神经元和连续层第 k 个神经元之间权重的偏导数。
权重初始化。咱们从零均值和 10-2的标准差的正态分布初始化卷积层中的全部网络权重。误差也从正态分布初始化卷积层中的全部网络权重。误差也从正态分布初始化,但平均值为 0.5,标准差为10-2。在彻底链接的层中,以与卷积层相同的方式来初始化误差,可是权重时从更宽的正态分布中得出的,均值为零,标准差为 2*10-1。
学习时间表。尽管咱们为每一层设置了不一样的不学了,可是每一个epoch的学习率在网络上均匀降低了 1%,所以 η(T)j =0.99η(T -1)j。 咱们发现,经过对学习速率进行退火,网络可以更轻松地收敛到局部最小值,而不会陷入错误代表。咱们将动量固定为每层从 0.5 开始,每一个时代线性增长,直达达到值 j,即第 j 层的各个动量项。
咱们对每一个网络进行了最多200个epochs的训练。可是监视了从验证集中的字母和抽屉随机生成的320个 oneshot 学习任务集中的一次验证错误。当验证错误在20个epochs内未减小时,咱们根据一次验证错误中止并在最佳时期使用模型的参数。若是在整个学习计划中验证错误继续减小,咱们将保存此过程生成的模型的最终状态。
超参数优化。咱们仨还有贝叶斯优化框架Whetlab的Beta版来执行超参数选择。对于学习计划和正则化超参数,咱们设置分层学习率ηj∈[10-4,10-1],分层动量µj∈[0,1]和分层L2正则化惩罚λj∈[0,0.1]。对于网络超参数,咱们让卷积滤波器的大小在3x3到20x20之间变化,而每层中的卷积滤波器的数量在16到256之间(使用16的倍数)变化。全链接层的范围从128打破4096单位不等,也是16的倍数。咱们将优化器设置为最大化一次验证设置的准确性。分配给单个Whetlab迭代的分数是在任什么时候期发现的该指标的最高值。
仿射失真。此外,咱们在训练集上增长一些仿射失真(图五)。对于每一个图像对x1,x2,咱们生成了一对仿射变换T1,T2,以产生x1 = T1(x1),x2 = T2(x2),其中T1,T2由多维均匀分布随机肯定。 所以,对于任意变换T,咱们有T =(θ,ρx,ρy,sx,sy,tx,tx),其中θ∈[−10.0,10.0],ρx,ρy∈[−0.3,0.3],sx, sy∈[0.8,1.2]和tx,ty∈[−2,2]。 转换的每一个这些份量都以0.5的几率包括在内。
图5,Omniglot数据集中为单个字符串生成的随机放射失真的样子
咱们在首先描述的Omniglot数据集的子集上训练了模型。而后咱们提供有关验证和单发性能的详细信息。
Omniglot数据集是由Brenden Lake及其同事在麻省理工学院经过亚马逊的Mechanical Turk收集的,以产生一个标准的基准,能够从手写字符识别领域的一些示例中学习(Lake等,2011)。1Omniglot包含了来自50个字母的示例从诸如拉丁语和韩语等公认的国际语言到不为人知的当地方言。它还包括一些虚构的字符集,例如Aurek-Besh和Klingon(图6)。
每一个字母中的字母数量从大约15个字符到最多40个字符不等。这些字母中的全部字符都是由20个抽屉中的每一个抽屉一次生成的,Lake将数据分为40个字母背景集和10个字母评估集。咱们保留这两个术语是为了与能够从背景集生成的正常训练,验证和测试集区分开,以调整模型以进行验证。背景集用于经过学习超参数和特征映射来开发模型。相反,评估集仅用于测量单次分类性能。
图6. Omniglot数据集包含来自世界各地字母的各类不一样图像。
为了训练咱们的验证网络,咱们经过对随机相同和不一样的样本对进行采样,将三个不一样的数据集大小与30000,90000和120000 个训练示例放在一块儿。咱们预留了总培训数据的 60%:50个字母中的30个字母和20个抽屉的12个抽屉。
咱们固定了每一个字母的训练样本数量,以使每一个字母在优化过程当中都能获得相同的表示,尽管这不能保证每一个字母中的各个字符类。经过添加仿射失真,咱们还生成了与这些大小中的每一个大小的加强版本相对应的数据集的附加副本。咱们为每一个训练示例添加了八个变换,所以相应的数据集包含 270000,810000和1350000有效示例。
为了监控培训期间的表现,咱们使用了两种策略。首先,咱们建立了一个验证集,用于从10个字母和4个其余抽屉中提取的10,000个示例对进行验证。咱们保留了最后10个字母和4个抽屉用于测试,在这里咱们将它们限制为与Lake等人使用的相同。 (Lake et al。,2013)。咱们的其余策略是利用相同的字母和抽屉为验证集生成一组320次单次识别试验,以模拟评估集中的目标任务。实际上,肯定中止时间的第二种方法至少与验证任务的验证错误同样有效,所以咱们将其用做终止标准。
在下表(表1)中,咱们列出了六种可能的训练集的最终验证结果,其中列出的测试准确性在最佳验证检查点和阈值处报告。咱们报告了六个不一样训练运行的结果,这些结果改变了训练集的大小和切换的失真。
在图7中,咱们从验证任务的前两个性能最高的网络中提取了前32个滤波器,这些滤波器在具备仿射失真和图3所示架构的90k和150k数据集上进行了训练。过滤器之间的适应性,很容易看出某些过滤器相对于原始输入空间承担了不一样的角色。
表一,Omniglot验证任务的准确性(孪生卷积神经网络)
图7,孪生网络学习到的第一层卷积滤波器的示例。经过过滤器具备不一样的做用:一些过滤器寻找很是小的逐点特征,而另外一些过滤器则发挥更大的边缘检测器的做用。
一旦咱们优化了孪生网络以完成验证任务,就能够在一次学习中展现咱们所学功能的区分潜力。假设给定一个测试图像 X,咱们但愿将其分类为C类之一。咱们还获得了其余一些图像{xc} C c = 1,这是表明这些C类中每一个类别的列向量的集合。如今,咱们可使用 x, xc做为输入查询网络,范围为C=1 ....... c2 而后预测与最大类似度相对应的类别。
为了凭经验估计一次性学习成绩,Lake开发了20种字母内部分类任务,其中首先从为评估集保留的字母中选择一个字母,而后随机抽取20个字符。还从评估抽屉池中选择了二十个抽屉中的两个。而后,这两个抽屉将产生二十个字符的样本。第一个抽屉产生的每一个字符都表示为测试图像,并分别与第二个抽屉中的全部二十个字符进行比较,目的是从第二个抽屉的全部字符中预测与测试图像相对应的类别。图7显示了一次学习实验的一个单独示例。此过程对全部字母重复两次,所以,十个评估字母表中的每个都有40个一次学习试验。这总共构成了400次单次学习试验,由此计算出分类准确性。
表2给出了一次性结果。咱们借鉴(Lake等人,2013)的基线结果与咱们的方法进行比较。咱们还包括来自具备两个彻底链接层的非卷积孪生网络的结果。
表2. 将每种类型的网络与基准的最佳单次准确度进行比较。
咱们的卷积方法达到了92%,比HBPL自己之外的任何模型都强。 这仅略低于人为错误率。 虽然HBPL整体上显示出更好的结果,但咱们表现最好的卷积网络并未包含有关字符或笔触的任何其余先验知识,例若有关绘图过程的生成信息。 这是咱们模型的主要优点。
表3,MNIST 10 对1 单分类任务的结果
Omniglot数据集包含少许样本,用于每种可能的字母类别。所以,原始做者将其称为“ MNIST转置”,其类数远远超过训练实例的数量(Lake等,2013)。咱们认为监视在Omniglot上训练的模型能够很好地推广到MNIST会颇有意思,在MNIST中,咱们将MNIST中的10位数字视为字母,而后评估10向单发分类任务。咱们遵循与Omniglot相似的程序,在MNIST测试集上进行了400次单次试验,但不包括对训练集的任何微调。全部28x28图像均被上采样至35x35,而后提供给咱们的模型的简化版本,该模型在Omniglot的35x35图像上进行了训练,这些图像被下采样了3倍。咱们还评估了此任务的最近邻基线。
表3显示了该实验的结果。最近的邻居基准提供与Omniglot类似的性能,而卷积网络的性能降低幅度更大。可是,咱们仍然能够从Ominglot上学到的功能中得到合理的归纳,而无需对MNIST进行任何培训。
咱们提出了一种经过首先学习深度卷积暹罗神经网络进行验证来执行单发分类的策略。咱们概述了将网络性能与为Omniglot数据集开发的现有最新分类器进行比较的新结果。咱们的网络大大超越了全部可用的基准,而且接近先前做者所得到的最佳数字。咱们认为,这些网络在此任务上的强大性能不只代表咱们的度量学习方法能够实现人类水平的准确性,并且该方法应扩展到其余领域的单次学习任务,尤为是图像分类。
在本文中,咱们仅考虑经过使用全局仿射变换处理图像对及其失真来训练验证任务。咱们一直在尝试一种扩展算法,该算法利用有关单个笔划轨迹的数据来产生最终的计算失真(图8)。但愿经过在笔划上施加局部仿射变换并将其覆盖到合成图像中,咱们但愿咱们能够学习更好地适应新示例中常见变化的特征。
图8.针对Omniglot中不一样字符的两组笔画变形。 列描绘了从不一样抽屉中抽取的字符。 第1行:原始图片。 第2行:全局仿射变换。 第3行:笔画仿射变换。 第4行:在笔划变换之上分层的全局仿射变换。 请注意,笔画变形如何会增长噪音并影响各个笔画之间的空间关系。