1. 程式人生 > >深度學習:多示例多標記學習DeepMIML

深度學習:多示例多標記學習DeepMIML

https://blog.csdn.net/m0_38034312/article/details/77995412

DeepMIML:https://blog.csdn.net/w5688414/article/details/78990301

多示例多標記的出現:真實的物件並不具有唯一的語義。簡單來講一個物件有不同的特徵和屬於不同的類別

多示例多標記的優點:先過吧,並沒有直觀的體會到。比如1對多並不是合式函式,從子概念出發更容易分類等。

演算法:基於退化策略的miml學習演算法(簡單理解一下就是從複雜拆分到簡單,退化為傳統的監督學習問題)

論文

論文字身提出了一個sub concepts層,能夠捕獲insance和label之間的關係,應該是multi insatnce multi label中的一個很好的深度學習模型。

 

傳統的網路結果例如resnet

224*224->model(resnet)->7*7*1024->gobal pooling 1*1*1024->fc->10class(softmax)

stride 32

2D  single instance 

L是max pooling 出的列

2D的意思是每個L有K個屬性值

3D  multipe instances

例如 15*15 *1 -》》15*15*K  子概念層 --》max-pooling via depth

 

 

 

 

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)個結點有著下面形式的激勵:

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

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層

一個instance 是一個二維矩陣 多個instance 就變成3D模型

換句話說,給定一袋示例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的得分函式,最終得到袋級別的預測。

具體地,原始輸入被送入一個instance generator裝置,這個裝置在興趣域內是獨立的。對於圖片任務,在FC層前面加一個深度卷機網路結構會使得效果變好,隨後,一個3D sub-concept層接著兩個池化層,這直接應用到instance generator,最終,加一個全連線層,層的大小和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結構,定位關鍵示例的中心畫素的公式可以容易的推導為


其中,在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資料集上最近的鄰居。


我們把每個評論分成了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.

4.2 圖片資料結果
       對於圖片任務,我們在Miscrosoft COCO資料集上做了我們的實驗,MS-COCO資料集包含82 783張圖片,用於訓練集,40 504張圖片用於測試。每張圖片提供了80個類別標籤。這裡,我們只使用圖片級別的標註文字作為標籤,在最後的卷積層使用使用一個預訓練的VGG-16,作為instance generator。如果我們固定VGG-16,訓練時間少於30分鐘。


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


表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層,剩下的網路層和之前的一樣。注意,這些資料集在示例數量和可能的標籤數量上相對比較少。


參考文獻
[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