日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DNN中多任务学习概述

發(fā)布時間:2025/3/8 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DNN中多任务学习概述 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

為什么大公司搜索推薦都用CTR/CVR Cotrain的框架?

一元@煉丹筆記

我們平時做項目/競賽的時候,一般都是單指標優(yōu)化的問題,很多時候我們模型的評估指標也是單個指標,例如AUC, GAUC, FP等等。而我們在做此類問題的時候都是盡可能去直接優(yōu)化這些指標,如果不行就會嘗試著看能不能設計某種近似的優(yōu)化函數(shù)來對其優(yōu)化,最后再使用一堆模型的集成來達到我們的目的,一般這么做就可以帶來非常好的效果。

但是很奇怪的是,我進入公司做搜索推薦時,和很多大廠搞搜索推薦的朋友交流發(fā)現(xiàn),阿里,頭條,騰訊,百度,京東的朋友很多情況下都是用的CTR/CVR的Cotrain的深度大模型,而不會單獨去直接優(yōu)化某個指標。舉個簡單的例子來說,

有個任務的優(yōu)化指標是提升曝光到購買的預測準確性,如果沒有任何參考,我們一般就會直接用購買的標簽作為1,未被購買的標簽作為0,然后做二分類。

但是很多時候大家并不會這么做,大多數(shù)時候都會設計一個CTR和CVR進行Cotrain的模型進行模型的訓練與預測,而且最終的效果往往也會比上面的效果要好很多。這個時候,很多朋友和我一樣都會十分好奇,究竟為什么這么做的效果會更好呢?

二分類的做法本身沒有任何問題,但這么做我們會忽略很多可能給我們模型帶來進一步提升的信息。這些信息很多來自于相關的任務,通過共享相關任務的表示,我們可以使我們的模型在原始任務上做的更好,這種方法我們稱之為多任務學習(MTL),除了上面說的搜索推薦領域,多任務學習還經(jīng)常出現(xiàn)在自然語言處理,計算機視覺等領域。

Rich Caruana把MTL描述為:MTL improves generalization by leveraging the domain-specific information contained in the training signals of related tasks.

動機:啟發(fā)式理解

為多任務學習的動機是什么呢?

  • 生物上:我們可以把MTL是由人類學習啟發(fā)的,對于學習新的任務時,我們通過學習相關任務獲得的知識來輔助我們進行新任務的學習。
  • 教育學上:我們先學習一些任務然后獲得必要的技能來掌握更多復雜的技術。

所以我們可以把多任務學習看作是歸納式遷移。歸納式遷移通過引入一個歸納式的bias來提升我們模型的效果。例如我們最常見的L1正則,可以使我們獲得一個系數(shù)的解。在MTL中, 歸納式的bias是由輔助任務提供的。

兩種經(jīng)典MTL學習方式

到目前為止,Deep Learning中最常見的兩種MTL方法是Hard parameter sharing 和Soft parameter sharing。

Hard parameter sharing

Hard parameter sharing是最常見的,它對所有的任務都共享某些隱藏層,比如ESMM算法中共享Embedding層等。Hard parameter sharing可以大大降低過擬合的風險,實際上,共享參數(shù)的過擬合風險是order N的。其中N是任務的個數(shù)。這也較易理解,因為我們的任務越多,我們模型就需要尋找到某一種表示能盡可能捕捉所有任務的信息, 所以學習到的信息會更加通用,從而降低我們模型過擬合的風險。

Soft parameter sharing

在Soft parameter sharing中,每個任務都有自己對應的參數(shù),模型參數(shù)之間的距離被用來鼓勵不同任務之間參數(shù)是相似的,例如,我們可以加入范數(shù)用于L2正則。DNN中的Soft parameter sharing的很多約束都受正則技術的啟發(fā)。

為什么MTL是有效的呢?

在上面我們給出了MTL的啟發(fā)式解釋,但是還是不夠解釋MTL的有效性。此處我們更加深入的分析潛在的機制。我們先假設我們有兩個相關的任務A和B,他們共享一個相同的淺層表示F。下面我們再給出幾種解釋。

隱式數(shù)據(jù)擴充(Implicit data augmentation)

MTL很高效的增加我們用于模型訓練的樣本的大小,因為所有的任務都是帶有一些噪音的,所以如果我們只在單個任務上進行訓練,那么我們的模型會帶有較大的噪音,尤其是當數(shù)據(jù)較臟的時候;而我們如果是在多個任務上進行學習訓練,我們最終學出來的中間表示將會具有更好的泛化性。

注意力集中(Attention focusing)

如果一個任務是非常noisy的或者數(shù)據(jù)是高維并且受限的,那么模型對于模型區(qū)分相關和不相關的特征將會較為困難。MTL可以利用多個任務提供的額外的信息找出相關和不相關的特征。

