计算机系统应用教程网站

网站首页 > 技术文章 正文

数据不够,技术来凑:单样本学习也可以很简单

btikc 2024-08-30 13:14:34 技术文章 10 ℃ 0 评论

影视剧中,警察要求目击者证人指认犯罪嫌疑人时,往往会给出数张照片,而证人通常需要凭借自己的记忆准确指认嫌疑人。这个过程对人类大脑来说比较容易,那么对机器又如何呢?

在人工智能领域,我们将这一过程称之为单样本学习(one-shoot learning)。通过开发一种计算机视觉系统,让其识别两个目标图像的特征,做出对比,并且输出识别的结果。

在上面这个例子中,第一个目标图像即为对嫌疑人的印象,第二个则是警察出示的嫌疑人照片。

深度学习是在计算机视觉领域最成功的人工智能分支,通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。

通俗来说,就是从普遍中总结共有规律,并且用已存储的共有规律信息去判断要辨别的物体。例如,从一万张猫的图片中总结出不同品种、花色、面部和体型特征信息,当需要验证一张图片中的动物是否为猫时,只需要与总结的特征信息对比即可。符合关键特征的则判定为猫,不符合的则不是。

可以看出,深度学习需要大量的标记数据进行学习。而数据是深度学习的难点之一。

相比之下,人类可以快速的学习新概念,对数据的要求也没有那么严格,机器目前无法做到这一点,而单样本学习恰好可以解决这个问题。

在了解单样本学习之前,我们需要先了解深度学习的代表算法—卷积神经网络(Convolutional Neural Network,CNN)。

卷积神经网络

神经网络是一种应用类似于大脑神经突触联接的结构进行信息处理的数学模型

卷积神经网络是计算机世界领域的核心算法模型。这是一种包含卷积计算(一种数学计算方法)且具有深度结构的神经网络。

卷积神经网络的层级结构可分为5层,分别是:

1. 数据输入层(Input layer)

2. 卷积计算层(CONV layer)

3. ReLU激励层(ReLU layer)

4. 池化层(Pooling layer)

5. 全连接层(FC layer)

第一层主要是对原始图像作预处理。

第二层是整个过程中最为重要的。进行卷积计算需要图像数据和卷积核。图像数据就是经过第一步处理过后的数据。卷积核就是特殊排列的数值。将图像数据和卷积核进行一一对应的计算,此过程就是卷积计算。得到的结果称之为特征图(feature map)。

从理论上来说,卷积核越多,我们最终确定的特征图越多,对目标的特征标记就越准确,识别率就更高。比如,在对某人进行建档时,条目“姓名”、“性别”、“身高”、“体重”、“年龄”、“住址”、“籍贯”、“教育经历”等就可以理解为卷积核,某人的具体上述特征就是需要处理的图像数据。将每个条目与此人相应的具体特征对应起来的就是卷积计算,最终得到的完整信息表就是特征图。

当然,我们可以通过多个卷积核确定目标图像的不同特征,因为每一个卷积核只关注某一特定的特征,比如在“姓名”条目下只能输入名字。

第三层中,ReLU(Rectified Linear Unit)意即线性整流函数,又称修正线性单元,是一种人工神经网络中常用的激活函数。该层主要任务是输出。

第四层池化层适用于压缩数据和参数的量,用以提高识别的速度。比如在上面的个人信息建档示例中,为了压缩数据,我们可以只记录完整信息表中最重要的信息,将其余冗杂部分去掉。

最后一层是全连接层,就是将所有局部信息重组,比如将上述第二部中的“姓名”、“年龄”等信息放置到同一张信息表中。

如上所述,此类系统需要大量的标注数据和学习。而往往我们没有这么多的标注数据。在机场、高铁站等人流量大的场所,如果要使用此类网络识别,则必须要保证在数据库中有每个人多张的照片信息,因为该网络还需要学习在不同环境下的面部数据。

出于可操作性和隐私考量,这样的想法并不现实。

此时,单样本学习便可发挥作用。单样本学习并不做分类处理,而是作差异性评估。

单样本学习的解决方案有以下两种:

重新利用卷积神经网络进行单样本学习

单样本学习的重点不在于分类,而是将任务转变为差异评估问题。

举一个例子,海关官员在核查入境人员时,主要根据护照照片和当时入境人员的样貌判断是否为同一人。采用单样本学习网络验证时,网络同时对证件照片和实际面貌进行分析,通过上述卷积、池化和全连接等过程,并最终返回一个数值用以表示两个图像之间的相似性。如果图像包含相同的对象(或相同的面孔),则神经网络返回的值小于特定阈值(例如零),如果它们不是同一对象,则该值将高于阈值。

可以看出,这一方案是没有建立数据库的,仅仅是用机器代替了人工进行面部识别,但过程中运用到的原理和我们上述的卷积神经网络一样。

这和我们日常生活中使用的手机面部解锁功能相似,录入的面部信息就是我们“证件照”。

孪生神经网络(Siamese network)

这一学习网络基于相似形函数,它有两个并行的神经网络,每个神经网络验证的目标不同,合并之后输出数值并进行预测。

在这一神经网络中,图像输入之后其特征就被编码为一组数字。本质上和卷积神经网络并没有太大的区别,二者的不同体现在输出处理方面。

在卷积神经网络中,网络会不断学习,调整参数,以便图像可以归入适当的类别。而孪生网络则测量两个输入图像各自特征的差异。

为此,我们引入三重态损失函数(Triplet loss)。

这一函数的诞生就是为了解决在仅有有限小数据的情况下建立人脸识别系统。

此处的三重指的是:锚图像(Anchor)、匹配图像(Positive)和不匹配图像(Negative)。

锚图像可以理解为我们输入数据库中的面部数据,匹配图像则是实际解锁时的面部照片,不匹配图像则是他人的照片。

在这一过程中,网络需要比较图像对。首先需要查看锚图像,并且获取锚图像和匹配图像之间的差异,随后对不匹配图像进行相同操作。孪生神经网络需要不断调整,以确保锚图像和匹配图像的特征编码非常接近。训练完成后,该神经网络应当可以判断两个新的面部图像中是否为同一人。

诚然,孪生神经网络也有局限性,它的训练仍需要较大量的APN图像。但是与经典的卷积神经网络相比,创建训练数据还是要比对每个图像的典型特征进行标记来的轻松。

单样本学习的需求很大,但其投入产出比往往并不令人满意,因为用于单样本学习的每个神经网络仅对某项特定的任务有用而已。再者,其使用也很有局限,训练用于人脸识别的网络无法用于识别他物(这一问题在卷积神经网络中便不会发生)。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表