Unsupervised Feature Learning via Non-Parametric Instance Discrimination
Summary
这篇论文主要论述如何通过非参数的实例判别进行无监督的特征学习。本文使用CNN backbone,原始图片输入网络后输出一个经过L2标准化的128维向量,通过Non-Parametric Softmax Classifier计算每个单一样本被识别正确的概率,同时使用Memory Bank存储特征向量,通过NCE来近似估计softmax的数值减少计算复杂度,最后使用Proximal Regularization稳定训练过程的波动性。主要的思想是将每个单一实例都看作不同的“类”。
Problem Statement
- 许多有监督模型的成功依赖于其背后大量的带标签数据,而获取带标签的数据往往是需要巨大的成本或者难以实现的。
- 能否仅通过特征表示表示来区分不同的实例。
- 能否通过纯粹的判别学习(discriminative learning)反应样例间的相似性。
- 将不同个例都看作不同的“类”,那么这个数量将是巨大的,如何进行处理。
Research Object
在无监督的情况下学习从实例本身到其特征表示的映射 v = f θ ( x ) v=f_\theta(x) v=fθ(x)。
Methods
1.Non-Parametric Softmax Classifier
-
Parametric Classifier
在传统的参数softmax函数中,对图片 x x x及特征 v = f θ ( x ) v=f_\theta (x) v=fθ(x),被识别为第 i i i的样例的概率为:
P ( i ∣ v ) = e x p ( w i T v ) ∑ j = 1 n e x p ( w j T v ) P(i|v)=\frac {exp(w_i^{T}v)} {\sum_{j=1}^n exp(w_j^Tv)} P(i∣v)=∑j=1nexp(wjTv)exp(wiTv)
-
Non-Parametric Classifier
使用 v i T v v_i^{T}v viTv来替换 w i T v w_i^{T}v wiTv, τ \tau τ用来控制concentration level of distribution。
P ( i ∣ v ) = e x p ( v i T v / τ ) ∑ j = 1 n e x p ( v j T v / τ ) P(i|v)=\frac {exp(v_i^{T}v/\tau)} {\sum_{j=1}^n exp(v_j^Tv/\tau)} P(i∣v)=∑j=1nexp(vjTv/τ)exp(viTv/τ)
-
Mermory Bank
使用Mermory Bank V 来存储上述的{ v j v_j vj},在每个iteration对应修改其值 f i → v i f_i\to v_i fi→vi,在初始化时通过单位随机向量对V进行初始化。
2.Noise-Contrastive Estimation
当n特别大时计算Non-Parametric Softmax的开销过大,于是使用NCE来估算。其基本思想是将多分类问题转化为一组二分类问题,其中二分类任务是区分数据样本和噪声样本。
Memory bank中特征表示 v v v对应于第 i i i个样例的概率为:
P ( i ∣ v ) = e x p ( v T f i / τ ) Z i P(i|v)=\frac {exp(v^{T}f_i/\tau)} {Z_i} P(i∣v)=Ziexp(vTfi/τ)
Z i = ∑ j = 1 n e x p ( v T f i / τ ) Z_i=\sum_{j=1}^n exp(v^{T}f_i/\tau) Zi=j=1∑nexp(vTfi/τ)
我们设定噪声分布为一个均匀分布: P n = 1 / n P_n=1/n Pn=1/n,假设噪声样本的频率是数据样本的 m m m倍,那么样本 i i i及特征 v v v来自数据分布( D = 1 D=1 D=1)的后验概率为:
h ( i , v ) : = P ( D = 1 ∣ i , v ) = P ( i ∣ v ) P ( i ∣ v ) + m P n ( i ) h(i,v):=P(D=1|i,v)=\frac {P(i|v)}{P(i|v)+mP_n(i)} h(i,v):=P(D=1∣i,v)=P(i∣v)+mPn(i)P(i∣v)
训练目标为最小化 J N C E ( θ ) = − E P d [ log h ( i , v ) ] − m ⋅ E P n [ log ( 1 − h ( i , v ′ ) ] J_{NCE}(\theta)=-E_{P_d}[\log h(i,v)]-m \cdot E_{P_n}[\log(1-h(i,v^\prime)] JNCE(θ)=−EPd[logh(i,v)]−m⋅EPn[log(1−h(i,v′)]
其中, P d P_d Pd指代真实数据分布,对 P d P_d Pd而言 v v v是 x i x_i xi的特征; v ′ v^\prime v′是来自另一幅图片,从噪声分布 P n P_n Pn中随机采样得到。注: v v v和 v ′ v^\prime v′都是从Memory Bank中采样得到的。
Z i Z_i Zi的计算量过大,我们把它当作常量,由蒙特卡罗算法估计得到:
Z ≈ Z i ≈ n E j [ e x p ( v j T f i / τ ) ] = n m ∑ k = 1 m e x p ( v j k T f i / τ ) Z\approx Z_i\approx nE_j[exp(v_j^Tf_i/\tau)]=\frac {n}{m}\sum_{k=1}^m exp(v_{j_k}^Tf_i/\tau) Z≈Zi≈nEj[exp(vjTfi/τ)]=mnk=1∑mexp(vjkTfi/τ)
{ j k j_k jk}是indices的随机子集,NCE将每个样例的计算复杂度从 O ( n ) O(n) O(n)减少到 O ( 1 ) O(1) O(1)。
3.Proximal Regularization
由于每个“类”只有1个样例,在每个epoch中,一个“类”只被访问一次,训练的过程比较不稳定。
假设在 t t t次iteration时, v i ( t ) = f θ ( x i ) v_i^{(t)}=f_\theta(x_i) vi(t)=fθ(xi),memory bank的值 V = v ( t − 1 ) V={v^{(t-1)}} V=v(t−1),对于 P d P_d Pd的loss function定义为: − log h ( i , v i ( t − 1 ) ) + λ ∣ ∣ v i ( t ) − v i ( t − 1 ) ∣ ∣ 2 2 -\log h(i,v_i^{(t-1)})+\lambda||v_i^{(t)}-v_i^{(t-1)}||^2_2 −logh(i,vi(t−1))+λ∣∣vi(t)−vi(t−1)∣∣22
总的loss function为: J N C E ( θ ) = − E P d [ log h ( i , v ) − λ ∣ ∣ v i ( t ) − v i ( t − 1 ) ∣ ∣ 2 2 ] − m ⋅ E P n [ log ( 1 − h ( i , v ′ ) ] J_{NCE}(\theta)=-E_{P_d}[\log h(i,v)-\lambda||v_i^{(t)}-v_i^{(t-1)}||^2_2]-m \cdot E_{P_n}[\log(1-h(i,v^\prime)] JNCE(θ)=−EPd[logh(i,v)−λ∣∣vi(t)−vi(t−1)∣∣22]−m⋅EPn[log(1−h(i,v′)]
使用后效果如图:
4.Weighted k-Nearest Neighbor Classifier
进行测试,根据余弦相似度与Memory Bank进行对比,选出最相近的k个样例,根据样例的类别与自身的实际类别判定是否查询正确。
Experiment
1.在CIFAR-10上比较Parametric Softmax和Non-Parametric Softmax
2.在ImageNet上比较本方法和其它无监督学习方法
图上conv1~conv5下面对应的Accuracy是对应网络相应层输出的特征输入线性SVM得到的结果,kNN下面的Accuracy是最后128D维特征向量输入kNN得到的结果。可以看出来,当层数加深时,我们使用的方法的Accurary一直增加,而别的无监督学习方式则是呈下降的趋势,说明我们的方法对更深层的网络具有良好的适应性。
上图是直接使用之前训练好的模型进行测试的结果。
特征向量维数对top-1 accuracy的影响。
训练集大小对accuracy的影响。
3.半监督学习任务上的应用
4.目标检测任务上的应用
Notes
如果有补充,再来更新。