閱讀筆記:自動發現,關係估計,學習上千個類別的語義屬性,擴展zero-shot learning

論文《Automatic Discovery, Association Estimation and Learning of Semantic Attributes for a Thousand Categories》。

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


  本文已經被CVPR2017接收,針對的是基於屬性的識別模型(attribute-based recognition models)中,屬性詞典(attribute vocabulary)和類與屬性的關係(class-attribute associations)需要專業人士人工定義的問題,比如基於屬性的識別算法的經典文章之一《Learning To Detect Unseen Object Classes by Between-Class Attribute Transfer》(可參考上一篇博文)所提供的方法。作者提出了一種端對端(end-to-end)的非監督屬性學習算法。首先,基於文本語料庫自動發現顯著的多樣性和區分性強的詞典,並且該詞典需要與人類認知中的語義概念屬性高度相關。之後,作者利用深度卷積神經網絡最優化了類與屬性之間的關係(class-attribute associations),並使用linguistic prior方法使得模型對噪聲和缺失數據具有抵抗性,增強了模型的魯棒性。該方法在三個數據集(ImageNet、Animals with Attributes、aPascal/aYahoo)上實現的zero-shot learning均得到目前最好水平。作者也公開了在ImageNet上學習到的高維特徵。

主要的貢獻:
1、提出了一種新的從文本中挖掘屬性的方法,挖掘到的屬性具有 「區分性」、「多樣性」、「顯著性」並且與人類認知的語義概念屬性高度相關;
2、提出了一種基於深度卷積神經網絡的建立屬性與類別之間聯繫的方法,並且考慮了文本語料庫中的 噪聲和缺失值
3、實現了在三個數據集上的zero-shot learning的最好效果。
4、公開了在ImageNet上學習到的高維屬性。(屬性數據的下載地址爲:http://cvhci.anthropomatik.kit.edu/~zalhalah/)

  先解釋一下zero-shot learning。Zero-shot learning簡單來說就是識別從未見過的數據類別,即訓練的分類器不僅僅能夠在識別出訓練集中已有的數據類別,還可以對於未見過的數據類別進行區分。這是一個很有用的功能,使得計算機能夠有知識遷移的能力,並無需任何樣本標籤,很符合現實生活中海量數據的存在形式。

算法內容

     主要分爲三個部分:屬性的發現、類與屬性之間關係的發現和基於屬性的樣本分類。

發現和學習語義屬性

     對問題進行數學形式化:設文本語料庫爲D,對象類別爲C,總共有M類,設W爲從D中學習到的詞典,算法的目標是選擇一個子集A屬於W,能夠最好地描述C,即:


其中,b爲詞典的大小,F爲子集S的描述函數,優化該函數可以選擇出最優的子集A,所以這部分的工作就是對於函數F進行建模。對於選擇出來的A集合,需要具有三個性質:a)區分性:能夠對類別具有很好的區分性;b)多樣性:能夠從多個方面對類別進行描述;c)顯著性:能夠代表人類的認知。

a.區分性:設集合V={v1,...,vj}爲tfidf提取的重要性特徵,即vij表示詞wi在文檔dj中的重要性。建立一個無向全連接圖G(N,E),每個結點ni都代表了一個類別ci,每條邊代表了集合S中詞的對於不同類別的區分能力,可寫成:


對於每一個結點,設置一個環形結構eii,權重爲:


令:




且設:


則目標函數可以表示爲:


公式看起來比較複雜,其實這是一種利用信息熵評估區分度的方法,該公式計算的是entropy rate of a random walk ,方法來自於論文[1,2],有興趣的同學可以進一步閱讀論文進行探究。最大化上述目標函數,得到的詞典即是具有高區分度能力的詞典。

b.多樣性:多樣性的好處在於,可以使得選出的詞對於所有類別都是儘量公平的,並且能夠一定程度上低於bias。首先,利用非監督的概率主題模型算法(LDA[3])得到每個文檔的主題。這T={T1,...,Tk}爲從D中學習到的主題集合,設多樣性目標函數爲:


