天天看點

論文筆記:DeepMIML

感想

這篇論文是一篇17年AAAI發表的文章,文章的作者周志華教授,國内的機器學習大牛。花了點時間讀完了這篇文章,然後代碼我也找到了,代碼的位址為:https://github.com/kingfengji/DeepMIML,代碼是用keras寫的,非常容易上手,由于官方隻給了一個運作的demo,沒有告訴我們怎麼用自己的資料集跑,還是蠻遺憾的,不知道用自己的資料集跑模型效果會怎麼樣。論文本身提出了一個sub concepts層,能夠捕獲insance和label之間的關系,應該是multi insatnce multi label中的一個很好的深度學習模型。

1 介紹

在許多真實世界應用中,感興趣的對象具有固定的結構,并且它可以表示了一袋執行個體(a bag of instances),多個标簽和這個bag級别相關。例如,在文本分類中,每個文檔可能有一些句子作為執行個體,并且有許多标簽指派給文檔級别。Multi-Instance Multi-Label為解決這種問題提供了一個架構。

精确地,以MIML的角度,訓練資料為{(X1,Y1),…,(Xm,Ym)},包含 bags of instances,其中,沒給bag Xi可以表示為Zi執行個體,例如{xi,1,xi,2,…xi,zi}。輸出Yi是一個所有可能性标簽{y1,y2,…yL}的子集,其中L為可能的單個标簽的數量。過去幾年提出了很多MIML的算法,并且應用到了不同域的任務中,例如圖檔分類,文本分類,視訊标注,基因功能預測(gene function prediction),生态系統保護(ecosystem protection)等等。

大多數MIML的研究假設執行個體(instances)已經提前給出,或者通過一些手工的執行個體産生器(instance generators)産生,執行個體産生器直接從原資料集中提取執行個體。最近,在圖檔任務上的經驗研究表明,無手工設計的執行個體産生器占據主導。考慮到特征學習技術已經在許多領域都擊敗了手工特征工程,這促使我們嘗試去用自動表示學習來解決MLML問題,盡管這需要大量的資料。

2貢獻

在這篇文章中,我們提出了DeepMIMLnetwork,正如其名,這是一個深度神經網絡模型,DeepMIML天生具有深度模型的表示學習能力,是以,我們不需要使用另外的執行個體産生器來産生執行個體描述。相反,模型本身就可以完成執行個體表示産生和後繼的學習過程。另外,我們仔細的設計了sub-concepts層,MIML的一個明顯的優勢是,例如,發現輸入對和輸出語義标簽的潛在聯系,這個層可以插曲其它類型的網絡結構中,例如CNN,使他們具有發現pattern-label關系發現能力。DeepMIML的有效性在實驗中被驗證了。

3 提出的方法

3.1 2D Sub-Concept Layer for Single Instance

在語義豐富的任務中,類别标簽可能帶有複雜的資訊,于是,直接的模組化可能很困難。相反,我們提出了一個新的二維(2-Dimensional)神經網絡層,我們叫做sub-concept layer,這可以使得模型能為每個類别标簽在instance和sub-concepts之間比對分數。精确地,一旦執行個體x的表示得到了,我們提出了一個全連接配接二維層(sub-concept layer)的大小為K*L。(這段我不是很明白,不知道作者能不能随後解釋一下,翻譯過來感覺怪怪的,還前言不搭後語),正式地,對于一個給定的執行個體向量x, 2D sub-concept層的第(I,j)個結點表示為執行個體x_(p,q)和第i個sub-concept對于第j個類别标簽的比對分數。第(i,j)個結點有着下面形式的激勵:

論文筆記:DeepMIML

其中,f(.)是激勵函數,權重向量w_(i,j)可以表示為比對第j個label的第i個sub-concept的模闆,我們選擇的激勵函數為ReLU(Rectified Linear Unit)的形式:

論文筆記:DeepMIML

