如何使用 Mixture of Experts 建立多任務學習框架

Rene Wang
翻滾吧!駭客女孩!
8 min readApr 15, 2020

在 《Youtube 如何推薦你下一個影片?》[1] 一文介紹了 Google 如何利用一個多任務學習(Multi-tasking) 的學習演算法,建造一個影片的推薦系統。所使用的架構是 wide (shallow tower) and deep (Multi-gate Mixture of Experts, MMoE) 。在訓練目標上則採用多個 objectives,分別是使用者的點閱率(engagement objective) 和 滿意度(satisfaction objective)。點擊率和欣賞影片的時間都屬於 engagement objectives。而按讚或移除則屬於 satisfaction objectives。

為了達成多 objectives 的多任務學習,在 deep 的架構上,過往都會在底層使用一到多個 hidden layers 作為任務之間共享的特徵學習。而在共享 hidden layers 上方則是有多個如「塔」狀的獨立小型網路(tower networks),主要是負責學習 objective-specific 的獨有特徵,以供該任務使用。這樣的架構在多任務學習中被稱為 Hard Sharing

Hard Sharing or Soft Sharing

傳統的多任務學習擁有兩種做法來鼓勵演算法學習相關任務之間相似的特徵表現方法(representation),他們分別是 Hard Sharing (下圖左) 和 Soft Sharing [2]。

(左):Hard Sharing (右):Soft Sharing

Hard sharing 又可稱為 Shared Bottom 的方法,因為這個方法假設不同的任務之間共享一些特徵的表示方法。而在實現上則是單純的共享網絡底部的 hidden layers 。這個方法主要是透過相似任務共享特徵的假設來減低參數的數目。Soft sharing 則是對每一個任務都建立一個模型,最後再透過 regularization 的方式達成共享參數的假設。

Hard sharing 的方法因為容易實現,所以廣泛地在多任務學習的框架中。但是,這個方法在任務 objective 相關性太遠時表現不佳。為了解決這個問題, 該論文作者們採用 Multi-gate Mixture of Experts (MMoE)的架構來進行多任務學習框架。

Multi-gate Mixture of Experts (MMoE

多任務學習框架,會同時訓練多個任務的 objectives,使用 Mixture of Experts (MoE) 架構可以看做邀請不同領域的專家,針對其專精的領域,解決部分問題。MoE 並不是一個新穎的觀念,事實上多個分類演算法可以分別「扮演」專家,如:SVM , Gaussin / Dirichlet Process 和 Deep Network 等等非同質性高的演算法。

MoE 也可以當作一個 ensemble 方法,關於如何計算每個專家的貢獻(mixture of experts)並做出最後的預測,MoE 則是靠著閘門( gate) 來計算每個專家的預測權重。這些不可為負值的權重必須符合總和為一的拘束(constraint),才能相互制衡。這個閘門的實作大多數是一個 softmax。

為了能夠將 MoE 納入深度學習的架構中,[3] 率先提出 Deep Mixture of Expert 的架構,在這個架構中,許多標準的 MoE layer (下圖左)被一層一層的往上堆疊。除了輸入,每一層的 MoE 都使用上一層的 MoE 輸出,也就是經過閘門函式 (下圖的 g 函式)計算出的權重輸出為輸入。

上圖分別為標準的 MoE (左)和堆疊兩層的標準 MoE 形成的 Deep MoE(右)。左圖可見輸入會同時會餵送給每一個專家,而每一個專家是一個使用 ReLU 作為 activation 的 feedforward layer。每一個專家的輸出都會乘上相對應的閘門值,相加後輸出。 閘門函式所學的不只是每個專家的加權貢獻,更要決定花費多少比例來引入共享特徵,或是學習獨立特徵。

但是,簡單堆疊的深度 MoE 有一個潛在問題,那就是每一個專家缺乏深度結構而難以產生較為複雜的特徵表現。

所以在 [5] 中提出一個 MMoE 改進模型。在這個版本中,首先使用深度 feed forward network 作為單一專家網路,每一個專家各自學習每個任務獨特的特徵表現,並由閘門函式來決定他們對於最後輸出的貢獻。在下圖 (b) 的模型中,僅僅使用一個共享閘門來計算兩個任務如何使用共享特徵為輸入,以及如何給予每一個專家不同的權重值。而在閘門的作用下,共享的閘門權重也會產生任務專有的部份 activation。

(左)一個 shared-bottom 結構 。(中)只有一個 gate 的 MoE。(右)具有兩個 gates 的 MMoE

為了能更進一步學習不同的任務,[5] 則是引入了multi-gating network 的架構。可以看到上圖(c),gating network 使用兩個閘門,每一個都針對其中一個任務來學習。根據 [5] 針對和成資料的研究結果,發現任務較不相似(cosine similarity = 0.5)的狀況下,multi-gating network 表現較佳。

Summary

我們發現,Google 在此所提出的推薦系統,對於多任務的學習方法是採用 Soft sharing 的方式來達成。在實現上則是使用 MMoE 架構。MMoE 的架構使用一到多個共享的 hidden layers 來學習相似任務之間的共同特徵。至於對於不相似任務,MMoE 則是在共享層上建立數個非共享的專家網路,並針對每一個任務使用了一個閘門(gating network)。這個閘門會隨著 objective 的不同調整權重輸出。[1] 所使用的 MMoE 的架構與 Hard sharing 架構的不同,可以見下圖。

(左):Hard Sharing (右):MMoE

Wide and Deep

Wide and deep 架構是一個用來解決 Ranking 和 Recommender system 等等問題的架構。這些系統所使用的特徵都擁有許多特徵值且數目稀疏,如多屬於需要處理 encoding 方式的 categorical 特徵。為了能達到記憶較多的特徵值,分類器的架構必須要 wide,才能有較多的神經元記住所有特徵值。同時,為了能夠學習較抽象但對分類有幫助的特徵,則需要較深的架構,來 generalize 較為上層的特徵,容納同一類標籤下的實例變異。

而在這個推薦系統的 wide 架構,主要是用來減輕推薦系統的選取偏好誤差(selection bias)。這個選取偏好誤差,來自於使用者對於推薦清單中的前幾名有較多的機會選取到,因而產生較強的偏好誤差。為了能解決這個問題,作者提出了 “shallow tower”架構。

“Shallow tower”是一個很簡單的線性模型,使用特徵為影片被點擊時的在推薦清單上的位置等簡單的特徵。該文章的實驗結果指出,” shallow tower”結構有助於大幅降低選取誤差偏好,而增加使用者點閱的時間。

若想知道更詳盡的內容,請到參考資料中所提供的連結。

參考資料:

[1] How YouTube is Recommending Your Next Video (英):
[2] An Overview of Multi-Task Learning in Deep Neural Networks (英)
[3] Learning Factored Representations in a Deep Mixture of Experts (英)
[4] Otrageously Large Neural Networks the Sparsely Gated Mixture-of-Eeperts Layer (英)
[5] Modeling Task Relationships in Multi-task Learning with
Multi-gate Mixture-of-Experts (英)

--

--