本次介绍的论文:
2018 - ICLR - 《Meta-Learning for Semi-Supervised Few-ShotClassification》
在上篇博客中介绍了原型网络,一种基于度量的小样本分类方法,核心思想便是在一个嵌入空间中将所有同类的样本拉到较近的位置,然后通过距离度量的方式来判断一个样本x属于哪一个类。对于原型网络,这是一个监督学习,即训练数据全都是有标签的数据。在实际生活中,一般我们需要解决的小样本分类问题应该是半监督的,因为在很多领域,例如医疗、航天等,会有很多没有标注过的信息,这些信息中部分是有用的,但是如果全都进行人工标注,是很费时费力的。所以,实际的小样本分类问题应该是只有少量已标注好的样本和很多未标注的样本,这些未标注的样本中有和已标注样本同类别的,也有不同类别的。本篇所讲的论文便是解决这样的问题,也就是半监督的小样本学习,在原型网络的基础上做的三种扩展。
首先先简单回顾一下原型网络,原型:
这个原型的公式与上篇博客所讲的公式意义一样,都是求类c中所有样本特征的平均值。然后对于一个样本x,其属于类c的概率:
其中h(x)为嵌入函数,即上篇博客中的f(x)。后需内容会根据这两个公式做扩展。
所谓的软k-means,即聚类后得到的是一个概率值,而硬k-means得到的是0,1。0表示不属于这个类,1表示属于这个类。
这一个扩展中,有一个前提是所有未标记的样本都属于已标记的样本中的一类,即没有未出现的类别。根据这一前提,在根据已标记的样本求完原型后,加入未标记样本求精确原型:
其中表示样本属于类c的概率,根据这个概率将投影后的值加入到类c的原型当中,我们可以认为如果样本属于类c的话概率会较大,否则概率较小,这样的话,只有属于类c的样本才会影响到类c的原型位置。将所有未标记的样本经过平这个操作后便得到所有类的精确原型。
得到精确原型后,就可以用精确原型来进行测试阶段的实验,这个过程和原型网络中所讲一样,这里就不再讲解。
上一个扩展中认为所有未标记的样本都属于已标记样本中已有的类别,这样的假设在实际应用中是不合理的,所以这次我们认为未标记样本中,还存在着标记样本中没有的类别,且不知道存在着几个,例如标记样本中由类别自行车和摩托车,但在未标记示例中除了有这两个类外,还可能有小汽车、苹果等等其他的类别。
在这个扩展中,我们认为所有未出现在标记样本中的类别,都属于一个类,即干扰类,且假设这个类的原型在原点,即:
即有标记样本中由N个类,干扰类属于第N+1个类别。
然后就需要学习一个距离尺度,此距离尺度对于N个已知类来说默认为1,不需要学,第N+1个类需要学习,可以认为这个距离尺度就是将所有干扰类里的样本拉向原点,让它们距离原点更近。
即修改了上一个扩展中的概率,A是调节偏移量用的。然后我们通过学习得到一个好的,便可以将干扰类的样本投影到原点附近。
上一个扩展中,我们认为所有其他未出现过的类属于同一个类别,但是这样想是有点不合理的,所以,本次扩展是为了解决这个问题。
首先,计算实例与原型的归一化距离:
通过向小型神经网络反馈原型归一化距离的各种统计数据,为每个原型预测阈值和斜率:
传入的数据:最小值、最大值、方差、偏斜度、峰度
偏斜度:指非对称分布的偏斜状态,是对数据分布对称性的测度
每个阈值使用有关群集内变化量的信息来确定它应该如何正确地删除未标记的示例。通过将归一化距离与阈值进行比较,计算每个示例对每个原型的贡献的软掩码m,然后再求精确原型:
这个掩码m可以理解为每个样本对该类原型的贡献度,如果属于该类则贡献度高,否则贡献度低。通过这种方式就没有将所有未知类的样本归为一类,但是也没有对未知类进行发现。
总体来说,这篇论文思想还可以,在半监督的小样本分类中效果还挺好,在原型网络的基础上经过了三种扩展,不过还有需要提升的是新类的发现问题,这个问题是半监督小样本学习中需要解决的一个问题之一,机器能够自主地发现并标记新类别。
如果讲解不足之处欢迎提出意见,谢谢。