2D sub-concept層,正如其名,嘗試對一個執行個體和所有标簽的sub-concepts的得分。為了得到标簽級别的預測,後面采用了一個列級别的池化操作,會産生K*1個得分層,每一個條目就是執行個體x和對應輸出标簽的比對得分。

池化操作不僅提取标簽預測,而且也對sub-concepts有一些魯棒性。即,當一個标簽的sub-concepts少于K個時,池化操作會消除sub-concepts的過度指派。

       和其它一般網絡結構相比,這裡有一些點值得強調:

l  不像一般的卷積特征圖(有局部連接配接濾波器),2D sub-concept層和輸入示例向量是全連接配接的,激勵可以表示為每個标簽的sub-concept和示例的比對得分。這裡也注意每個結點的權重是不一樣的,而卷積層共享權重。

l  不像1D全連接配接層,2D sub-concept層以一種可解釋的方式排列。換句話說,每一列是一個每個标簽的得分向量,當對這樣的關系模組化時,該層是一個直接的結果。這使得該層很容易直覺上進行解釋,更重要的是,它可用于發現示例-标簽的關系(instance-label relationships)。

簡單來說,2D sub-concept層後面接一個池化層可以捕獲輸入對和最終每個标簽的比對得分。另外,每個sub-concept的比對得分可以進一步用于instance-label關系發現。

3.2 3D Sub-Concept Layer for Multiple Instances

當輸入以一袋執行個體來表示時(這裡我們假設每袋有相同數量的示例,對于那些有不同數量示例的袋,我們用0來補齊),我們可以一般化2D sub-concept層的想法,融入到MIML視角中。基本的想法是通過堆疊許多2D層,把2D sub-concept層拓展為3D tensor層,tensor的每一個部分是每個示例的2D sub-concept層。

換句話說,給定一袋示例Xi,我們為每個示例X_ki建構2D sub-concept層,然後把這些2D層堆疊正一個3D 的張量。張量的深度和輸入袋的示例數目相等。即第(I,j,k)個結點的激勵表示在袋X_i中,對于第k個示例x_(k,i)的第j個标簽的第i個sub-concept。注意在相同sub-concepts中的每個示例的比對權重是不一樣的。

為了探索instance和label之間的關系,我們做了兩次池化操作。具體地,我們首先在3D tensor上垂直的進行池化,結果層是一個2維層,尺寸為L*M:在位置(i,j)的每個結點是對示例i和标簽j的比對得分。我們是以把第一個池化層作為Instance-Label Scoring Layer。

第二,另一個在2D Instance-Label Scoring Layer2D的池化操作會産生一個1D layer,大小為L*1.這可以解釋為袋級别的标簽的比對得分:每一個條目j是對在整個輸入bag下對第j個标簽的比對得分的模組化。

簡而言之,為了從3D張量層得到L*1的層,我們用了兩次池化操作:垂直池化後接一個水準池化。

我們進行兩次池化(沒有永2D的池化)的原因是因為中間的instance-label得分層本身有其獨特的解釋,通過檢驗這層的值可以幫助了解instance label之間的關系。

3.3 The DeepMIML Network

深度學習的優勢使得深度神經網絡在學習特征表示尤其的好。例如,一個衆所周知的技術,對一個圖檔編碼作為一個dense 1D向量,這是通過從一個訓練好的CNN的全連接配接層(FC7)提取的激勵。

可是,這樣的方法把輸入作為了一個整體,于是,對于輸入圖檔的dense 1D表示不能非常好的顯示局部資訊。這裡,我們做得有點不一樣:在一個深度卷積網絡結構中,在最後的全連接配接1D層之前是一個3D的卷積張量層,通常的形狀是14*14*512(例如VGG-16),在這個卷積層裡面,每一個14*14的向量,次元為512*1,這可以被當做輸入圖檔的一個示例。于是,以一個MIML的觀點,我們卷積層的表示而不是FC層,這是為了獲得一袋示例表示。

現在,我們引入Deep MIML網絡,這是一個新穎的網絡結果,它從原始輸入中産生示例袋,學習instance級别下每個标簽的sub-concept的得分函數,最終得到袋級别的預測。

