天天看點

Taskonomy : Distangling Task Transfer Learning2019.6.30 論文閱讀

**

Taskonomy : Distangling Task Transfer Learning 閱讀筆記

**

2019.6.30 論文閱讀

作者連結:https://zhuanlan.zhihu.com/p/38425434

主題:能有效測量并利用視覺任務之間的關聯來避免重複學習,進而用更少的資料學習我們感興趣的一組任務。

Taskonomy是一項量化不同視覺任務之間關聯、并利用這些關聯來最優化學習政策的研究。如果兩個視覺任務A、B具有關聯性,那麼在任務A中習得的representations理應可為解決任務B提供有效的統計資訊 。由此我們通過遷移學習計算了26個不同視覺任務之間的一階以及高階關聯。如圖一,如果有預測法線的網絡和預測遮擋邊緣測試的網絡,我們可以通過結合兩個網絡的representations來快速通過少量資料解決Reshading和點比對 (Point matching)。基于這些關聯,我們利用BIP (Binary Integer Programming) 求得對于一組我們感興趣的任務,如何去最優配置設定訓練資料量。 比如,如果想最高效地解決10個問題,利用Taskonomy提供的學習政策可以減少2/3的訓練資料量。

方法概括:

簡單概括,方法分為兩個大階段,四個小步。第一大階段涉及前三小步,我們要量化不同視覺任務之間的關聯,并将任務關聯表達成一個affinity matrix(關聯矩陣)。第二大階段,也就是最後一步,我們對求得的affinity matrix進行最優化,求得如何最高效地去學習一組任務。這個最高效的政策會由一個指向圖 (directed graph) 來表示,我們稱此指向圖為Taskonomy。詞語上Taskonomy是Task (任務) 和Taxonomy (分類論) 的合并簡稱。

方法細節:

第一步:從零學習

基本就是普通的分别訓練常見的計算機視覺的任務

第二步:遷移學習

如上圖所示,對于一個起始任務 s ∈ S s\in\mathbb S s∈S和一個目标任務 t ∈ T t\in\mathbb T t∈T ,我們将以 s s s的representation作為輸入來學習 [公式] 。我們将freeze任務 s s s的encoder 參數,并基于encoder的輸出 (representations) 學習一個淺層神經網絡read out function。嚴謹來講,如果我們用 E s E_s Es​ 表示 s s s 的encoder, f t f_t ft​ 表示 t t t 的标注, L t L_t Lt​ 表示 t t t 的loss函數, I ∈ D I\in\mathbb D I∈D 來表示圖檔和遷移訓練集, D D D 表示要遷移學習的淺層神經網絡,學習目标為:

D s − > t : = arg ⁡ min ⁡ E I ∈ D [ L t ( D θ ( E s ( I ) ) θ , f t ( I ) ] D_{{\rm{s}} - > t} : = \arg \mathop {\min E_{I \in D} [L_t (D_\theta (E_{\rm{s}} (I))}\limits_\theta ,{\rm{f}}_t (I)] Ds−>t​:=argθminEI∈D​[Lt​(Dθ​(Es​(I))​,ft​(I)]

上述遷移代表了任務之間一對一的關聯,我們稱其為一階關聯。如下圖,幾個任務之間可能具有互補性,結合幾個起始任務的representations會對解決目标任務起到幫助。是以,我們也研究了任務之間多對一的關聯,我們稱其問高階關聯。在這種情況下,我們将幾個起始任務的representation結合起來當作目标任務的輸入,其餘細節跟上段類似。

因為高階的任務組合數量太大,我們基于一階表現選擇了一部分的組合進行遷移學習。對于小于五階的高階,我們根據一階的表現,将前五的所有組合作為輸入。對于n>5階,我們選擇結合一階表現前n的起始任務作為輸入。

第三步:Ordinal Normalization

Taskonomy : Distangling Task Transfer Learning2019.6.30 論文閱讀

這一步的目标為用一個 affinity matrix 量化任務之間的關聯。雖然從上步習得的遷移網絡中我們獲得了許多的loss值 L s − > t L_{{\rm{s}} - > t} Ls−>t​ ,但因這些loss值來自于不同的loss 函數,它們的值域有很大差别。如果我們把這些loss值直接放入一個矩陣(上圖左,縱軸為目标任務、橫軸為起始任務),那麼這個矩陣内的值及其不均勻,并不能有效反應任務之間的關聯。同時,簡單的線性規範化也并不能解決問題,因為任務的loss值和表現并不構成線性關系(0.01的 l 2 l_2 l2​ loss并不代表其表現兩倍好于0.02的loss)。由此,我們采用Ordinal Normalization(基于序數的規範化)來将loss值轉換為關聯度。該方法基于運籌學中的 AHP (Analytic Hierarchy Process)。概括來講,affinity matrix中的第 ( i , j ) (i,j) (i,j) 個值為利用第 i i i個起始任務遷移後,其網絡有多大的幾率表現好于用第 j j j 個網絡(我們在下文稱其為 i i i 對于 j j j 的勝率)。

至此第一大階段完結,我們通過上述affinity matrix量化了任務之間的關聯性。

第四步:BIP (Binary Integer Programming) 最優化

最後一步,我們要基于affinity matrix求得如何最有效地學習一組我們感興趣的任務。我們可以這個問題想象成一個subgraph selection的問題:選擇一些任務從零學習,剩下的任務用少量資料進行遷移學習,具體遷移學習的政策由subgraph中的edge來決定(對一條directed edge,起始點代表我們從零學習的一個任務,終點代表要進行遷移的目标任務)。基于此,我們可以通過解如下BIP最優化問題來得到最優解:

具體看作者連結,很詳細

總結:

在Taskonomy項目裡,我們的目标是着眼于一組任務,并利用任務之間的關聯性減少總體資料使用量。為此,我們量化了視覺任務的關聯性,并基于求得的affinity matrix最優化得到如何配置設定任務監督資料量。實驗表明,視覺任務之間确實存在很強的關聯性,我們能通過更少的資料很好地解決一組任務。現在大家已經可以去Github來使用我們的任務詞典:StanfordVL/taskonomy。

繼續閱讀