楊程,車文剛
(昆明理工大學 信息工程與自動化學院,云南 昆明 650500)
近年來,多任務學習模型由于其可以在一個模型內(nèi)同時學習多個任務,并被證明可以通過學習任務之間的信息共享來提高學習效率[1],被廣泛應用于語音合成[2]、機器翻譯[3]、多線索人臉識別[4]等各大領域。在現(xiàn)實情況中,很多不能或者不方便拆分成多個子問題的任務往往使用多任務學習會有更好的效果。例如在推薦系統(tǒng)中,問題具有高維度性,多任務學習可以從原始數(shù)據(jù)中很好地學到點擊、評論、播放等指標[5]。
多任務學習最常見的兩種方法分為隱藏層的軟共享和硬共享[6]:硬共享將底層參數(shù)統(tǒng)一共享,共享參數(shù)越多,模型過擬合概率越??;目前較為常見的為軟共享,部分參數(shù)共享部分參數(shù)私有,頂層私有自己的參數(shù)。其中MMoE 借鑒了MoE層[7]的思想,采用多個專家網(wǎng)絡學習任務信息,并且通過門控制系統(tǒng)捕獲任務之間的聯(lián)系[8]。當任務之間是松散相關的情況時,容易出現(xiàn)負遷移[9],為了解決負遷移和蹺蹺板現(xiàn)象,漸進式分離提取模型(PLE)[10]引入了多層級專家和門控制網(wǎng)絡,采用漸進分離提取的方法使一部分專家網(wǎng)絡專注于各自任務,一部分專家網(wǎng)絡專注共享信息。
PLE 在解決負遷移和蹺蹺板現(xiàn)象上有著優(yōu)秀的效果。為了解決MMoE 模型中所有專家是共享的,可能帶來噪聲,無法捕捉更復雜的任務關系問題,保留了屬于任務的專家同時還有基于共享的專家。為了使專家之間有交互,增加了額外的網(wǎng)絡層讓專家之間進行交互。而這一做法帶來的代價是復雜的網(wǎng)絡結構和時間消耗,導致模型可能難以或者不能應用在部分資源緊缺的設備上。
為了解決這一問題,提出半漸進式分層提取(Semi-Progressive Layered Extraction,SPLE)模型對模型網(wǎng)絡進行調(diào)整,在保留PLE 特性的情況下對模型的額外網(wǎng)絡層中剪枝任務專家模塊。同時,為了防止任務之間難度差異導致不同任務損失差異過大的情況,采用UWL(Uncertainty to Weigh Loss)思想進行聯(lián)合訓練損失優(yōu)化。對PLE 中每個專家模塊中的超參數(shù)進行調(diào)優(yōu)。最終,通過對比MMoE、PLE、SPLE 在同一數(shù)據(jù)集上的準確率、AUC、MTL 增益、每一個專家層利用率和迭代周期,證實SPLE 在模型輕量化的基礎上保留了PLE 的特性,同時也具有與PLE 差相近的性能及更快的迭代。
相比于MMoE[8]拓展了MoE[6],利用不同的Gate 控制網(wǎng)絡獲得多任務學習中的不同融合權重,以及MRAN[11]采用多頭注意力機制來學習不同的特征集上的表示子空間,PLE[10]從聯(lián)合表示學習和信息路由的角度,提出了漸進分層式提取的方法,明確地分離了任務的特定參數(shù)和共享參數(shù),解決了負遷移問題和蹺蹺板問題。
針對輕量化,有的研究使用AutoML 的方法來探尋更好的輕量化模型:SNR[12](Sub-Network Routing)采用二進制編碼變量連接兩個子網(wǎng)絡,并且采用NSA[13]搜索最佳網(wǎng)絡結構。路由網(wǎng)絡[14]可以通過路由器做出一個路由決定,將一個給定的輸入選擇一個功能模塊來應用,并將輸出結果遞歸給路由器,直到達到一定深度。路由網(wǎng)絡采用協(xié)作式多智能體強化學習(MARL)[15]方法來聯(lián)合訓練路由器和功能模塊。然而這些模型的設計都基于一些特定的且不常見的簡化假設,因此應用范圍不是很廣泛。文獻[14]提出的路由網(wǎng)絡在每個深度中,針對每個任務僅僅選定一個路由器,降低了模型的表達性。這些模型雖然最終有著較為優(yōu)秀的結構,但是從初始結構不斷到獲得最優(yōu)結構的過程需要巨大的開銷進行搜索,并且他們的融合權重不能針對不同的輸入進行更改。
為了保留PLE 中利用先驗知識來學習復雜任務的相關性,避免共享信息對任務信息產(chǎn)生噪聲干擾以及能夠從底層專家層獲取更深層次的任務信息的特性,如圖1 所示,半漸進式分層提取模型保留了共享專家層和任務獨有專家層,進一步學習深層特征的高層專家層以及基于單層前饋網(wǎng)絡的門控制網(wǎng)絡。與之不同的是,刪除掉了高層的任務獨有專家層,深層次的任務信息學習由Tower 層結合共享的專家層學習到的信息進行學習,底層的獨有專家層專注于學習各自的任務信息。同時也保證了能有深層的共享信息被高層共享專家捕捉到。
圖1 半漸進式分離提取模型與漸進式分離提取模型架構對比
由于剪枝了兩個Gate 控制網(wǎng)絡和兩個專家模塊,相比于PLE 模型,模型參數(shù)量減少了26.3%。如圖2 所示,該架構圖是一個雙任務的模型架構,底層由三個專家模塊組成,頂部由兩個Tower 層構成。每一個專家模塊都由多個子網(wǎng)絡構成,每個專家模塊中的子網(wǎng)絡數(shù)量為一個超參數(shù)。具體任務的特征主要由具體任務的專家模塊負責提取特征,而共享的特征由共享專家提取。頂層的每一個Tower 層獲取共享專家學習到的特征以及自己特有的任務專家模塊學習到的特征,即共享專家層的參數(shù)受所有任務影響,而任務獨有的專家模塊的參數(shù)僅受該特定任務影響。
圖2 半漸進式分層模型詳細架構
在該模型中,門控制網(wǎng)絡使得共享專家模塊和任務獨有的專家模塊的輸出進行有選擇性的融合。如圖2中Gate 網(wǎng)絡層所示,門控制網(wǎng)絡是一個使用Softmax 作為激活函數(shù)的單向前饋網(wǎng)絡,所有的輸入會經(jīng)過選擇器選擇出需要的輸入向量進行加權求和。
具體網(wǎng)絡結構可以形式化表示如下:
式中:gk(x)為任務k的控制層網(wǎng)絡的輸出,x表示該門控制網(wǎng)絡接收到的輸入;利用wk(x)計算出針對任務k的每個已選擇的輸入權重向量后與選擇出的向量矩陣Sk(x)相乘,wk(x)作為權重運算函數(shù)。通過對輸入進行線性加權及Softmax 計算權重向量,wk(x)可表示如下:
式中表示任務k獨有的專家模塊中第一個專家網(wǎng)絡的輸出向量。
在SPLE中,保留了一個高層次的共享專家模塊來提取更高級別的共享信息,從而獲取更深層次的語義特征。高層的共享專家模塊采用底層專家模塊加權融合后的信息作為輸入,進行提取、聚合及路由,最終結合任務獨有的專家模塊提取的信息進行融合,交由任務獨有的Tower 模塊進行預測等工作。
在通常多任務模型中,不同任務的數(shù)據(jù)分布和重要性往往都不相同,一般情況下,將不同任務的損失進行加權求和[16]可表示為:
式中:Li為第i個任務中定義的損失函數(shù);wi為每個任務的重要性權重。在這種情況下,對于任務的權重舉證W在梯度下降優(yōu)化時的更新如下:
根據(jù)公式(5),可知W的優(yōu)化受到所有任務損失的影響,除了單個任務的梯度能影響,也可以通過修改任務重要性的權重來影響W的更新速率。
在PLE 中采用的策略為采用一個動態(tài)權重,首先設置一個任務k的初始權重wk,0,然后根據(jù)更新速率γk調(diào)整任務k的損失權重,具體如下:
式中:t表示迭代周期;wk,0和γk為超參數(shù)。
由于存在數(shù)據(jù)噪聲、測量誤差、非最優(yōu)超參數(shù)設置等諸多原因,深度學習模型具有不確定性。UWL[17]思想提出使用概率模型去解決網(wǎng)絡中的不確定性,使多個任務的重要性權重可以自動得到最優(yōu)解。在貝葉斯模型中,存在偶然不確定性和認知不確定性,可以根據(jù)這一理論來建模[18]。偶然不確定性指的是觀測中固有的噪聲造成的不確定性,這一不確定性存在于數(shù)據(jù)中,只能使用提高數(shù)據(jù)精度來消除。偶然不確定性可以分為同方差不確定性和異方差不確定性。異方差不確定性取決于數(shù)據(jù)輸入,并且會被作為最終的預測輸出。同方差不確定性不取決于數(shù)據(jù)輸入,也不是模型輸出,而是一個對所有數(shù)據(jù)保持不變,卻在不同任務之間變化的量,為任務固有的不確定性。因此,UWL 思想將同方差不確定性轉化為不同任務損失之間的權重,模型就可以具有動態(tài)調(diào)整損失的能力。
將同方差不確定性定義為σ,使其作為模型參數(shù)之一,由于已經(jīng)有了預測結果,確定概率分布之后,可以采用極大似然估計的思想求出σ。定義f W(x)為以x作為輸入,權重為W的專家層的一個輸出。由于SPLE在公共數(shù)據(jù)集完成的任務均為分類任務(任務1 為預測收入是否超過5萬,任務2 為預測是否一直未婚),則在f W(x)預測發(fā)生時,實際結果y發(fā)生的概率如下:
引入σ作為一個縮放量到公式(7)中,使得其概率符合玻爾茲曼分布,如下所示:
在公式(8)中,公式(7)中的輸入被σ2進行了縮放,根據(jù)玻爾茲曼分布,這一縮放參數(shù)的大小決定了分布的離散性的變化,并且與其相關性有關,因此適合被用來描述分類任務中的同方差不確定性。將c定義為表示第c個分類,那么公式(8)的最大似然估計如下:
在SPLE 模型中,兩個任務均為分類任務,且聯(lián)合概率為多個概率相乘,那么SPLE 在這兩個任務上的聯(lián)合損失函數(shù)的概率分布如下:
則最終的聯(lián)合損失函數(shù)L(W,σ1,σ2)就為公式(10)的極大似然估計:
公式(12)即為最終的聯(lián)合損失函數(shù)的計算公式。在計算過程中,σ根據(jù)模型預測和真實結果進行自動求解,同時也能自動調(diào)整聯(lián)合損失函數(shù)中,每一個任務的損失對聯(lián)合損失影響的占比。公式(12)中的σ1σ2可以被視為學習不同輸出的損失的相關性權重,而σ1和σ2分別影響著L1(W)和L2(W)在公式(12)中的影響大小。
在神經(jīng)網(wǎng)絡學習中,貝葉斯優(yōu)化算法可以通過找到可能存在最優(yōu)超參數(shù)值點從而有著更少的工作量和更好的效果[19]。在SPLE 這部分的參數(shù)調(diào)優(yōu)中,將主要針對每個模塊中的網(wǎng)絡深度以及3 個任務時高層共享模塊的數(shù)量進行分析對比。
首先定義搜索空間,針對每個模塊中的網(wǎng)絡深度,選擇從1~50 的整數(shù)類型中進行搜索,針對高層共享模塊的數(shù)量,定義1~10 的整數(shù)類型進行搜索。將高精確度作為模型優(yōu)劣的評價指標,由于在算法調(diào)優(yōu)時的判定得分是不斷尋找最低值,因此對精確度進行取負數(shù)即可不斷尋找精確度最高的模型參數(shù)組合。選擇gp_minimize 作為代理函數(shù),進行100 次迭代,最終算得最優(yōu)參數(shù)組合為:共享專家層網(wǎng)絡數(shù)量為1,每個模塊中網(wǎng)絡深度為24。
圖3 為針對專家模塊數(shù)量的參數(shù)expert_num 和每個網(wǎng)絡層的深度參數(shù)depth 的取樣點分布圖,左下角為在對應取值點的得分,顏色越淺表示性能越好,其中紅星為最優(yōu)點。
圖3 專家模塊數(shù)量及網(wǎng)絡層深度取樣分布
可以看到在專家層數(shù)量中,最優(yōu)點集中出現(xiàn)于1 和10 附近,而中間的性能低于其他部位。通過針對網(wǎng)絡模型架構分析和對模型的數(shù)據(jù)集進行分析,一個共享專家層模塊可以解析出全部深層次的信息。在專家數(shù)量不夠多時,隨著專家層網(wǎng)絡的數(shù)量增加,一個專家層只會學到片面的深層次信息,這些信息的總和可能會出現(xiàn)冗余部分或者所有專家模塊學習到的信息總和并不是全部,使得最終的預測準確率下降。而當專家層網(wǎng)絡足夠多時,每個專家層可以在學習時負責不同部分的信息,從而使準確率重新上升。通過分布圖分析,采用單個共享專家模塊不論從模型輕量化的角度還是最終準確率的角度都是最優(yōu)選擇。
為了驗證有效性及公平性,將在MMoE、PLE 同時采用的驗證數(shù)據(jù)集UCI 人口普查-收入數(shù)據(jù)集[20]上進行評估。包括模型剪枝后的AUC、迭代周期平均時間、引入UWL 思想進行聯(lián)合損失運算后的AUC 以及在PLE 中提出的MLT 增益。
該數(shù)據(jù)集是由1994 年人口普查數(shù)據(jù)中提取出來的具有40個特征的299 285條數(shù)據(jù)。為了確保公平,將使用與PLE 和MMoE 模型中相同的任務進行比較。
任務一:預測收入是否超過五萬美元;
任務二:預測這個人是否一直未婚。
通過對10 000 個樣本隨機抽樣計算皮爾遜相關系數(shù)的絕對值為0.176 8。在該數(shù)據(jù)集中有199 523 個數(shù)據(jù)為訓練集,99 762 個數(shù)據(jù)為測試集,在本實驗中隨機抽取49 881 個數(shù)據(jù)作為測試集,剩下的49 881 個數(shù)據(jù)作為驗證集。
在MMoE 模型、PLE 模型、SPLE 模型和單任務模型中,均采用3 層MLP 網(wǎng)絡,使用ReLU 作為激活函數(shù),隱藏層大小為[256,128,64]。為了公平比較,將多級PLE設置為兩級,以此來保持想近似的網(wǎng)絡深度。
模型對比的指標除了任務一和任務二的AUC,同時也有在文獻[10]中提出的MTL 增益。MTL 增益為多任務學習相對于單任務學習在單一任務上的比較,即為該模型在某一特定任務上針對單任務模型的性能。其計算公式如下:
由上可知,MTL 增益越大,多任務模型性能越好。若為負數(shù),則說明多任務模型在該任務上不如單任務模型。單任務、MMoE、PLE 及SPLE 在公共數(shù)據(jù)集上的評估結果見表1。
表1 單任務、MMoE、PLE 及SPLE在公共數(shù)據(jù)集上的評估結果
如表1 所示,SPLE 在任務一中,以0.3%的AUC 的差距,在一個迭代周期內(nèi)縮減時間17.05%。在任務二中,SPLE 在AUC 上低于PLE 模型0.02%,在時間上卻減少18.02%,并且由于剪枝,模型參數(shù)也大規(guī)模減少。然而在實驗中發(fā)現(xiàn),雖然每個迭代周期的時間縮短了,但是達到最佳效果所需要的迭代周期數(shù)量增多了。這也是剪枝帶來的缺點,由于將上層專家層需要提取的特定任務的深層信息交由Tower 層完成,需要學習的周期更長。因此,利用UWL 思想引入聯(lián)合損失判定,更好地學習任務之間關系,優(yōu)化學習速度。
對引入前后SPLE 模型每一個迭代周期的AUC 值變化進行對比,訓練總共分為15 個迭代周期,每個迭代周期內(nèi)進行100 次迭代。PLE、平均加權損失SPLE、動態(tài)聯(lián)合損失SPLE 在公共數(shù)據(jù)集上的評估結果如圖4所示。
圖4 三種模型在公共數(shù)據(jù)集上的評估結果
圖4中,平均加權損失的SPLE 模型即為引入之前的SPLE,其在引入UWL 方法加權的動態(tài)聯(lián)合損失優(yōu)化后,由原來慢于PLE 的收斂速度,以及滯后大約4 個迭代周期達到最優(yōu)AUC,轉變成了損失函數(shù)收斂速度快于PLE 模型,相對于PLE 更快達到最優(yōu)AUC,且如表2所示,最佳AUC及MTL增益也得到了提高,在任務一中,最佳AUC 甚至略微優(yōu)于PLE 模型。
表2 三種模型在公共數(shù)據(jù)集上的評估結果
SPLE 對比PLE 對于共享層的專家網(wǎng)絡模塊進行了剪枝,同時針對聯(lián)合損失優(yōu)化,對不同任務的重要性進行調(diào)整。為明確對比模型的輕量化,在表3 中展示了PLE、SPLE 的參數(shù)量及FLOPs(Floating Point Operations),即為前向傳播時所需計算力。如表3 所示,SPLE 在參數(shù)量上相比PLE 減少了約26.3%。由于在對任務獨有的專家模塊進行剪枝時,底層和頂層的連接相較于PLE,在底層時并非全連接,且省去中間層的計算,因此SPLE 所需計算量均小于PLE 模型。SPLE 在所需計算力上比PLE 減少了約13.9%。
表3 PLE 和SPLE 在模型規(guī)模上的評估結果
本文提出了一種輕量化的半漸進式分層多任務模型,該模型在剪枝時既保留了漸進式分層模型分離共享任務和特定任務參數(shù)、分層提取任務信息的特點,也減少了參數(shù)量。針對剪枝后性能及準確率的降低,本文使用UWL 思想引入動態(tài)聯(lián)合損失優(yōu)化,并且針對超參數(shù)調(diào)優(yōu)使得SPLE 模型有著與PLE 模型相當?shù)男阅?。文獻[21]提出,LSTM 和GRU 等帶有門控制的網(wǎng)絡可能有著比普通RNN 更好的性能,因此,針對專家網(wǎng)絡的選擇有可能提升SPLE 的性能效果,并且門控制網(wǎng)絡層針對專家模塊的學習類似于注意力機制,后續(xù)可以根據(jù)注意力機制理論進一步改進和優(yōu)化門控制網(wǎng)絡。
注:本文通訊作者為車文剛。