論文閱讀筆記《Generating Classification Weights with GNN Denoising Autoencoders for Few-Shot Learning》

核心思想

  本文提出一種採用圖神經網絡GNN的小樣本學習算法,本質上還是一種學習參數更新策略的元學習算法,使得模型參數能夠根據在基礎數據集上得到的模型和少量的新樣本進行更新,在適應新任務的同時,且不會忘記舊任務。整個網絡結構分成特徵提取網絡F(θ)F(\cdot|\theta)和分類器網絡C(w)C(\cdot|w)兩個部分,特徵提取網絡根據輸入圖像xx輸出對應的特徵向量z=F(xθ)z=F(x|\theta),而分類器網絡的參數ww則是由NN個類別權重向量構成的w={wi}i=1Nw=\left \{w_i\right \}^{N}_{i=1},每個向量對應一個類別。將特徵向量zz與類別權重向量wiw_i相乘就得到了對應類別的得分si=zTwis_i=z^Tw_i。假設在基礎數據集DtrbsD^{bs}_{tr}(包含大量有標籤的圖片)上訓練得到的權重爲wbs={wi}i=1Nbsw^{bs}=\left \{w_i\right \}^{N_{bs}}_{i=1},本文要做的就是設計一個算法g(ϕ)g(\cdot|\phi),根據權重wbsw^{bs}和新樣本構成的數據集DtrnvD^{nv}_{tr},得到新老樣本對應的類別權重向量w={wi}i=1Nbs+Nnv=g(Dtrnv,wbsϕ)w=\left \{w_i\right \}^{N_{bs}+N_{nv}}_{i=1}=g(D^{nv}_{tr},w^{bs}|\phi)
  思路已經明確了,那麼怎麼去實現算法g(ϕ)g(\cdot|\phi)呢?作者提出一種叫做去噪自動編碼器(Denoising Autoencoders,DAE)的結構,其原理如下式所示
在這裏插入圖片描述
其中ww表示輸入,p(w)p(w)表示輸入的概率密度函數;r(w)r(w)表示去噪自動編碼器,其具體的過程是:首先給輸入ww增加一定的高斯噪聲,然後對帶有噪聲的權重進行去噪重構;σ2\sigma^2表示高斯噪聲的規模(應該就是方差)。則根據上式,概率密度函數對數對於輸入的偏導數近似等於1σ2(r(w)w)\frac{1}{\sigma^2}\cdot(r(w)-w)(r(w)w)(r(w)-w)的方向指向更有可能的ww分佈。利用這一結論應用於本文的任務中,將權重參數向量ww作爲輸入,可得
在這裏插入圖片描述
則權重參數向量的更新策略可寫爲
在這裏插入圖片描述
  那麼下面的問題就是,初始的權重ww怎麼獲得?去噪自動編碼器怎麼實現?
  第一個問題,對於基礎數據集中各個類別樣本對應的初始權重,可以直接使用在基礎數據集上預訓練的結果wbsw^{bs},而對於新任務數據集上的初始權重,可以使用各個類別樣本對應的特徵向量的平均值代替,如下式
在這裏插入圖片描述
式中xk,ix_{k,i}表示第ii個類別中的第kk個樣本。
  第二個問題,作者提出一種基於圖神經網絡GNN的結構,如下圖所示,首先對基礎類別的初始權重和新類別的初始權重增加高斯噪聲,然後進入一個由三層GNN構成的去噪自動編碼器結構,得到重構後的權重。
在這裏插入圖片描述
  回顧整個過程,首先利用基礎數據集上的樣本對特徵提取網絡和分類器網絡進行預訓練得到基礎類別的初始權重向量wbsw^bs;然後對於新樣本數據集上的樣本,經過特徵提取網絡得到特徵向量,並計算對應類別特徵向量的平均值作爲初始權重向量wnvw^{nv};二者級聯起來輸入到DAE結構中得到重構的權重向量r(w)r(w),沿着r(w)wr(w)-w的方向對初始權重向量ww進行更新,得到最優的類別權重向量w^\hat{w},利用w^\hat{w}就能實現基礎樣本和新樣本的分類任務了。