竊取(Eavesdropping)

一些特征G對于某些特定任務是非常易于學習的,但是對于另外一個任務A可能卻很難學,而這種難學可能是由于特征和任務A的關系較為復雜等原因造成的,通過多任務學習,我們可以令任務B去學習,而最簡單的方式就是通過hints去做這件事。

偏差(Bias)表示

MTL使模型偏向于其他任務也喜歡的表示。這也將有助于模型在未來推廣到新的任務,因為假設空間在足夠多的訓練任務中表現(xiàn)良好,只要它們來自相同的環(huán)境,對于學習新任務也會有很好的效果。

正則

MTL通過引入一個歸納偏差起到正則的作用。因此,它降低了過擬合的風險以及模型的Rademacher復雜性,即其擬合隨機噪聲的能力。

非神經(jīng)網(wǎng)絡中的MTL

為了更好地理解MTL在DNN中的任務,我們看看MTL在現(xiàn)有工作中的情況,特殊地,此處主要討論MTL兩種流行性的說法:

  • 通過范數(shù)正則化實現(xiàn)任務間的稀疏性;
  • 對任務之間的關系進行建模;

文獻中的許多MTL方法處理都是同質的(homogenous)設定:它們假設所有任務都與單個輸出相關聯(lián),例如,多個類的MNIST數(shù)據(jù)集通常被轉換為10個二進制分類任務。最近的方法處理更現(xiàn)實的、異構的環(huán)境,其中每個任務對應于一組唯一的輸出。

Block稀疏正則化(Block-sparse regularization)

許多模型關于參數(shù)做了一些稀疏的假設,很多工作假設所有的模型共享一個小的特征集合,也就是說只有部分特征是被所有任務使用,所以有些工作將L1范數(shù)用于MTL設定里面,當然也可以施加其他的約束。

學習任務之間的關系

在多任務學習(MTL)中,因為共享的特征層是在多個任務中共享的,所以這些特征需要盡可能在多個任務中都有效。之前有很多多任務學習都假設這些任務之間是非常相關的。但是,我們并不能保證每個任務都強相關,而這種情況下, 在無關的任務中共享信息可能會對我們模型的性能帶來不必要的影響,這也稱之為negative transfer。

所以我們需要利用先驗知識來輔助我們判斷任務之間是否相關。這個時候最簡單的可以想到的就是對各個任務進行聚類,而聚類的任務約束最簡單的就是類間與類內距離的計算等,有興趣的可以閱讀相關的論文。

模型中應該共享什么?

在上面的分析中,我們從啟發(fā)式的角度(動機),機器學習的角度(正則)以及一些經(jīng)驗中分析來了模型共享的問題。那么我們改在模型中共享什么呢?

在之前Deep Learning的MTL工作中,我們都是預先定義哪些層用作共享,這么做經(jīng)常會導致模型沒法泛化到其他的任務中。Hard parameter共享是1996年Caruana提出的,一種沿用了20多年,這種方法確實在很多任務中取得了非常好的效果,但是如果任務之間的關系不強,效果往往不盡如人意。因此,最近的方法著眼于學習共享什么,并且通常優(yōu)于硬參數(shù)共享。此外,賦予我們的模型學習任務層次結構的能力是有幫助的,特別是在需要不同粒度的情況下。如何學習任務之間的交互也是非常有價值的。

輔助任務

除了共享層的設計,MTL還需要設計Cotrain使用的損失函數(shù)。MTL如果是在本身需求就是多任務的問題中沒有任何問題,但如果我們的原先的任務就是單任務的,那么我們如何尋找一個合適的輔助任務并利用多任務學習來從中獲益呢?

一些案例

下面的案例大多是成功的,所以可以從中窺探一些輔助任務設計的方式技巧。

1. Related task

將相關任務作為MTL的輔助任務。Caruana(1998)將預測不同道路特征的任務作為輔助任務,用于預測自動駕駛汽車的轉向方向;使用頭部姿勢估計和面部屬性推斷作為面部路標檢測的輔助任務;聯(lián)合學習查詢分類和web搜索;Girshick(2015)聯(lián)合預測圖像中對象的類別和坐標等等都是經(jīng)典的案例。

2. Hints

MTL可以用來學習原始任務并不能非常好學習的特征,一種有效的方案就是使用hints,也就是說,使用輔助任務來對該特征進行預測。這種策略的成功案例有:在NLP中,預測一個輸入的句子是否包含有正或者負的語義單詞來作為語義分析任務的輔助任務。

3. Representation learning