具體地,原始輸入被送入一個instancegenerator裝置,這個裝置在興趣域内是獨立的。對于圖檔任務,在FC層前面加一個深度卷機網絡結構會使得效果變好,随後,一個3D sub-concept層接着兩個池化層,這直接應用到instancegenerator,最終,加一個全連接配接層,層的大小和labels的數量是獨立的,我們選擇的損失函數是mean binary cross-entropy。在訓練期間,我們使用SGD+dropout的方式。

有三點值得強調:

l  首先,這個更複雜的示例産生器(instance generator)可能用于特定的任務。例如,對于圖檔任務,可以應用一些方法(在用卷積網絡前創造一些小邊界框)首先得到示例的更好的表示。一個預訓練的基于LSTM的編碼器可以用于NLP任務。

l  第二點,有一些我們沒有獲得原始資料的情況,輸入已經被編碼為一袋示例。在這種情況下,我們仍然可以用DeepMIML架構直接把他們映射到3D sub-concept層。

l  最後,網絡可以很容易的退化為一個單示例多類别或者多示例單類别的情況,根據情況改變sub-concept層的次元。

3.4 Instance-Label Relation Discovery

Instance-Label關系發現是定位關鍵示例對的發現過程,一次來觸發輸出标簽。這和instance annotation不同,annotation關心的是把正确的标簽指派給示例,不關心這個示例是否正确的觸發輸出的标簽。是以,一個良好的示例标注的性能不會促使在instance label關系發現上的良好表現。

Instance label關系發現是DeepMIML網絡的内置功能。3D sub-concept層的第一個池化層(叫做instance-label scoring layer)會産生對所有标簽所有示例的一個比對分數。通過在instance-label得分層來檢驗這些激勵分數,這是直接對instance-label關系發現的路由。

具體地,對于MS-COCO資料集,每個輸入圖檔轉換為196個示例的袋,有80個候選标簽可以進行标注,對應的instance-label得分層的大小是196*80,這層給了我們每個示例和每個标簽的比對得分。通過檢驗激勵,我們可以容易的發現instances和labels之間的關系。

另外,通過回溯2D池化層有最高比對得分的示例的位置,我們也可以檢測哪一個關鍵instance激發一個特别的标簽。碎玉一個VGG-16結構,定位關鍵示例的中心像素的公式可以容易的推導為:

論文筆記:DeepMIML

其中,在14*14的instance bag中,,是2D索引,通過這種方式,我們可以得到與attention機制相似的效果。

4 實驗

為了驗證我們提出的網絡結構的有效性,我們在文本資料和圖檔資料上做了實驗,在訓練規模上有相當大的規模。目标是顯示Deep MIML網絡是一個一般的網絡結構,能夠适合許多不同域的MIML問題,隻需要很少的修改就可以應用到不同的任務中。

另外,我們顯示通過簡單的把3Dsub-concept層插入VGG-net結構中,我們得到了一個更好的精度,并且知道了label-instance的關系。

為了和傳統的方法有一個公平的比較,驗證其sub-concept層的有效性,我們在沒有深度特征的資料集上做了實驗。特别地,我們使用了兩個衆所周知的MIML基準資料集,叫做MIML News和MIMLScene。其中原始資料已經預處理成instance的袋格式,我們對最好的MIML算法進行了比較。

具體地,我們報告如下的實驗結果:

l  基于DeepMIML的文本任務:我們在2016 Yelp資料集挑戰上做了實驗。每個評論屬于一個或者多個類别(例如“restaurant”,“Thai Food”),我們提取了有評論标注的100類别。

l  基于DeepMIML的圖像任務:我們使用MS-COCO資料集,包含82783張圖檔,用于訓練,有80個标簽。為了得到每張圖檔的一個instance。我們在最後一個卷積層上使用了一個預訓練的VGG-16網絡。

