论文阅读笔记《Few-Shot Image Recognition by Predicting Parameters from Activations》

小样本学习&元学习经典论文整理||持续更新

核心思想

  本文提出一种直接预测分类器权重参数的小样本学习算法。作者的想法是对于普通的分类算法,无非就是将特征提取网络输出的特征向量 a ( x ) a(x) a(x)输入到分类器(全连接层+softmax)中,与全连接层中的权重参数 W W W相乘,计算内积,再用softmax函数转化为概率值,整个过程的目的就是希望 a ( x ) ⋅ w y a(x)\cdot w_y a(x)wy尽可能的大( y y y表示样本 x x x对应的类别)。对于大规模的数据集,分类器中的权重参数是能够训练得到的,但对于小样本数据集就很难通过训练得到合适的权重,因此作者希望通过一个参数预测器 ϕ \phi ϕ直接输出分类器的权重参数。那么参数预测器 ϕ \phi ϕ要根据什么来预测分类器的权重参数呢?作者选择了特征提取网络输出的特征向量 A y = { a ( x ) ∣ x ∈ D l a r g e ∪ D f e w , Y ( x ) = y } A_y=\left \{a(x)|x\in D_{large}\cup D_{few},Y(x)=y\right \} Ay={a(x)xDlargeDfew,Y(x)=y}的平均值 a ˉ y \bar{a}_y aˉy,这里的 a ˉ y \bar{a}_y aˉy就是类别 y y y的样本特征向量的平均值,可以理解为PN网络中的原型Prototype。这样做的依据是作者发现通过t-SNE将特征向量可视化后, a ˉ y \bar{a}_y aˉy与对应类别的分类权重 w y w_y wy非常接近。
  如此一来整个算法的思想就很清晰了,就是利用一个网络 ϕ \phi ϕ,根据每类样本的特征向量平均值 a ˉ y \bar{a}_y aˉy,来预测分类器中全连接层的分类权重 w y = ϕ ( a ˉ y ) w_y=\phi(\bar{a}_y) wy=ϕ(aˉy)。但有一个问题,对于大规模的数据集 a ˉ y \bar{a}_y aˉy是具有代表性的,但对于小样本数据集,甚至某些类别的样本只有一个,那么 a ˉ y = a y \bar{a}_y=a_y aˉy=ay,这种情况下再计算 a ˉ y \bar{a}_y aˉy可能就不一定适用了。如何解决这个问题呢?作者在大规模数据集上做预训练时,就允许模型随机从 A y A_y Ay a ˉ y \bar{a}_y aˉy中采样,来作为权重预测器 ϕ \phi ϕ的输入 s y s_y sy,作者称之为统计值,其构成的集合为统计集(statistic set) S l a r g e = { s y ∈ A y ∪ a ˉ y ∣ y = 1 , 2... , ∣ C l a r g e ∣ } S_{large}=\left \{s_y\in A_y\cup \bar{a}_y|y=1,2...,|C_{large}|\right \} Slarge={syAyaˉyy=1,2...,Clarge}。也就是说 s y s_y sy既可以从该类别的所有样本的特征向量 A y A_y Ay中选择,也可以选择该类别所有样本特征向量的平均值 a ˉ y \bar{a}_y aˉy,选择 a ˉ y \bar{a}_y aˉy的概率是 p m e a n p_{mean} pmean,从 A y A_y Ay中选择的概率是 1 − p m e a n 1-p_{mean} 1pmean。整个算法的过程 如下图所示
在这里插入图片描述
  每个类别的分类概率计算方式如下