從公式中可以看出,如果添加已經選擇主題相關的詞,會使得系統的增益減小。這個函數同時能夠選擇出對於主題更加重要的詞,因爲一個詞wi對應的p(wi|Tk)越大,會得到越大的增益。同時,它能夠一定程度上避免冗餘,因爲同類詞屬於同一個主題,該函數限制了同一類主題相關詞的增加。

c.顯著性:例如「leg」,「yellow」,「transparent」等詞是具有顯著性的,因爲它們都有很清晰的語義概念,相比下,「become」,「allow」等詞,它們代表的語義就不顯著。可以藉助junk topic實現顯著性詞的發現。Junk topic 是指文中沒有包含特別明顯的語義主題,通過測量與junk topic 之間的距離,可以得到重要的主題,從而發現具有顯著性的詞。表1列出了根據topic重要性的排列結果,越靠上的文本表示的主題意義越明顯和清晰。


表1 主題顯著性表

可以設insig(T)爲最低10%的topic,定義顯著性損失函數爲:


其中gama控制詞wi對主題的非重要性的貢獻值,即當選擇的詞是「become」、「allow」之類的詞的時候,損失變大。因此,該損失函數能夠選擇具有顯著性的詞。

Submodular optimization

      該方法來自於論文[4],如果一個函數F滿足邊際效益遞減的情況,即有:


則,該函數被稱爲submodular函數。就是說新元素加入地越晚,其對系統的增益越小。就好像一個餓的人吃饅頭,吃第一個的時候覺得很滿足,但再多吃幾個時,滿足感越來越小。可以設目標優化函數爲:


可以使用lazy greedy algorithm[5]對其進行求解,即假設一個空的S={},逐步向裏面添加元素,每一步都保證最大化增益。

使用語言優先(linguistic prior)使得類-屬性關係最優化

       這裏的關係,指的是類別標籤與屬性之間的關係,即如何用上文所找到的屬性組合表示類別標籤。定義類-屬性關係矩陣Ml=[mij]:


也就是利用tfidf進行簡單的初始定義。這樣的定義有個缺陷是文本中是存在缺省的,就比如大部分動物都有頭、四肢和皮膚,在文本中就可能不會出現這些關鍵詞,使得提取到的V可能並不好。再者,可能會將負相關係處理爲正向關係,比如「老虎不生活在海里」,提取之後變爲「老虎」和「海」。

       利用如圖1所示的網絡結構,獲取深層次的類-屬性關係。


圖 1 joint deep modal

該網絡結構包含了DAP法[3],可以將損失函數定義爲:


其中Lc和La分別爲分類和屬性的交叉熵損失,||M-Ml||1表示對於屬性矩陣的約束,這麼做的目的主要是將M的變化控制在一個範圍內,這也被稱爲linguistic prior。作者在此使用的是alexnet網絡。

如此,可以得到類別的屬性向量的表示形式。之後可以進行屬性預測模型的訓練,即訓練得到樣本X到屬性M層的映射,也是利用一個深度卷積網絡進行學習,結構如圖2所示。


圖2 attribute deep modal

利用5個卷基層和三個全連接層,最終連接一個sigmoid激活函數作爲輸出,同樣使用交叉熵損失進行網絡的訓練。這一步是爲了得到DAP中的s(a|x),即由X到屬性層M的預測。之後就可以使用DAP預測s(a|x),這樣也可以實現zero-shot learning。

實驗結果

       數據集ILSVR2012,使用Wikipedia API 蒐集文本語料庫,對於每個文本截斷爲500。使用tfidf方法得到向量集合V,即詞對文章的重要性。使用LDA法,學習200個主題。深度屬性模型的權值使用第一個深度模型的權值進行初始化。

評估所選擇的屬性詞典的性能

   作者從兩個方面進行了評估:(1)通過屬性獲得的同類對象的相似性(2)詞表自身的顯著性。

使用discounted cumulative gain(nDCG)[5]來衡量(1)。如圖3所示,本文算法的效果是最好的。

