# Which Tasks Should Be Learned Together in Multi-task Learning? > [name=謝朋諺(Adam Hsieh)] > [time=Mon, Oct 2, 2023 10:37 AM] --- ## Reference > [26. Which Tasks Should Be Learned Together in Multi-task Learning? - 多任务网络训练关系研究](https://zhuanlan.zhihu.com/p/517869181) > [CSDN - Which Tasks Should Be Learned Together in Multi-task Learning?](https://blog.csdn.net/kebijuelun/article/details/123985640?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-123985640-blog-110434085.235%5Ev38%5Epc_relevant_sort&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-123985640-blog-110434085.235%5Ev38%5Epc_relevant_sort&utm_relevant_index=2) > []() --- [論文連結](https://arxiv.org/pdf/1905.07553.pdf) {%pdf https://arxiv.org/pdf/1905.07553.pdf %} ## Outline > [TOC] ## 摘要重點 - 此篇研究在不同學習設定中任務的合作和競爭,並提出了一個框架,將任務分配給少數神經網路。 - 框架確保合作任務由同一神經網路計算,而競爭任務則由不同網路計算。 - 該框架提供了 time-accuracy 的 trade-off,並能夠比單一大型 Multi-Task Neural Network 以及許多單任務網路更快地產生更好的準確性。 ## Experimental Setup ### Dataset: - 使用 Taskonomy 進行研究,這是目前最大的具有多任務的電腦視覺資料集。 - 600 座建築物的 3D 掃描獲得 - 400 萬個範例,被分為百萬的 Training Dataset, 50 k 的驗證集跟 50 k 的測試集,其中訓練集合測試集的建築物沒有重疊。 ### Task Sets: - 從資料集中選擇了兩組,每組 5 個任務。 - Task Set 1,1 項語意任務、2 項 3D 任務、2 項 2D 任務: - Semantic Segmentation - Depth Estimation - Surface Normal Prediction - SURF Keypoint Detection - Canny Edge Detection. - Task Set 2: - Auto Encoder - Surface Normal Prediction again - Occlusion Edges - Reshading - Principal Curvature - 用 Cross-entropy Loss 做語意分割,而 L1 Loss 用於其他所有任務。 ### Architectures: - 所有實驗都是使用標準的 Encoder-Decoder 架構和修改後的 Xception encoder(架構選擇不是這邊重點)。 - Max Pooling Strides 為 2 均替換為 2x2 的 CNN。 - 網路總參數有 1650 萬每張圖片需要 64 億次乘加運算。 - 影像輸入皆為 256 x 256。 - 為了研究網絡規模對任務關係的影響,我們也定義了一個較小的 Xception17 網路 - 對於 Xception17,Xception 網路編碼器被簡化為 17 層,中間層減少為 512 個而不是 728 個 channels,產生約 400 萬個參數,相當於 22.8 億次乘加。 - Dcoder 被設計為輕量級的,具有 4 個 transposed convolutional layers 和 4 個 convolutional layers。 ![截圖 2024-04-06 晚上9.13.03](https://hackmd.io/_uploads/Bkfd96C10.png) Different Multi-Task Model Experiment Settings: - Setting 1: 小 model 先做實驗 - Setting 2: 用目標 model (較大的) 再做一次實驗,有點像是控制變因 - Setting 3: 較小的訓練資料量級 - Setting 4: 不同的任務關係 ### Training Details: - 使用 PyTorch with Apex fp16 加速 - Training Loss 使用未加權的所有 Loss 的平均值 - 網路以 0.1 初始 Learning rate 進行訓練,每次訓練 Loss 停止減少時,學習率就會降為一半。 - Validation Loss 最高的權重被保存。 - 沒有進行超參數搜尋 ### Comparison - 定義了 SNT 是指 Xception17 的標準網路時間(Standard Network Time)。 - 為了可以跟更小/更大的 model 做比較,本文縮小/增加了 encoder 每一層中的通道數量,以便他具有適當數量的乘加法。 ### Trained Networks: - 在每一個 setting 中,為 5 個任務的 $2^n - 1$ 固定子集合訓練一個 1-SNT 的網路,也就是訓練 5 個 Single-Task Network、10 個 Two-Task Network、10 個 Three-Task Network, 5 個 Four-Task Network、1 個 Five-Task Netowrk - 另外訓練了 5 個 Single-Task Network,每個 Network 改為 1 個一半尺寸 Encoder($1/2$-SNT)和一個標準 Decoder。 - 最後,還訓練了一些 Fractional-SNT Single-Task Network 作為比較和基準。 ## Study of Task Relationships ### Setting 1: The smaller network, Xception17. ![截圖 2024-04-06 晚上10.01.36](https://hackmd.io/_uploads/rJWCS00kC.png) - **1-SNT each**:這個指標表示每個任務都有一個單獨的計算預算(即每個任務都有 1 個 SNT 的計算預算)。在這種情況下,每個任務都有自己的計算預算,並且網絡被訓練來單獨處理每個任務。 - **1-SNT total**:這個指標表示所有任務共享一個總計算預算(即所有任務共享 1 個 SNT 的計算預算)。在這種情況下,所有任務共享相同的計算預算,並且網絡被訓練來同時處理所有任務。 ![截圖 2024-04-06 晚上10.13.57](https://hackmd.io/_uploads/BJUhuRRyC.png) - 表 2 給出了這 10 個雙任務網路的更詳細表格,顯示了每個任務與其他任務一起訓練時相對於使用 1/2-SNT 網路單獨訓練時的效能。 - 可以看到,Normals 任務有助於訓練它的所有其他任務的執行。 ![截圖 2024-04-06 晚上10.23.04](https://hackmd.io/_uploads/HJ81jRA1C.png) - 由上圖 Pearson 相關性分析可知親和力最高的是表面法向量預測和 2D Object Detection - 反而兩個 3D 任務(深度估計和表面法向量預測)一起訓練的效果並沒有太好。 ![截圖 2024-04-06 晚上10.32.01](https://hackmd.io/_uploads/B1zgpCRyR.png) - 但如果以 Transfer Learning 的方式來看,倒跟剛剛的結論相反,兩個 3D 任務放在一起反而結果比較好;==Transfer Learning 和 Multi-Task 的親和力似乎沒有存在相關性。== - 這些結果表明,在 Setting 1 中,多任務網路的性能並不比每個單獨訓練的單任務網路好,即使每個單任務網絡都具有相同的計算預算。 - 這表明在某些情況下,將多個任務結合到一個網絡中可能會導致性能下降,需要更深入的研究和分析來找到最佳的任務分配策略以提高整體性能。 ### Setting 2: The control setting. ![截圖 2024-04-06 晚上10.30.17](https://hackmd.io/_uploads/BycK3AR10.png) - 這邊只是用了更大的模型去做跟上面一樣的實驗,可以發現更大的網路,有些任務可能從一起訓練中受益,但也有一些任務反而下降了。 - 代表每個 model 應該也要有各自的自動實驗設計來確定哪些實驗一起訓練任務的必要性。 ### Setting 3: Using only 5% of the available training data. ![截圖 2024-04-06 晚上10.50.03](https://hackmd.io/_uploads/Bk3X-1kxA.png) - 我們只使用 199,498 個訓練資料(每個 training set 的大樓只拿 420 個)來研究訓練集大小的影響。 - 在很多論文中都假設多任務學習在低資料量級的場景中可能會更好,因為 MTL 可以有效地讓您集中監督,然而我們發現表 6 違反了這個假設,因為大多數任務在這種設定下與另一個任務一起訓練時都會受到影響,特別是與 setting 2 相比。 - 此外,如果不是在某些情況下 Edges 任務取得了巨大的進步,MTL 平均而言基本上都是下降的。 - 另外在 low-capacity model 以及 high-capacity model 之間相關有一些相關性關係,但都跟 Taskonomy’s 的 transfer learning 沒有什麼相關性。 ### Setting 4: Using Task Set 2. ![截圖 2024-04-06 晚上10.56.25](https://hackmd.io/_uploads/SktoGyJxA.png) - 除了 Auto-Encoder 之外 Task 2 的其他四項幾乎都對彼此有中等的正面影響,而且這四項任務都是非常相似的 3D 任務,另外 Auto-Encoder 幾乎都會影響到其他任務的效能。 - 這邊也跟 Taskonomy’s 的 transfer learning 沒有什麼相關性。 ### :fire: Key Takeaways: :::success - 理想情況下,彼此任務之間應該是互相獨立在學習的,但結果看來不是這樣。 - 網路大小跟訓練資料量都會影響多任務的親和力。 - 相似的任務不一定訓練起來就會對彼此有幫助。 - 不論是什麼設定 Transfer Learning 跟 Multi-Task 之間都沒有相關性。 - 法向量訓練的 16 個任務中,有 15 個任務提高了其訓練任務的表現,其中 13 次這種改進優於任何不同任務聯合的訓練效果。這可能是因為法向量在整個表面上具有統一的值並保留 3D 邊緣。 ::: ## Task Grouping Framework ### Formal Problem Definition: 在第五章中,研究人員提出了一個正式的問題定義,用於解決如何將任務分配給不同的網絡以實現最佳性能的問題。以下是更詳細的解釋(只是把問題數學化,可以不用搞懂它 :smile: ): - **任務集合(Tasks Set)**:假設有一組不同的任務集合 $\mathcal{T} = {t_1, t_2, ..., t_k}$,每個任務 $t_i$ 代表一個特定的任務,例如表面法線預測、深度估計、邊緣檢測等。 - **計算預算(Computational Budget)**:給定一個計算預算 $b$,代表最大允許的推理時間,即在這個時間內完成所有任務。 - **網絡(Networks)**:將解決某些任務子集的每個神經網絡表示為 $n$,每個網路 $n$ 具有相應的推理時間成本 $c_n$ 和每個任務的損失 $\mathcal{L}(n, t_i)$(對於網路不嘗試解決的每個任務,損失為 ∞ )。 - **解決方案(Solution)**:解決方案 $S$ 是一組網路,它們共同解決所有任務。解決方案的計算成本為 $cost(S) = Σ_{n∈S^{c_n}}$。對於任務 $t_i$,解決方案對該任務的損失 $\mathcal{L}(S, t_i)$ 是解決方案中網路的最低損失,即 $\mathcal{L}(S, t_i) = min_{n∈S}\mathcal{L}(n, t_i)$。 - **性能度量(Performance Metric)**:解決方案的總體性能為 $\mathcal{L}(S) = Σ_{t_i∈\mathcal{T}}\mathcal{L}(S, t_i)$,即所有任務的最低損失之和。 總的來說,這個問題的目標是找到一個最佳的解決方案S,以最小化所有任務的總體損失,同時保持在給定的計算預算 $b$ 內。 通過這種方式,研究人員可以通過將不同任務分配給不同的網絡,以最大程度地提高整體性能,同時考慮到計算資源的限制。 ### Which Candidate Networks to Consider? 為此,我們的候選網路集包含所有 $2^{|\mathcal{T}|}−1$ 種可能的分組: - 具有 1 個任務的網路 -> 5 - 具有 2 個任務的網路 -> 10 - 具有 3 個任務的網路 -> 10 - 具有 4 個任務的網路 -> 5 - 具有 5 個任務的網路 -> 1 總共有 31 個網路,其中 5 個是單任務網路。 網路的大小是另一種設計選擇,為了在一定程度上探索其影響,還包含了 5 個單任務網絡且每個網路的運算成本只有標準網路的一半。總和網路數量總數達到 36 個。 ### Network Selection - 解決這個問題一般來說是 NP Hard 問題,存在許多技術在可接受的時間內找出最佳解。 - 本文類似於 branch-and-bound-like 演算法來實作(有 Github)。 ### Approximations for Reducing Training Time 本文介紹兩種技術,用來減少網路訓練時間。第一種技術涉及在短時間內訓練每個網路;第二種技術涉及根據在兩個任務上訓練的網路表現來推斷在兩個以上任務訓練網路將如何執行。 #### EARLY STOPPING PRIOR TO CONVERGEN - 通過在輕度訓練的網路上運行 Network Selection,然後簡單地將所選網路訓練到收斂,可以獲得不錯的結果 - 透過這種設置與完全訓練的候選網路相比,這邊可以減少約 20 倍的訓練時間。 - 較小的網路跟最終網路之間相關性並不完美,所以有可能導致最後的準確性是下降,一旦網路被訓練到收斂,這邊網路所做的決策就不再保證是最優的,只能找出一種近似完美的超參數或訓練方法,這種近似我們稱為 ==Early Stoping Approximation (ESA)== #### PREDICT HIGHER-ORDER FROM LOWER-ORDER - 訓練任務 A,B 任務 A,C 任務 B,C 是可以稍微證明出彼此效能的影響性。 - 假設有 a&b loss 為 0.1&0.2,b&c 為 0.3&0.4,c&a 為 0.5&0.6。 - 則 a,b,c 的 loss 可以直接算為 $a=(0.1+0.6)/2=0.35$,$b=(0.2+0.3)/2=0.25$,$c=(0.4+0.6)/2=0.5$ - 透過這種兩兩任務的網路可以來預測具有三個或更多任務的網路效能會有多好。 - 首先簡單地訓練兩個或更少任務的所有網路以實現收斂 - 然後預測高階網路的效能,在訓練網路和預測網路上進行 Network Selection - 再從頭開始訓練高階網路。 - 這樣的方法可以節省 45% 的訓練時間,而前面介紹的 **ESA** 則節省 95% 訓練時間,但 ESA 會帶來預測有可能失準的問題。 - 這種方法只需要訓練二次方的網路數量,而不是指數網路數量,所以當任務量很大的時候會比其他方法快很多。 ## Task Grouping Evaluation 透過從 1 SNT 到 5 SNT 每 1/2-SNT 的推理時間來看每次的結果。 **Baseline:** 使用 5 個 Single-Task Network model 跟一個包含所有 task 的 Network - 每個 Baseline 都有用多個 encoder size(更多或更少的 channel) 來評估。 - 提到了兩個控制基準,即 **Pessimal** 和 **Random**,這兩個基準用於比較在多任務學習中選擇哪些任務一起訓練的重要性。 - **Pessimal**: 是一種基準方法,這種選擇方法反而導致整體性能最差的網絡組合。換句話說,對於每個任務,**Pessimal** 方法選擇了在該任務上表現最好的網絡,但整體上這些網絡的組合導致了最差的性能。儘管在單個任務上表現最好,但整體性能卻是最差的。 - **Random**: 是另一種基準方法,其通過隨機選擇任務組合來進行比較。具體來說,**Random** 方法通過隨機選擇一組有效的任務組合來解決給定的五個任務。研究人員報告了一百萬次隨機實驗的平均結果,以評估這種隨機選擇方法的性能。 這兩種基準方法的引入旨在突出選擇哪些任務應該一起訓練的重要性。通過將這些基準與研究人員提出的方法進行比較,可以更好地理解如何有效地選擇任務組合以提高多任務學習的性能。 ![截圖 2024-04-08 上午9.59.08](https://hackmd.io/_uploads/r11KJ0gx0.png) ![截圖 2024-04-08 上午9.58.35](https://hackmd.io/_uploads/SJ4w1RglR.png) **Setting 1**: 圖 3 顯示了為每種技術選擇的任務組,圖 2 顯示了這些組的表現以及 Baseline 的表現。 - 當計算預算只有 1 SNT 時,所有的方法都必須選擇相同的模型——1-SNT 編碼器和 5 個解碼器的傳統多任務網路。 - 當計算預算實際上是無限的(5 SNT) 時,最佳方法選擇五個網路,每個網路用於對單獨任務進行預測,其中 3 個網路各自接受 3 項任務的訓練,而只有 2 個網路各自接受 1 項任務的訓練。 - 我們也看到,我們使用 2.5 SNT 的 Optimal Network Choice 和使用 3.5 SNT 的 HOA 都可以優於總共使用 5 SNT 的獨立網路。 **Setting 2**: ![截圖 2024-04-11 下午3.59.27](https://hackmd.io/_uploads/SJydOGrlC.png) - 當本文將網路換成 high-capacity Network 時(如上圖),再次發現本文的方法優於為每個任務訓練單一網路以及一起訓練所有任務。 **Setting 3**: ![截圖 2024-04-11 下午4.01.17](https://hackmd.io/_uploads/By8ytMBeR.png) - 可以在上圖中看到,我們在僅使用 20 萬個範例訓練的網路上的選擇框架再次優於 Baseline。 **Setting 4**: ![截圖 2024-04-11 下午4.57.50](https://hackmd.io/_uploads/HJ7Q8QrlR.png) - 在上圖中顯示 1-SNT all-in-one 和 5-SNT 最佳解之間的差異非常小。 - 由於這種設定中的任務往往能夠很好地合作,因此獨立訓練基線的競爭力不強也就不足為奇了。 - 用 4 個 SNT 訓練的一體化網路實際上優於 Early Stopping Approximation。 **Qualitative Results:** ![截圖 2024-04-11 下午5.01.52](https://hackmd.io/_uploads/HJgzw7SgR.png) **Discussion:** - 在所有 4 種設定中,本文的 optimal grouping 均優於每個 Baselin。 - Early Stopping Approximation 通常具有競爭力,但解決方案往往比最佳解決方案更差。 - 原則上,可以在使用更多數據進行訓練後停止,這可能會產生更好的結果。我們無法使用其他資料量測試 ESA,因為我們的自適應學習率導致網路在接受更多資料訓練後不再具有可比性。 ## Conclusion - 描述了多任務學習中的任務兼容性問題。 - 提供了一個計算框架,用於確定哪些任務應該一起訓練,哪些應該單獨訓練。 - 解釋了如何利用聯合訓練對某些任務有益,但對其他任務無益的情況。 - 提出了兩種應對訓練成本的策略,並評估了它們的性能。 - 方法優於單任務網絡和所有任務一起訓練的多任務網絡。 - 強調了在多任務學習中選擇正確的任務組合的重要性。 - 提供了有效的框架和方法,以實現最佳的總體預測準確性。