在這裏插入圖片描述

實現過程

網絡結構

在這裏插入圖片描述
  圖神經網絡的每個隱藏層的結構如上圖,定義每個初始權重向量對應圖中的一個節點;然後根據餘弦距離,計算得到與節點ii最近的JJ個節點,作爲節點ii的鄰居N(i)N(i);然後利用聚合函數(Aggregation Function)得到節點ii的聚合信息hN(i)(l)h_{N(i)}^{(l)};最後將節點ii所表示的特徵信息hi(l)h_i^{(l)}與聚合信息hN(i)(l)h_{N(i)}^{(l)}級聯起來,通過更新函數(Update Function)得到下一層節點ii的特徵信息hi(l+1)h_i^{(l+1)}
  其中聚合函數是根據RelationNet改進的,首先兩個節點的特徵信息分別經過兩個全連接層,然後對輸出的結果求和,並經過由BN層+LeakyReLU和dropout構成的激活函數層得到輸出q(l)(hi(l),hj(l))q^{(l)}(h_i^{(l)},h_j^{(l)}),最後將輸出乘以對應節點之間的權重值a_{ij}$並求和,數學表達如下
在這裏插入圖片描述

  更新函數是將節點ii所表示的特徵信息hi(l)h_i^{(l)}與聚合信息hN(i)(l)h_{N(i)}^{(l)}級聯起來,經過一個全連接層+BN層+Dropout層+LeakyReLU層+L2正則化層得到輸出,再與ii所表示的特徵信息hi(l)h_i^{(l)}級聯起來得到得到下一層節點ii的特徵信息hi(l+1)h_i^{(l+1)}
在這裏插入圖片描述
對於最後一層圖神經網絡,其更新函數略有不同。給定一個輸入向量,會得到兩個維度相同的輸出向量δwi\delta w_ioio_i,全連接層u(L1)u^{(L-1)}+L2正則化層輸出δwi\delta w_i,全連接層u(L1)u^{(L-1)}+Sigmoid層輸出oio_i,最後將δwi\delta w_ioio_i相乘,在於初始權重向量wiw_i相加得到最終的輸出w^i\hat{w}_i
在這裏插入圖片描述
在這裏插入圖片描述
根據我個人的理解這裏的輸出w^i\hat{w}_i應該就是上文提到的最優的類別權重向量w^\hat{w},作者將權重的更新過程暗含在了最後一層GNN網絡之中了。

損失函數

  損失函數包含兩個部分重構損失和分類損失,計算過程如下
在這裏插入圖片描述
其中NN表示基礎數據集中的圖片數目,MM表示驗證集中的圖片數目,wiw^*_i表示基礎數據集經過識別網絡學習得到的權重參數,w^i\hat{w}_i表示網絡優化輸出的最終類別權重參數,lossloss表示交叉熵損失函數。

創新點

  • 提出一種基於DAE的元學習算法,用於快速學習新樣本對應的分類權重向量,實現小樣本學習任務
  • 利用圖神經網絡實現DAE結構,充分利用了節點之間的聯繫,實現分類權重向量的重構和更新

算法評價

  本文利用分類權重向量實現分類任務,每個向量對應一個類別,而算法的目的就是能夠根據基礎類別的權重向量和少量的新樣本,快速更新得到新樣本對應的類別權重向量,這樣既能識別新樣本,又能保留對於基礎類別的分類能力(之前的權重向量都保留着)。而爲了能夠快速更新權重參數,作者引入了DAE結構,對於初始權重向量增加高斯噪聲,在對向量進行恢復和重構,通過重構向量和初始向量之間的差異,指引權重更新的方向。而爲了實現DAE結構,作者採用了圖神經網絡GNN,因爲其可以更好的利用各個節點之間的關係。整個算法思路清晰,結構完整,而且環環相扣,其引入的DAE結構也是新的思路和方法,值得借鑑學習。

如果大家對於深度學習與計算機視覺領域感興趣,希望獲得更多的知識分享與最新的論文解讀,歡迎關注我的個人公衆號“深視”。在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章