詳解MMoE 模型:多任務學習中的專家混合建模與實踐【附代碼】
MMOE模型由谷歌研究團隊于2018年在論文《Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts》中提出,是一種新穎的多任務學習框架,廣泛應用于推薦系統中。
本文從技術背景、演化過程、計算原理、關鍵問題解析以及基于PyTorch 的代碼實現方面對MMoE架構進行深入探究。
1.技術背景
(1)多任務學習的本質是共享表示以及相關任務的相互影響,多任務學習模型并不總是在所有任務上都優于相應的單任務模型。
(2)通常,相似的子任務擁有比較接近的底層特征,那么在多任務學習中就可以很好地進行底層特征共享。但對于不相似的任務,它們的底層特征表示差異很大,在進行參數共享時很可能互相沖突或噪聲太多,從而導致多任務學習模型效果不佳。
(3)因此,多任務學習的難點是如何在相似性不高的任務上獲得好的效果。
2.MMoE演化過程
(1)MMoE的主干建立在最常用的Shared-Bottom模型(圖(a))上,其中所有任務共享一個底層網絡,每個任務在底層網絡的頂部有一個單獨的網絡塔。
(2)MMoE模型(圖(c))不是共享一個底層網絡,而是擁有一組底層網絡,其中每個底層網絡被稱之為專家(Expert)。
(3)與所有任務共享一個門控網絡(Gate)的MoE模型(圖(b))相比,MMoE為每個任務單獨引入一個門控網絡。在針對不同任務時可以得到不同的專家權重,從而實現對專家的選擇性利用,即不同任務對應的門控網絡可以學習到不同的專家組合模式,因此更容易捕捉到任務間的相關性和差異性。

3.MMoE計算原理

(1)當輸入為時(是特征維度),任務的輸出可以表示為:
其中,代表任務的底層網絡,即被多個任務共享的專家網絡組。代表專屬于任務的頂層網絡塔。
(2)底層共享專家組網絡的輸出可以表示為:
其中,代表第個專家網絡(是專家數量),代表任務的門控網絡產生的第個專家網絡的權重值。最終輸出結果為所有專家網絡輸出的加權和。
(3)對于任務專屬的門控網絡而言,輸入為特征,輸出為所有專家的權重值(類似于注意力機制),表示如下:
其中,是一個可訓練參數矩陣。
(4)其中,每個專家網絡的輸入特征和結構都是一樣的,每個門控網絡的輸入和結構也是一樣的。專家和門控網絡的結構都為前饋神經網絡,層數可自定義。
(5)特別注意,由計算原理可知,門控網絡的數量取決于任務數量,門控網絡的輸出大小必須等于專家數量。
4.關鍵問題解析
(1)專家網絡的結構一樣,輸入特征也一樣,是否會導致每個專家學習得到的參數趨向于一致,從而失去最終集成的意義?
(a)在網絡參數隨機初始化的情況下,不會出現上述問題。因為數據存在多個視角,只要每一個專家網絡的參數初始化是不一樣的,就會導致每一個專家學習到數據中不同的特征表達。
(2)門控網絡的權重極化問題,即某些專家網絡的權重過大或者國小,導致模型對這些專家網絡的依賴性過高或過低,從而影響模型性能。
(a)使用Dropout:隨機地將一部分神經元地輸出設置為0,以防止模型過度依賴某些神經元,增強模型地泛化能力和魯棒性。
(b)正則化:對門控網絡的參數進行正則化,如添加 L1 或 L2 正則項,限制參數的大小和復雜度,防止模型過擬合,也有助于緩解權重分布極化現象。
5.基于Pytorch的代碼實現
以下代碼中的專家和門控神經網絡皆以一個簡單的線性層代替。
(1)專家神經網絡的實現

(2)門控神經網絡的實現

(3)任務塔網絡的實現

(4)MMoE整體實現

(5)測試運行

參考資料
1、 Ma J , Zhao Z , Yi X , et al. Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts. ACM, 2018.
2、https://mp.weixin.qq.com/s/38tQmvVxngDT0c-QI5B8rg
3、https://blog.csdn.net/u012328159/article/details/123309660
本文轉載自 ??南夏的算法驛站??,作者: 趙南夏

















