Representation Learning 表示学习 Part1( 五 )


via
如何通过度量学习来实现范例卷积神经网络( ) 。
原始的范例卷积神经网络有一个可扩展性问题,即“类别”的数量等于训练图像的数量 。为了解决这个问题,可以通过度量学习的方式来重塑这个任务 。
度量学习是一种方法,目标是学习到数据点之间的距离度量,使得同类别的数据点之间的距离小,而不同类别的数据点之间的距离大 。在范例卷积神经网络中,可以使用如对比损失( Loss)或三元组损失( Loss)等传统的度量学习损失函数,也可以使用更近期的损失函数 。
损失函数
损失函数是一种特别流行的版本,被许多最近的方法所使用,如 CPC, AMDIM, , MoCo 等 。它的工作方式类似于一个排名损失:对于查询(query)和正样本()的组合,应该接近,而对于查询和负样本()的组合,应该远离 。在实现上,可以看作是一个分类损失,只不过替换了标签和权重 。
图的右侧,上面是传统的分类,可能是one-hot编码,一个非常冗长的向量 。二下面是度量学习,就是学习不同样本间的相似性,映射在潜在空间中 。
这种方法的一个关键优点是它将范例卷积神经网络的问题重新定义为一个更易于扩展的问题,即学习到的表示能够保留数据点之间的相似度度量 。虽然这可能会带来一些新的挑战,如如何选择或生成负样本,但这也为自我监督学习提供了新的可能性 。
有点抽象,举个例子
假设我们有一些图片,这些图片是不同种类的狗的照片 。我们的目标是,让机器学会区分不同种类的狗,即使它在训练过程中没有见过这种狗的照片 。
在原始的范例卷积神经网络中,我们会将每一张狗的照片都视为一个单独的“类别” 。然后,我们会从每一张狗的照片中随机剪裁出多个片段,然后让网络去判断这些剪裁片段是否来自同一张狗的照片 。这种方法的问题在于,如果我们有非常多的狗的照片,那么我们就会有非常多的“类别”,这使得训练网络变得非常困难 。
于是,我们转向度量学习 。在度量学习中,我们不再关心每一张狗的照片是否构成一个单独的“类别” 。相反,我们只关心不同狗的照片之间是否“相似” 。对于每一张狗的照片,我们都会从中随机剪裁出一个片段作为“查询”,然后我们从其他的狗的照片中随机剪裁出其他的片段,其中一些片段来自同一张狗的照片(这些是“正样本”),而另一些片段来自不同狗的照片(这些是“负样本”) 。然后,我们训练网络,使得查询和正样本的距离小,而查询和负样本的距离大 。
通过这种方式,我们就可以使网络学会如何区分不同种类的狗,即使它在训练过程中没有见过这种狗的照片 。因为网络学会的是如何判断狗的照片之间的“相似性”,而不是记住每一张狗的照片 。这就是度量学习在范例卷积神经网络中的应用 。
(CPC)
对比预测编码(,CPC)是一种自监督学习方法,主要用于学习无监督数据的有用表示 。
CPC 的基本想法是预测数据的未来部分,然后使用对比性损失(比如损失)对预测结果进行训练 。在图像处理的场景中,CPC可以从图像的一个区块预测下面的其他区块的表示 。然后,它会对预测的表示和实际的表示进行比较,并把这个结果与其他负样本(即其他图像或者同一图像的其他区块)进行对比 。这样的目标是要使得网络更好地理解数据的内在结构和上下文信息 。
想象我们有一张图片,这是一个大自然的景色,图片上方是蔚蓝的天空,中部是郁郁葱葱的树木,下方是一片湖泊 。
在CPC中,我们将这个图像分成三个区域(或者叫做patch),分别是天空、树木和湖泊 。然后,我们会选择一个区域,比如说天空,然后试图预测下面的区域(树木)的表示 。这个过程被称为“上下文预测” 。