極簡筆記 Meta-Learning for semi-supervised few-shot classification

極簡筆記 Meta-Learning for semi-supervised few-shot classification

極簡筆記 Meta-Learning for semi-supervised few-shot classification

論文地址 https://arxiv.org/pdf/1803.00676.pdf

本篇文章核心是給出了一種用於少樣本半監督學習的分類演算法。總體思路非常簡單,通過一個網路 (Prototypical Network)提取特徵,之後對特徵進行聚類,聚類中心穩定之後拿去測試,測試時把測試樣本按照更新了的聚類中心歸過去,就完事了。

訓練集中樣本又分為兩個集合(S,R)” role=”presentation” style=”position: relative;”>(S,R)(S,R)(S,R),分別表示有類別標註資料和無標註資料。網路對映記作h(x)” role=”presentation” style=”position: relative;”>h(x)h(x)h(x), 有標註樣本xi” role=”presentation” style=”position: relative;”>xixix_i, 無標註樣本x~i” role=”presentation” style=”position: relative;”>x˜ix~i\widetilde{x}_i, 類別中心記作pc” role=”presentation” style=”position: relative;”>pcpcp_c, 更新過程中記作p~c” role=”presentation” style=”position: relative;”>p˜cp~c\widetilde{p}_c,更新過程是典型的EM演算法,和K-Means非常像,即把沒標註的資料先歸到最近類,更新聚類中心,再重新把沒標註資料歸類,迭代直到不變。
聚類過程
如果直接用K-Means聚類那這篇文章就不用發ICLR了。文章用了三種聚類演算法:

soft K-Means

聚類中心更新公式

