論文地址: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上學習到的高維特徵。
主要的貢獻:
先解釋一下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爲實驗結果,包括屬性分類結果和類別分類結果(使用DAP方法)。具體的做法就是將圖片的類別換成屬性向量表示,然後利用訓練好的神經網絡,對屬性向量進行預測,看其準確率和AP(average precision)。