l  基于非深度特征的DeepMIML:我們把我們的算法和最好的MIML算法進行了比較,資料集為傳統的MIML資料集。每個示例已經被手工編碼為特征向量了,為了公平起見,于是我們也使用相同的輸入資料作為表示。

我們用Keras實作了這個模型,keras是一個開源的python庫,用于深度學習,它允許使用者能夠定制他們自己的網絡結構和層,我們使用了2個Nvidia Titan-X GPU來加速訓練時間。

4.1 文本資料的結果

對于文本的MIML任務,我們在2016 Yelp dataset challenge上做了實驗。特别地,我們從19934條評論中提取了評論,每個評論屬于一個或者多個類别,總共有100個類别。我們把資料分為訓練集和測試集合,分割的比例為0.7.

       為了把每個輸入評論編碼為multi-instance表示,我們使用一個預訓練的skip-thought模型作為現成的每個句子的編碼器(作為instances)。這個輸入可以是一串任意長度的單詞,輸出是一個4800次元的向量。表1顯示的是一個給定的查詢和它在yelp資料集上最近的鄰居。

論文筆記:DeepMIML

我們把每個評論分成了10個單詞序列,每個序列包含一個句子。如果一個評論有超過10個句子。最後的部分包含所有保留的單詞。有示例袋表示在手,我們直接應用3D sub-concept層。我們使用二分類cross-entropy作為損失函數,使用SGD,dropout比率為0.5.這裡唯一的參數是K,即sub-concepts的數量。在驗證過程中,我們發現變化K不會對性能影響很大,是以這裡我們把K設定為4.

為了比較,我們仍然使用skip-thought來編碼整個評論到一個稠密的表示,次元為4800,我們之後用了一個soft-max和一個MLP(兩個隐藏層的大小為1024,後面接着一個512維的ReLU激勵)作為基準比較。我們這裡使用的評估尺度是用于multi-label任務的标準,實驗結果如表2.

論文筆記:DeepMIML

4.2 圖檔資料結果

       對于圖檔任務,我們在Miscrosoft COCO資料集上做了我們的實驗,MS-COCO資料集包含82 783張圖檔,用于訓練集,40 504張圖檔用于測試。每張圖檔提供了80個類别标簽。這裡,我們隻使用圖檔級别的标注文本作為标簽,在最後的卷積層使用使用一個預訓練的VGG-16,作為instance generator。如果我們固定VGG-16,訓練時間少于30分鐘。

論文筆記:DeepMIML

       圖5是測試集上instance-label關系的預測的闡明。通過sub-concept層,我們很容易得到注意力機制的結果。

論文筆記:DeepMIML

表3顯示的是比較結果,和vanillaVGG網絡相比,在加入額外的concept層以後,我們得到了一個更好的準确率。

       和更複雜的CNN-RNN模型相比,我們的方法顯示了次優的性能。這是因為我們使用的instancegenerator非常的簡單,直接的,微型物體,例如停車計時器不能很好的編碼到執行個體中。另一方面,CNN-RNN是在圖檔任務上的最好的模型,但它不是很容易應用到非CV的任務中。再次,DeepMIML的目标是以最小的代價對不同域的任務足夠通用。另外,我們的模型可以很容易的退化為multi-instance single-label架構,而CNN-RNN方法不能有效的适應。

4.3 把DeepMIML應用到一般的示例

我們比較了一些最好的MIML算法,有KISASR,MIML,SVM,MIML KNN,MIML RBF,MIML Boost方法。

為了公平比較,我們使用了前面說的基準資料集,資料集已經使用tf-idf和SBN特征進行了預處理。是以,我們直接把這些示例映射到3D sub-concept層,剩下的網絡層和之前的一樣。注意,這些資料集在示例數量和可能的标簽數量上相對比較少。

論文筆記:DeepMIML

參考文獻

[1]. A Keras implementation of the DeepMIMLNetwork for multi-instance multi-label learning. ​​https://github.com/kingfengji/DeepMIML​​

[2]. JiFeng, Zhi-Hua Zhou:Deep MIML Network. AAAI 2017: 1884-1890