目录
3. Static alternatives to the mean
4. Learning a prototype aggregator
1. motivation
在对新类进行训练时,FSL方法通常假定支持集是干净的,也就是样本标记是准确的。但这种假设通常是不现实的,虽然这里支持集很小但是仍然可能包含错误标记的样本。因此,标记噪声的鲁棒性对于 FSL 方法的实用性至关重要,这个问题在很大程度上仍未得到探索。
2. contribution
- 为了提升protonet在存在标签噪声时的鲁棒性,提出用中值和相似度加权的方式替代原来均值计算原型的方式;
- 针对noisy few-shot learning问题,提出一个新的transformer架构——TraNFS,用于聚合支持集样本特征得到类的原型,另一方面判断样本标签是否正确;
- 实验效果不错。
3. Static alternatives to the mean
1) 空间中值原型
存在噪声的情况下,很容易想到用中值作为均值的替代方案,但是对于向量给出中位数这种顺序统计量却不简单。找到中位数的思路是:各种分布统计数据(例如均值、中位数、众数)与适当损失函数的最小化之间存在联系。如经验平均值使其和集合中所有值之间的总平方误差最小化。
类似地,经验中位数使中位数和集合中所有值之间的总绝对误差最小化,因此找到一个中位数就等于最小化总绝对误差。
故定义一个与所有嵌入向量距离之和的损失函数,通过最小化这个损失即可以找到中值。为了使该损失函数在所有的点上都可微,给出下面平滑的pseudo-Huber loss:
该最小化问题没有封闭解/解析解,因此使用牛顿迭代法计算:
其中,
通过忽略二阶梯度和Hessian矩阵中非对角线元素,可以得到一个近似解迭代公式:
2) 相似度加权原型
不同相似度计算方式:
- Squared Euclidean distance
- Absolute distance
- Cosine similarity
根据上述计算的相似度加权聚合特征即可以得到每个类的原型:
4. Learning a prototype aggregator
1) TraNFS
TraNFS用于输入支持集样本特征h,基于自注意力聚合样本信息,输出每个类的原型p:
Class token:受到Bert的启发,将[CLS(1), CLS(2),CLS(3)]与支持集特征h拼接,最后输出的是对应类的原型;Positional Encoding:位置编码主要用于指示当前样本的类别信息,是否被正确标记。
2) 训练/优化流程
- 分类损失
- 干净的原型的损失
根据标签正确样本计算干净原型,最小化干净原型和所有样本计算得到的原型之间的距离:
- 二元离群值分类损失(milabeled or not)
判断每个样本的标签是否正确,这个可以看作是一个二元分类问题,基于下述损失优化:
最后训练总的损失就包含上面三个部分:
5. 实验部分
6. 总结
这篇文章提出了一个小的问题场景,即样本中存在标记错误的情况。但本质上,还是针对原型网络的改进,怎么获得更准确地原型,另一方面是相似度的计算也尝试了不同的距离函数。在获得原型时,提出了相应的transformer架构聚合样本特征信息,这一点也是可以借鉴的。给我的启发是,计算原型时,可以根据分类的概率,加权样本特征得到原型,因为少数样本的平均特征不能作为分布的整体性质。(好久没写博客啦,会好好加油的呜呜呜)