MTL中輔助任務的目標是使模型能夠學習對主任務共享或有幫助的表示。到目前為止討論的所有輔助任務都是隱式的:它們與主任務密切相關,學習它們可能會使模型學習有益的表示。更明確的建模是可能的,例如,通過使用已知的任務,使模型能夠學習可遷移的表示。Cheng等人采用的語言建模目標。

4. Focusing Attention

同樣,輔助任務可以用于將注意力集中在網(wǎng)絡通常忽略的圖像的部分上。例如,對于學習駕駛(Caruana,1998),單個任務模型通常會忽略車道標記,因為這些標記僅構成圖像的一小部分,并不總是存在的。然而,作為輔助任務的車道標線預測,迫使模型學習表示它們;然后,該知識也可以用于主要任務。類似地,對于人臉識別,人們可能會學習預測面部標志點的位置作為輔助任務,因為這些通常是與眾不同的。

5. 使用未來預測現(xiàn)在

在許多情況下,有些功能只有在預測完成后才可用。例如,對于自動駕駛汽車,一旦汽車經(jīng)過障礙物和車道標線,就可以進行更精確的測量。Caruana(1998)也給出了肺炎預測的例子,之后將獲得更多的醫(yī)學試驗結果。對于這些示例,附加數(shù)據(jù)不能用作特性,因為它在運行時不能作為輸入使用。然而,它也可以作為輔助任務,在訓練期間向模型傳授附加知識。

6. Adversarial

通常,相關任務的標記數(shù)據(jù)不可用。然而,在某些情況下,我們可以獲得一個與我們想要實現(xiàn)的相反的任務。這些數(shù)據(jù)可以利用對抗性損失,它不尋求最小化,而是最大化使用梯度反轉層的訓練誤差。這種設置最近在域適應(domain adaptation)方面取得了成功。在這種情況下,對抗性任務是預測輸入的域;通過反轉對抗性任務的梯度,對抗性任務的損失最大化,這對主任務是有利的,因為它迫使模型學習無法區(qū)分域的表示。

什么輔助任務是有幫助的?

在實踐中,我們很難判定什么輔助任務可以帶來幫助。尋找一個合理的有幫助的輔助任務往往需要基于假設:我們的輔助任務和我們的主要任務在某種程度上是相關的,它對于我們對主要任務的預測是有幫助的。

可是兩個任務怎么算是相似的或者相關的呢?到目前為止還沒有一個十分明確的定義。

  • Caruana(1998)將兩個任務定義為相似,如果它們使用相同的特征來做出決策。
  • Baxter(2000)僅從理論上論證了相關任務共享一個共同的最優(yōu)假設類,即具有相同的歸納偏差。
  • Xue等人(2007)指出,如果兩個任務的分類邊界,即參數(shù)向量接近,則兩個任務是相似的。
  • ...

盡管在理解任務相關性方面取得了早期的理論進展,但在這一目標方面并沒有取得太大進展。任務相似性不是二分類問題,而是存在于一個頻譜上。相似的任務越多,對MTL的幫助就越大,而相似性越小的任務對MTL的幫助就越小。

允許我們的模型學習每個任務共享什么可以讓我們暫時避免理論的缺乏,甚至可以更好地利用相關性較低的任務。然而,我們還需要在多任務學習方面發(fā)展一個更原則性的任務相似性概念,以便知道我們應該選擇哪些任務。

一些研究也發(fā)現(xiàn),對于NLP中的序列標記問題,具有緊湊和均勻的標簽分布的輔助任務更加好,這一點我們已在實驗中證實。此外,研究發(fā)現(xiàn),對于那些在輔助任務不穩(wěn)定的情況下快速穩(wěn)定下來的主要任務,收益更大。

然而,到目前為止,這些實驗的范圍是有限的,而最近的研究結果只是為深入理解神經(jīng)網(wǎng)絡中的多任務學習提供了一條線索。

小結

因為多任務學習(MTL)目前越加流行, 那么為什么多任務學習是有效的?本文從啟發(fā)式的角度以及5種不同的角度對其進行來分析。而MTL在Deep的框架種核心需要考慮兩點,一個是共享層的設計,一個是輔助loss的設計,而上面也給出了6種不同的成功案例,都非常值得建議。

雖然我們說了這么多,但其實我們對于任務的理解,包括相似性,關系,層次以及MTL的益處仍然是受限的,更多的是基于一種啟發(fā)式的理解,我們還需要更為深刻的理解。

參考文獻

  • ruder.io/multi-task/
  • An Overview of Multi-Task Learning in Deep Neural Networks
  • 揭秘為什么大公司搜索推薦都用CTR/CVR Cotrain的框架
  • 更多干貨,請關注公眾號:煉丹筆記

    總結

    以上是生活随笔為你收集整理的DNN中多任务学习概述的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。