核心思想
本文提出一種採用圖神經網絡GNN的小樣本學習算法,本質上還是一種學習參數更新策略的元學習算法,使得模型參數能夠根據在基礎數據集上得到的模型和少量的新樣本進行更新,在適應新任務的同時,且不會忘記舊任務。整個網絡結構分成特徵提取網絡和分類器網絡兩個部分,特徵提取網絡根據輸入圖像輸出對應的特徵向量,而分類器網絡的參數則是由個類別權重向量構成的,每個向量對應一個類別。將特徵向量與類別權重向量相乘就得到了對應類別的得分。假設在基礎數據集(包含大量有標籤的圖片)上訓練得到的權重爲,本文要做的就是設計一個算法,根據權重和新樣本構成的數據集,得到新老樣本對應的類別權重向量。
思路已經明確了,那麼怎麼去實現算法呢?作者提出一種叫做去噪自動編碼器(Denoising Autoencoders,DAE)的結構,其原理如下式所示
其中表示輸入,表示輸入的概率密度函數;表示去噪自動編碼器,其具體的過程是:首先給輸入增加一定的高斯噪聲,然後對帶有噪聲的權重進行去噪重構;表示高斯噪聲的規模(應該就是方差)。則根據上式,概率密度函數對數對於輸入的偏導數近似等於,的方向指向更有可能的分佈。利用這一結論應用於本文的任務中,將權重參數向量作爲輸入,可得
則權重參數向量的更新策略可寫爲
那麼下面的問題就是,初始的權重怎麼獲得?去噪自動編碼器怎麼實現?
第一個問題,對於基礎數據集中各個類別樣本對應的初始權重,可以直接使用在基礎數據集上預訓練的結果,而對於新任務數據集上的初始權重,可以使用各個類別樣本對應的特徵向量的平均值代替,如下式
式中表示第個類別中的第個樣本。
第二個問題,作者提出一種基於圖神經網絡GNN的結構,如下圖所示,首先對基礎類別的初始權重和新類別的初始權重增加高斯噪聲,然後進入一個由三層GNN構成的去噪自動編碼器結構,得到重構後的權重。
回顧整個過程,首先利用基礎數據集上的樣本對特徵提取網絡和分類器網絡進行預訓練得到基礎類別的初始權重向量;然後對於新樣本數據集上的樣本,經過特徵提取網絡得到特徵向量,並計算對應類別特徵向量的平均值作爲初始權重向量;二者級聯起來輸入到DAE結構中得到重構的權重向量,沿着的方向對初始權重向量進行更新,得到最優的類別權重向量,利用就能實現基礎樣本和新樣本的分類任務了。
實現過程
網絡結構
圖神經網絡的每個隱藏層的結構如上圖,定義每個初始權重向量對應圖中的一個節點;然後根據餘弦距離,計算得到與節點最近的個節點,作爲節點的鄰居;然後利用聚合函數(Aggregation Function)得到節點的聚合信息;最後將節點所表示的特徵信息與聚合信息級聯起來,通過更新函數(Update Function)得到下一層節點的特徵信息。
其中聚合函數是根據RelationNet改進的,首先兩個節點的特徵信息分別經過兩個全連接層,然後對輸出的結果求和,並經過由BN層+LeakyReLU和dropout構成的激活函數層得到輸出a_{ij}$並求和,數學表達如下
更新函數是將節點所表示的特徵信息與聚合信息級聯起來,經過一個全連接層+BN層+Dropout層+LeakyReLU層+L2正則化層得到輸出,再與所表示的特徵信息級聯起來得到得到下一層節點的特徵信息
對於最後一層圖神經網絡,其更新函數略有不同。給定一個輸入向量,會得到兩個維度相同的輸出向量和,全連接層+L2正則化層輸出,全連接層+Sigmoid層輸出,最後將和相乘,在於初始權重向量相加得到最終的輸出
根據我個人的理解這裏的輸出應該就是上文提到的最優的類別權重向量,作者將權重的更新過程暗含在了最後一層GNN網絡之中了。
損失函數
損失函數包含兩個部分重構損失和分類損失,計算過程如下
其中表示基礎數據集中的圖片數目,表示驗證集中的圖片數目,表示基礎數據集經過識別網絡學習得到的權重參數,表示網絡優化輸出的最終類別權重參數,表示交叉熵損失函數。
創新點
- 提出一種基於DAE的元學習算法,用於快速學習新樣本對應的分類權重向量,實現小樣本學習任務
- 利用圖神經網絡實現DAE結構,充分利用了節點之間的聯繫,實現分類權重向量的重構和更新
算法評價
本文利用分類權重向量實現分類任務,每個向量對應一個類別,而算法的目的就是能夠根據基礎類別的權重向量和少量的新樣本,快速更新得到新樣本對應的類別權重向量,這樣既能識別新樣本,又能保留對於基礎類別的分類能力(之前的權重向量都保留着)。而爲了能夠快速更新權重參數,作者引入了DAE結構,對於初始權重向量增加高斯噪聲,在對向量進行恢復和重構,通過重構向量和初始向量之間的差異,指引權重更新的方向。而爲了實現DAE結構,作者採用了圖神經網絡GNN,因爲其可以更好的利用各個節點之間的關係。整個算法思路清晰,結構完整,而且環環相扣,其引入的DAE結構也是新的思路和方法,值得借鑑學習。
如果大家對於深度學習與計算機視覺領域感興趣,希望獲得更多的知識分享與最新的論文解讀,歡迎關注我的個人公衆號“深視”。