圖3 相似性性能對比
       (2)這裏所說的詞顯著性是指顯著的詞能夠很好地表達人類認知過程中的顯著語義屬性。取一個樣本集,將其分爲「positive」、「negative」、「junk」和「unknown」四類。作者只主要關注「positive」和「junk」,通過建立相應的後驗概率模型即可對顯著性進行建模。表2爲實驗結果,可以看到該方法也是最好的。

表2 顯著性性能對比

屬性預測

        可以利用上文生成的屬性,進行圖片分類的任務。表3爲實驗結果,包括屬性分類結果和類別分類結果(使用DAP方法)。具體的做法就是將圖片的類別換成屬性向量表示,然後利用訓練好的神經網絡,對屬性向量進行預測,看其準確率和AP(average precision)。

表3 屬性和類別預測結果
在joint model的結果,也就是上文提到的第一個深度網絡中,可以看到linguistic prior 對於結果的提升作用很大。對於attribute model,對於屬性分類任務時,可以達到76.9%,而直接基於圖片低維特徵的類似結構的模型也只能達到80%左右的準確率。
      圖4表示,大約80%的屬性能夠有大於0.6的被預測準確率。

圖4
Zero-shot learning
       基於屬性的分類器最主要的功能是進行zero-shot learning。使用的是分割好的ILSVRC2010數據集,共800個訓練集,200個測試集。表4爲實驗結果,該方法要明顯比目前其他的方法效果好,這裏的1000labels是爲了檢測算法對於已見樣本類別的傾向性,即將訓練集中的類別也作爲測試預測時的候選類別,這樣做效果肯定是會降低的,因爲模型是有訓練類別訓練出來的,所以會更加偏向於訓練類別。如果將測試類別的屬性表示的分佈情況,即知道其方差和均值,可以在最終的分類中運用該方差和均值,能夠得到ours-BT的結果,結果是會更好的。作者這麼做應該是爲了測試一下預測樣本分佈對結果的影響,但在現實的問題中,我們通常是不會知道未知類別樣本的屬性分佈的。表4的最後兩行表明了本方法利用深度網絡對類-屬性關係建模的重要性,上文已經提到了它在監督學習情況下的作用,這裏表明了它在zero-shot learning問題上的作用。

表4 zero-shot learning結果
      作者利用ImageNet,學習到圖片的屬性表示,並在zero-shot learning數據集Animals with Attributes(AwA)和 aPascal/aYahoo(aPy)數據集上進行測試,並與其他的算法進行了對比。表5所示,該方法的效果最好。

表5 zero-shot learning 在兩個數據集上的結果
對於文本長度的截取,如圖5所示,從結果來看,文本的長度方面對於不同的數據集似乎不太一樣,而連續值表示的屬性向量要比二值屬性向量表現地更好。

圖5 文本不同的截取長度對結果的影響
總結
       其實本文提出的算法思路是基於論文[3]的算法框架所提出的,感興趣的同學可以參考上一篇博文。對於[3]中需要人工建立的屬性表示和類-屬性關係的表示,實行了自動化,提出屬性預測的深度模型,並取得了現在最好的效果。
回顧一下算法的流程:利用wikipedia的文本語料庫生成最優的屬性表(用詞表示),利用深度卷積網絡實現類-屬性的關係表示,也就是將類更好地表示爲屬性向量的形式,並在此過程中加入linguistic prior約束;利用另一個深度網絡進行樣本到屬性向量的預測,使用DAP算法得到最終類別的預測結果。
       從本工作的研究思路可以看出,它的研究重點在於改進之前算法框架中部分步驟的效果,這種方式實際上在論文[3]作者的總結中就有提及。該工作應該可以擴展到對視頻對象的zero-shot learning的工作中。

參考文獻:[1]Entropy-Rate Clustering: Cluster Analysis via Maximizing a Submodular Function Subject to a Matroid Constraint.
                  [2]Submodular Attribute Selection for Action Recognition in Video
                  [3]Learning to detect unseen object classes by between-class attribute transfer
                  [4]Submodular functions and optimization
                  [5]Image ranking and retrieval based on multi-attribute queries.