在这里插入图片描述
式中 E S \mathbb{E}_S ES表示期望值,这里又出现一个新的问题,那就是如果要计算 x x x属于 y y y的概率,需要计算 a ( x ) a(x) a(x)和所有类别的分类权重 ϕ ( s y ′ ) \phi(s_{y'}) ϕ(sy)乘积的期望值,这个过程太过繁琐了,有什么方法可以简化这个过程呢?作者提出用简单的线性变换来近似参数预测器 ϕ \phi ϕ,那么 ϕ ( s y ′ ) = Φ ⋅ s y ′ \phi(s_{y'})=\Phi\cdot s_{y'} ϕ(sy)=Φsy Φ \Phi Φ是线性变换对应的矩阵,则上式可近似写为
在这里插入图片描述
其中 E S [ s y ] \mathbb{E}_S[s_y] ES[sy]可以在训练时提前计算好并保存下来。在小样本数据集上进行训练时,对于新的类别需要更新 E S [ s y ] \mathbb{E}_S[s_y] ES[sy],但由于小样本数量较少,计算得到的 E S [ s y ] \mathbb{E}_S[s_y] ES[sy]可靠性不高,因此作者采用了一种混合策略。对于大规模数据集中的类别,直接使用训练得到的 E S [ s y ] \mathbb{E}_S[s_y] ES[sy]进行预测,对于小样本数据集中的类别,使用类别 y y y对应的所有统计值 s y s_y sy与测试图像 x ′ x' x的特征向量 a ( x ′ ) a(x') a(x)内积的最大值,来作为分类器的输出。该过程如下图所示
在这里插入图片描述

实现过程

网络结构

  特征提取网络可采用ResNet-50或WRN-28-10,参数预测器 ϕ \phi ϕ设计了三种结构, ϕ 1 \phi^1 ϕ1只有一个全连接层; ϕ 2 \phi^2 ϕ2有两个全连接层,第一个全连接层后带有ReLU层; ϕ 2 ∗ \phi^{2*} ϕ2 ϕ 2 \phi^2 ϕ2结构相同,但训练时的损失函数不同。

损失函数

  在这里插入图片描述

训练策略

  本文的训练过程似乎只对参数预测器 ϕ \phi ϕ进行训练,过程如下图所示
在这里插入图片描述
先从 A y ∪ a ˉ y A_y\cup \bar{a}_y Ayaˉy中采样得到 s y s_y sy构成统计集 S S S,然后再从 A y ∪ a ˉ y A_y\cup \bar{a}_y Ayaˉy中采样得到 a y a_y ay构成训练激活集(training activation set) T T T,通过参数预测器 ϕ \phi ϕ输出分类器权重,并利用分类器预测 a y a_y ay的类别,最后计算分类损失,更新参数预测器 ϕ \phi ϕ中的参数。

创新点

  • 通过直接预测分类器权重的方法实现小样本学习算法
  • 通过随机采样,线性近似,混合策略等方式解决了算法中的许多问题

算法评价

  其实这种直接预测分类器参数的方法并不少见,如果把线性变换矩阵 Φ \Phi Φ设为单位矩阵,那么 a ( x ) ⋅ Φ ⋅ E S ( s y ) a(x)\cdot \Phi \cdot \mathbb{E}_S(s_y) a(x)ΦES(sy)就等价于 a ( x ) ⋅ E S ( s y ) a(x)\cdot \mathbb{E}_S(s_y) a(x)ES(sy),因为 a ( x ) a(x) a(x) E S ( s y ) \mathbb{E}_S(s_y) ES(sy)都经过归一化处理, a ( x ) ⋅ E S ( s y ) a(x)\cdot \mathbb{E}_S(s_y) a(x)ES(sy)也就相当于计算 a ( x ) a(x) a(x) E S ( s y ) \mathbb{E}_S(s_y) ES(sy)之间的余弦相似性,而 E S ( s y ) \mathbb{E}_S(s_y) ES(sy)的计算方法其实与PN中的原型计算过程非常类似。也就是说在本质上这一算法还是一种度量学习算法,对于类别表征(或者说原型)的计算中增加了一个随机采样的过程和一个可学习的线性变换 ϕ \phi ϕ,当然如果不把 ϕ \phi ϕ近似为线性变换,其性能可能会更高,但计算复杂度也会大幅上升了。

如果大家对于深度学习与计算机视觉领域感兴趣,希望获得更多的知识分享与最新的论文解读,欢迎关注我的个人公众号“深视”。在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深视

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值