p~c=∑ih(xi)zi,c ∑jh(x~j)z~j,c∑izi,c ∑jz~j,cmj,c,where z~j,c=exp(−||h(x~j−pc||22)∑c′exp(−||h(x~j)−pc′||22)” role=”presentation”>p˜c=∑ih(xi)zi,c ∑jh(x˜j)z˜j,c∑izi,c ∑jz˜j,cmj,c,where z˜j,c=exp(−||h(x˜j−pc||22)∑c′exp(−||h(x˜j)−pc′||22)p~c=∑ih(xi)zi,c ∑jh(x~j)z~j,c∑izi,c ∑jz~j,cmj,c,where z~j,c=exp(−||h(x~j−pc||22)∑c′exp(−||h(x~j)−pc′||22)

\widetilde{p}_c=\frac{\sum_i h(x_i)z_{i,c} \sum_j h(\widetilde{x}_j)\widetilde{z}_{j,c}}{\sum_i z_{i,c} \sum_j\widetilde{z}_{j,c}m_{j,c}},\text{where }\widetilde{z}_{j,c}=\frac{exp(-||h(\widetilde{x}_j-p_c||^2_2)}{\sum_{c’}exp(-||h(\widetilde{x}_j)-p_{c’}||^2_2)}

soft K-Means with cluster

由於無標註樣本集合R中一些樣本真實類別並沒有出現在集合S中,這類樣本被稱作distractor class。為了防止此類樣本汙染標註類別集合,作者修改了聚類規則,認為distractor class類別中心始終在原點:

pc={∑ih(xi)zi,c∑izi,cfor c=1…N0for c=N 1″ role=”presentation”>pc={∑ih(xi)zi,c∑izi,c0for c=1…Nfor c=N 1pc={∑ih(xi)zi,c∑izi,cfor c=1…N0for c=N 1

p_c=\begin{cases}\frac{\sum_i h(x_i)z_{i,c}}{\sum_i z_{i,c}} & \text{for }c=1…N\\0 & \text{for }c=N 1\end{cases}
此外再考慮引進類別半徑表示類內樣本的不一致性(為了方便起見,標註類別半徑r1…N=1″ role=”presentation” style=”position: relative;”>r1…N=1r1…N=1r_{1…N}=1,只學習無標註樣本類別半徑rN 1″ role=”presentation” style=”position: relative;”>rN 1rN 1r_{N 1})

z~j,c=exp(−1rc2||x~j−pc||22−A(rc))∑c′exp(−1rc′2||x~j−pc′||22−A(rc′)),where A(r)=12log(2π) log(r)” role=”presentation”>z˜j,c=exp(−1r2c||x˜j−pc||22−A(rc))∑c′exp(−1r2c′||x˜j−pc′||22−A(rc′)),where A(r)=12log(2π) log(r)z~j,c=exp(−1rc2||x~j−pc||22−A(rc))∑c′exp(−1rc′2||x~j−pc′||22−A(rc′)),where A(r)=12log(2π) log(r)

\widetilde{z}_{j,c}=\frac{exp(-\frac{1}{r_c^2}||\widetilde{x}_j-p_c||^2_2-A(r_c))}{\sum_{c’}exp(-\frac{1}{r_{c’}^2}||\widetilde{x}_j-p_{c’}||^2_2-A(r_{c’}))}, \text{where }A(r)=\frac{1}{2}log(2\pi) log(r)

masked soft K-Means

定義樣本x~j” role=”presentation” style=”position: relative;”>x˜jx~j\widetilde{x}_j到類別c” role=”presentation” style=”position: relative;”>ccc的距離:

d~j,c=dj,c1M∑jdj,c,where dj,c=||h(x~j)−pc||22″ role=”presentation”>d˜j,c=dj,c1M∑jdj,c,where dj,c=||h(x˜j)−pc||22d~j,c=dj,c1M∑jdj,c,where dj,c=||h(x~j)−pc||22

\widetilde{d}_{j,c}=\frac{d_{j,c}}{\frac{1}{M}\sum_j d_{j,c}}, \text{where }d_{j,c}=||h(\widetilde{x}_j)-p_c||^2_2
另外再用MLP學習兩個閾值βc,γc” role=”presentation” style=”position: relative;”>βc,γcβc,γc\beta_c, \gamma_c(也許這就是為什麼文章title叫meta-learning的原因了。。。)

[βc,γc]=MLP([minj(d~j,c),maxj(d~j,c),varj(d~j,c),skewj(d~j,c),kurtj(d~j,c)])” role=”presentation”>[βc,γc]=MLP([minj(d˜j,c),maxj(d˜j,c),varj(d˜j,c),skewj(d˜j,c),kurtj(d˜j,c)])[βc,γc]=MLP([minj(d~j,c),maxj(d~j,c),varj(d~j,c),skewj(d~j,c),kurtj(d~j,c)])

[\beta_c,\gamma_c]=MLP\left(\left[min_j(\widetilde{d}_{j,c}),max_j(\widetilde{d}_{j,c}), var_j(\widetilde{d}_{j,c}),skew_j(\widetilde{d}_{j,c}),kurt_j(\widetilde{d}_{j,c})\right]\right)
然後是聚類中心的更新公式:

p~c=∑ih(xi)zi,c ∑jh(x~j)z~j,cmj,c∑izi,c ∑jz~j,cmj,c,where mj,c=sigmoid(−γc(d~j,c−βc))” role=”presentation”>p˜c=∑ih(xi)zi,c ∑jh(x˜j)z˜j,cmj,c∑izi,c ∑jz˜j,cmj,c,where mj,c=sigmoid(−γc(d˜j,c−βc))p~c=∑ih(xi)zi,c ∑jh(x~j)z~j,cmj,c∑izi,c ∑jz~j,cmj,c,where mj,c=sigmoid(−γc(d~j,c−βc))

\widetilde{p}_c=\frac{\sum_i h(x_i)z_{i,c} \sum_j h(\widetilde{x}_j)\widetilde{z}_{j,c}m_{j,c}}{\sum_i z_{i,c} \sum_j\widetilde{z}_{j,c}m_{j,c}},\text{where }m_{j,c}=sigmoid(-\gamma_c(\widetilde{d}_{j,c}-\beta_c))

最後來一張三種聚類方法的效果比對,其中Supervised表示只進行監督學習,並且直接分類;Semi-supervised inference表示只監督學習,在測試過程中聚類計算。這倆方法都是baseline。
這裡寫圖片描述
這裡寫圖片描述