首頁  >  文章  >  科技週邊  >  淘寶個人化推薦中自適應與無監督的多場景模型建模實踐

淘寶個人化推薦中自適應與無監督的多場景模型建模實踐

王林
王林轉載
2023-04-12 21:28:041271瀏覽

淘寶個人化推薦中自適應與無監督的多場景模型建模實踐

本文將分享淘寶個人化推薦場景中關於自適應和無監督的多場景建模的思考與實踐。這項工作發表在2022年CIKM(論文題目: Scenario-Adaptive and Self-Supervised Model for Multi-Scenario Personalized Recommendation)。文中將介紹多場景建模是如何細粒度地刻畫全局場景和單場景的遷移關係來實現領域自適應,以及如何在多場景建模中引入無監督數據,還將介紹多場景建模在推薦召回階段的落地實踐。

一、背景介紹和方案動機

#首先介紹多場景建模的業務背景、建模動機以及方案選型。本文將聚焦於推薦系統的多情境建模問題,這也是目前各個推薦系統普遍存在且亟待解決的問題。具體圍繞 5 個問題進行介紹。

淘寶個人化推薦中自適應與無監督的多場景模型建模實踐

1、問題一:什麼是多場景

可以從業務視角和模型視角分別解釋。 從業務視角來看,「場景」可以簡單地理解為推薦平台上不同的推薦入口或推薦承載頁面。舉例來說,例如在廣告領域中,相同的廣告可以在不同的媒體端進行投放,同時又可以對應不同的投放形式,例如資訊流形式的廣告,或是開螢幕廣告。在電商領域中,也會有非常豐富的推薦投放頁面,以淘寶為例,有首頁猜你喜歡的商品推薦界面、購物車內的推薦場景以及商品詳情頁上的相關推薦等場景。在內容推薦領域,例如我們的實際業務 -- 淘寶逛逛,推薦頁麵包含了一跳的雙列展示場景,以及點擊進入二跳後上下滑的沉浸式的無盡流的推薦等形式。在這些例子當中,每一個承載的頁面都可以作為一個場景,而同樣一個推薦平台也會有多種推薦場景,呈現出多場景的特色。

從模型建模的角度來看,多場景問題可以簡單的定義為共享相同的特徵空間和 label 空間,但是資料分佈不同的多個資料集合。每一個推薦場景裡記錄的資料都可以構成對應的資料集合,儘管每個資料集合有不同的來源,但是他們的特徵體係以及 label 空間是一致的。

2、問題二:多場景的特點

第一點,流量重疊,從用戶的角度出發,對於同一個用戶,他在一個推薦產品或一個推薦系統中是可以存取到不同的場景的,並且在多個場景中會留下相應的瀏覽、點擊等一些互動行為。

第二點,供給重疊,不管是廣告、商品或內容的投放,都可以投放到不同場景並在不同場景展現。

第三點,場景間的分佈差異,從行為模式上,同一個使用者訪問了多個不同的場景,而該使用者在場景當中的行為可能是不一樣的;同樣的,從供給的角度來看,對於同一個廣告、商品或內容,它在不同的場景上面的投放所展現出的曝光錶現以及互動表現也是不一樣的。因此在資料分佈上,不同場景之間是存在差異的。因此, 我們現在面臨的多場景推薦問題,集中體現了對場景共性和特性的刻畫:使用者可能具有可延續的興趣,但在不同場景下的表現形式可能是不同的。

第四點,場景間的特徵空間以及目標是一致的,不同場景之間更多反映的是在資料分佈上的差異,而在特徵體系上其實是相對一致的。另外,場景間的 label 空間是一樣的,也就是說在多個場景之間建模的任務其實是相同的。例如在商品場景上建模點擊的任務,或是在內容場景上建模完播或是長播等類型的任務。

3、問題三:多場景建模的目標

結合具體的業務背景,我們希望透過多場景問題的建模來重點實現以下兩方面的目標。

第一個是在效果上的目標,重點是優化資料稀疏的問題。單一推薦場景通常面臨使用者行為資料較為稀疏的問題,而這種現像在一些小場景或新場景上表現得尤其明顯。多場景問題其中一個重要目標就是希望能夠透過多個場景之間的資訊共享去緩解資料稀疏的問題,提升所有場景的業務指標。

第二個是在迭代及維運成本上的目標,傳統的最佳化方式是針對每一個場景分配專門的人員去維護並優化獨立的模型,而當一些新的場景存取時,可能又需要重複整個接入流程以及模型訓練過程。這樣就相當於所有的人員分配、模型部署工作以及維護成本都是和場景的數量呈正相關的,這會導致整個維護成本以及迭代成本相對較高。

從實際成本上考慮,我們希望能夠建立統一的一套演算法框架,同時服務到各個場景中,並且能夠支援新場景的快速接入,這是我們想透過多場景建模達到的另一個目標。

另外要強調的是,多場景問題和目前大家已知的多目標以及跨域問題是有區別的。多場景問題重點體現在共享相同的特徵體系,擁有多個不同的資料來源,並且有相同的目標。多目標是針對同一個資料來源有多個不同的最佳化目標。而跨域問題通常是分成一個來源域和一個目標域,一般是假設源域的資料量和效果都是較優的,然後透過源域來輔助提升目標域的效果。而多場景問題裡每個場景並沒有優劣關係,建模目標是希望提升所有場景的效果。

4、問題四:多場景問題的相關解決方案

在實際應用落地的前期,針對這種多場景問題的建模我們對目前業界已有的方案進行了簡單的分類,大致分成以下四種類型。

淘寶個人化推薦中自適應與無監督的多場景模型建模實踐

第一種是最直觀的,也是目前許多業務實踐落地選用的一個方案,即針對每個單獨的場景,採用這些場景各自的資料去分別訓練單獨的模型,然後在上線部署以及預估時,每個場景會有單獨的模型。這種方式可以在不同場景下選擇目前業界已有的模型結構來進行建模。

當然這種方案也存在一些不足之處,主要集中在以下幾點,第一點就是這種方式不能很好地解決單場景的資料稀疏問題,這是因為無法利用到同類型的其他場景的特徵資訊補充,尤其在一些資料量比較小,或是行為資料比較稀疏的場景上,資料稀疏問題更為突出。第二點先前提到,這種單一場景單一模型的建模方式在模型維護和迭代成本方面,人力和資源的消耗都比較高。第三點就是當業務上有一些新場景存取時,也會有成本較高的問題。

既然單場景單模型的方式有樣本稀疏的問題,那麼第二種解決方案就是把所有場景的樣本資料混合,用混合資料訓練一個模型,然後將同一個模型部署到所有場景上。這種方式可以緩解第一類方案中的兩個問題,因為這個方案用到了所有場景的樣本,並且所有的場景共用同一個模型。然而它的缺點體現在,這種比較粗暴的資料樣本混合訓練破壞了各個場景之間自身的資料分佈,會引入一些雜訊。另外,整體的模型效果可能會被其中某幾個大場景的資料所主導,進而影響到一些小場景的效果。

第三類解決方案是採用兩階段的訓練方式,也就是先把所有的場景的樣本進行混合訓練,訓練一個base 模型,然後再用每個場景各自獨立的樣本對原來的base 模型進行場景內微調。在模型的部署和預估上,同樣是每個場景用各自場景資料微調之後的模型進行上線和預估。這種方式的缺點是每個場景需要單獨部署自己的模型。另外這種直接的預訓練加微調的方式,也沒有很好的去建模場景和場景之間的關聯關係。 

最後一類是目前業界主流的用來進行多場景建模的方式,透過借鑒多任務的學習架構,在模型結構上考慮各個場景的資料來進行聯合建模,並且透過模型結構的設計來刻畫場景之間的共通性表達以及差異性的表達。近兩年在業界有比較多的嘗試和落地,例如SAR-Net 透過類似MMOE 的方式進行訓練,STAR 則透過建構這種全域共享的網絡以及每個場景特有的網絡,透過模型參數之間矩陣映射的方式來實現這種場景差異性的刻畫,以及其它通過動態參數網絡的方式來刻畫這種場景差異性的一些工作。

考慮到前三類方法的不足,我們選擇了基於聯合訓練的方式來展開後續工作。

5、問題五:實際業務中多場景建模面臨的挑戰

淘寶個人化推薦中自適應與無監督的多場景模型建模實踐

##而在我們實際的業務落地過程中,對於這種透過統一的模型來進行多場景的聯合建模,我們也面臨著一些更具體的挑戰,主要體現在以下幾個方面。 挑戰一:

#我們採用聯合建模的方式,是希望能充分利用所有場景的信息來解決單場景的資料稀疏問題,其本質是希望把其他場景的有效資訊遷移到指定場景中,儘管前面提到的一些方法透過參數矩陣運算或動態參數網路等方式來刻畫場景的共通點和差異,但這些變換方式是相對隱性的,無法可解釋地量化其他場景是否向指定場景遷移了訊息,以及遷移了多少資訊。因此, 如何實現精細化的有效場景資訊遷移,是我們面臨的第一個挑戰。簡單來說就是,怎麼來建模是否要遷移訊息,以及遷移多少訊息。 挑戰二:

我們在模型訓練的時候主要還是基於使用者互動行為,例如商品點擊或者視訊完播這樣的正回饋訊號來建構正樣本,也就是在有標籤的樣本資料上進行訓練,這對於一些行為較少的場景會存在比較嚴重的資料稀疏問題。如果我們能夠借助一些無監督的任務,將訓練資料從有標籤樣本空間擴展到無標籤樣本空間,將有助於緩解資料稀疏的問題。

挑戰三:

淘寶個人化推薦中自適應與無監督的多場景模型建模實踐#我們都知道整個建議連結分為召回、排序等幾個核心階段。在前期的研究中,我們發現針對多情境問題的共同建模,主要都是集中在了排序階段,包括前面列出的一些模型,基本上都是排序的模型。而召回作為整個推薦連結的第一階段,面對的候選規模和檢索方式和排序是有很大差異的。因此,如何把多場景聯合建模如何在召回階段進行落地也是我們面臨的挑戰。

二、場景自適應與無監督的多場景模型(SASS)

######下面介紹我們在實際業務落地時的模型方案,這個模型簡稱為SASS。這個方案主要聚焦在三個核心關鍵字,第一個是場景的自適應遷移(Scenario-Adaptive),第二個是無監督(Self-Supervised),第三個是針對召回任務的落地探索。 ##################################整體的模型框架包含了兩個階段,一個是預訓練任務,另一個是微調任務。其中階段一是在無標籤的樣本集合上建構一個無監督的預訓練任務,透過對比學習來建模場景和場景之間的關係。另外,因為整個模型是在召回階段落地,需要對 user 側和 item 側進行獨立建模,因此在 user 側和 item 側我們進行了對稱的結構設計。 ##########

第二個階段是微調任務,會在第一階段的基礎上進行模型結構的複用,包括載入第一階段預先訓練的 embedding 和網路結構參數。此外,第二階段是在有標籤的樣本空間上訓練一個回想的任務,然後輸出 user 側和 item 側的表徵向量。接下來具體介紹一下這兩個階段。

1、階段一:預訓練任務

淘寶個人化推薦中自適應與無監督的多場景模型建模實踐

首先,在第一個階段的預訓練任務中,我們建構一個場景和場景之間的對比學習的無監督任務。如圖右上角部分所示,大家應該對對比學習的經典訓練範式都比較熟悉,同一個物件x透過兩種不同的資料增強的方式得到兩個不同的特徵集合,然後透過特徵的抽取網絡及映射網絡,最終得到同一個物件的兩個不同的向量表達,隨後就可以透過對比學習的度量loss 來拉近這兩個向量之間的表徵距離,以此來實現無監督的預訓練任務。

在對比學習思維的啟發下,我們將多場景建模中場景和場景之間的對齊表達和對比學習的預訓練任務進行了結合。前面提到了同一個使用者可能會存取多個不同的場景,並且在不同的場景中有不同的互動行為,並留下一些和場景相關的統計資料。因此我們可以把這種使用者在不同場景上面的行為差異視為一種天然的資料增強的方式,同一個使用者的興趣有延續性,但是他在不同的場景之間的表達可能存在一定的差別。然後我們在此基礎上建構一個對比學習的無監督的任務。

從具體的模型看,如圖左側所示, 我們對不同的場景會建構一個統一的特徵體系, 但特徵的具體取值是和場景對應的,例如我們把使用者的行為序列分場景拆開,使用者在各自場景有對應的興趣偏好等統計特徵。透過這樣的分割方式,同一用戶有場景相關的多個不同的特徵值集合。例如圖中同一個使用者在場景a 和場景b 的特徵,然後透過一個統一的表徵網絡(這個表徵網絡後面會介紹),我們可以得到同一用戶在不同場景各自的表徵向量,最後透過對比學習的loss來拉近兩者的度量距離。

剛才說的是 user 側的訓練方式,在召回任務裡 user 側和 item 側通常都是各自獨立建模的。因此 item 側也採用對稱的結構和任務來訓練,而 user 側和 item 側是共用相同的 embedding 層的。具體來說,對於同一個item,我們把item 側的特徵取值也分場景分開開,通過item 側的表徵網絡後,得到每個場景各自的向量表達,然後採用相同的對比學習loss 進行訓練。

在樣本建構的時候我們有個特殊處理是,一個使用者造訪的場景可能大於2 個,因此在建構對比學習的訓練任務的時候,我們會對使用者所造訪的場景兩兩組合來構造出多條訓練樣本。同樣在 item 側也是透過這種兩種組合的方式來建構出多個樣本。

在具體的對比學習任務上,我們沿用了 InfoNCE 的 loss 形式來進行訓練。

我們透過建模場景和場景之間對比學習的任務來實現多個場景之間對於無標籤資料的預訓練,接下來介紹整個模型架構裡面比較重要的表徵網路的設計細節。

淘寶個人化推薦中自適應與無監督的多場景模型建模實踐

#模型中場景表徵網路是一個多層的、場景的自適應的遷移網路。首先從整體模型結構上,在模型的 embedding 層是共享參數的。而這個表徵網絡從整體上可以分為幾個組成部分,第一個是全場景共享的網絡,也就是圖中模型左側的藍色部分,這裡的全局共享網絡是所有場景的樣本都會經過這裡進行訓練,可以看作是對user 側或item 側所有的場景樣本混合進行訓練的表徵結構。

#

第二部分是每個場景各自特有的網路結構,也就是圖中每個場景對應的灰色部分。每個場景對應的樣本經過對應的網路來進行訓練,由於每個場景的網路層參數是分開的,這種訓練及表徵就可以很好地刻畫每個場景之間各自分佈的差異性。另外在圖中左下角部分,我們也引進了一個輔助的 bias 網路。這個 bias 網路的輸入包括場景 id 以及某些場景所特有的特徵,還有一些上下文的特徵。這樣可以在共有體系的基礎上進一步刻畫場景自身上下文之間的差異和 bias 訊息。

在具體的訓練過程中,每個樣本通過統一的特徵embedding 層並進行拼接之後,會進入到全場景共享網路以及這條樣本所對應的場景所特有的網絡,進行前向傳播以及反向傳播的網絡訓練。

同時在整個網路結構當中全場景共享網路每一層的輸出都會通過一個場景自適應的門控單元,把全場景的融合訊息遷移到單一場景上,以此來實現場景資訊之間精細化的遷移。具體可以參考圖中模型右上角的結構,該結構重點包含一個 adaptive gate 和一個 update gate。其中adaptive gate 的輸出值用來控制全場景的資訊中有多少是能夠被遷移到單場景上面去的,而update gate 的輸出是控制從全場景網路遷移過來的資訊和單場景原有的資訊進行加權融合的權重值。這兩個 gate 網路的輸入包含了全場景網路的資訊、單場景網路的資訊以及場景本身 bias 的資訊。透過這種精細化的、自適應的遷移結構去建模表徵場景的遷移方向以及遷移資訊量。我們將該遷移結構堆疊多層,最終每個樣本都可以得到它在各自對應場景上面的一個向量表徵。最後,每個場景各自的輸出和對應的場景上 bias 的輸出進行融合,得到它在對應的場景上最終的向量表達。

2、階段二:微調任務

淘寶個人化推薦中自適應與無監督的多場景模型建模實踐

第二階段是微調任務。由於我們想將模型落地到建議鏈路的召回階段,因此微調任務和召回任務的目標是對齊的。在樣本選擇上,我們採用 user 點選的 item 作為正樣本,透過隨機採樣的方式來建構負樣本,然後透過建構三元組的方式來進行 pairwise loss 的計算,從而進行訓練。

另外,在微調階段我們會進行模型結構以及參數的複用,即我們會在微調階段的模型結構上重新採用和預訓練階段相同的表徵網路結構,會去載入預訓練階段的embedding 層以及網路參數,相當於將第一階段場景之間無監督訓練的資訊保留下來。

在微調階段的 user 側和 item 側的度量匹配任務上面,我們也引入了一個新的輔助任務來幫助訓練。前面提到每個樣本在透過表徵網路進行表徵後可以得到兩個向量表達,一個是每個單場景網路特有的向量輸出,這個向量刻畫了它在每個對應場景上面的獨立的表達;另外一個是全域共享的向量輸出,刻畫了user 特徵或item 特徵在全域上的表達。因此在整個的微調階段的訓練任務中包含了兩個loss,一個是單一場景的網路所輸出的user embedding 以及item embedding 之間訓練的loss;另外一個就是全場景網路對應輸出的user embedding 以及item embedding也可以透過這樣​​一種計算方式得到另一個loss,最後兩個loss 的加權和作為最終的loss 進行訓練。而引入全場景loss 的輔助任務,相當於刻畫同用戶和item 在全局的表達,儘管它的表達可能並不適配於各自場景的獨立特徵表達,但是如果把它加到一個全局的任務中訓練後,對整體效果的收斂是有好處的,後面的實驗分析也可以論證這一點。

#

接下來介紹如何部署召回模型。在模型訓練完成後,我們會把微調階段的模型部署上線。在線上預估時,每個場景的資訊會透過模型上對應場景的網路得到在該場景下的表徵向量。

另外,在輔助任務中全場景網路的輸出只在訓練階段使用,因為它是混合樣本,可能存在一些噪聲,然後在預估的時候,每個場景還是使用各自場景輸出的那個特徵向量。針對召回任務,在 item 側我們會針對所有的候選去產生這個向量,之後去構造成對應的索引,再透過模型部署,在線上預估的時候產生向量。接著透過向量檢索取得到 topk 的結果,最後把結果回傳給排序階段,來進行整個推薦連結後續的一些操作。

三、實驗分析與落地應用

#接下來介紹利用此模型進行的一些實驗分析和已經落地的應用。

淘寶個人化推薦中自適應與無監督的多場景模型建模實踐

我們是在兩個開源資料集以及自身業務的工業資料集上面與其他方法進行了效果比較。

對比的方法主要分成三類,第一類是傳統的單一場景模型,因為我們關注的是一個召回任務,因此比較目前業界較流行的一些召回方法,例如YoutubeDNN、MIND、BST、DSSM 等。這些單場景模型都是用各自場景各自獨立的樣本來進行訓練。 第二類是用多個場景混合的樣本進行訓練,模型上仍選用目前業界常用的單場景模型。 第三類是業界已有的和我們提出的多場景聯合建模的一些方法,其中一些方法是用在排序階段,而針對在召回階段的落地實踐,為了更好地對比,我們對這些方法稍加改造——即取排序模型網路最後一層的輸出作為一個表徵向量去適配召回任務。

上表中最後兩列是我們提出的模型,其中SASS-Base 是不加預訓練的模型結構,而SASS 是增加了預訓練階段。由於我們驗證的第二個資料集存在特徵缺失問題,無法支援預訓練任務,因此針對這個資料集我們重點比較了 SASS-Base 和其他方法的效果。

從多種類型的方法對比當中,我們得到了幾個比較有價值的結論。 第一點是採用混合樣本訓練的單場景模型在大多數情況下的效果反而不如單場景用自己單獨的樣本進行訓練。這和我們前面論證及研究的結論是相符合的,也就是這種混合樣本的方式可能會引入比較多的噪聲,而且打破了每個場景原本的資料分佈。但對於一些數據特別稀疏的小場景,混合樣本反而達到比較好的效果。因為對於這些場景,用本身稀疏的數據進行訓練其實是很難學到有效資訊的,採用這種混合樣本的方式,雖然數據上面可能是有偏的,但能夠透過樣本量的增加帶來一些收益和效果的提升。

第二個結論是透過多場景聯合建模的方式訓練得到的模型普遍優於前兩類單一場景的建模方法,我們提出的模型在不增加預訓練任務,即SASS- Base 模型結構上,在各個場景基本上也優於或可以和其他多場景聯合建模方式取得差不多的效果。而在疊加了預訓練任務後,整體的效果有了進一步的提升。

淘寶個人化推薦中自適應與無監督的多場景模型建模實踐

後續我們又進行了一系列的消融實驗,主要包括以下幾個部分。

第一個是刻畫全局場景到單一場景上資訊遷移的自適應的 gate 結構。我們對模型的gate 網路上的結構和目前已有的其他類型的gate 遷移方式進行了對比,包括(1)利用矩陣乘法映射的方式來實現資訊遷移;(2)使用類似於Simnet 這樣兩個特徵進行加法、乘法以及拼接,然後透過MLP 的方式來進行融合的這種遷移方式;(3)類似MOE 這樣的結構,透過Sigmoid gate 來進行遷移的網路結構。最後從實際實驗效果來看,我們這種自適應的方式能夠達到不錯的效果。

第二點是針對是否要增加預訓練的任務以及不同的預訓練任務類型對實驗結果影響的對比。對比的預訓練方式是透過使用者的行為序列來對下一個影片或下一個 item 預測的訓練任務。經結果比較,可以證明增加了預先訓練的任務,並且透過這種場景和場景之間的對比學習可以提升模型的效果。

第三點是去論證模型結構設計中的輔助網路以及一個輔助任務。其中一個是我們在微調階段引入了全局共享的網絡,利用該網絡輸出的結果來進行輔助的微調訓練,另外一個是在我們的網絡結構設計中,針對每個場景的輸出,去融合場景相關的bias 特徵的消融實驗。實驗結果也證明了這兩個結構的添加對整體模型效果有一定的提升。

另外,由於我們的表徵網絡是一個多層的資訊遷移結構,因此我們也比較了這個網絡層數的增加對我們模型效果的提升。可以看到整體的趨勢是隨著網路層數的增加,模型效果是先提升然後再下降的。後續網路層數增加所造成的效果變差,我們分析可能是因為網路層數增加後整個參數量隨之增加,會存在一些過度擬合現象。另外在得到上層表徵之後再進行這種大量的資訊遷移,可能會使得單一場景的表徵更容易受到全場景資訊的影響。因此這種多層網路結構的層數增加在一定程度上可以提升效果,但是網路層數不一定越多越好。

下一組實驗,我們針對召回任務比較了不同 item 側的表徵向量,因為在召回上每個場景都會產生各自的向量。在一些多場景建模時,user 側會對應有各自不同的表達,但在item 側並沒有詳細地去刻畫,而在我們的召回任務當中user 側和item 側對應的都是它在每個場景下各自獨立的向量表達,因此我們也比較了每個場景對應的item 表達以及場景共享的同一個item 側的embedding。透過對比發現,在 item 側同樣能夠區分開各個場景獨立的向量表達。

最後我們將這個模型在一個實際的內容推薦場景上面進行了線上的 A/B 實驗。在一些實驗指標上取得了不錯的效果,尤其在一些相對來說比較小或數據比較稀疏的場景中,提升幅度更高一些。

目前我們提出的模型方案已經在淘寶的內容推薦場景,包括短視頻、圖文推薦等場景上完成推廣,並且這個模型在各個場景都成為了主要的召回方式之一。

四、總結

淘寶個人化推薦中自適應與無監督的多場景模型建模實踐

最後進行總結。整體上,我們想要解決的問題就是推薦領域中的多場景建模的問題,這也是目前在推薦系統當中普遍存在的問題。而針對這種多場景建模,我們的核心目標是希望能夠透過建構一套統一的框架來最大化各個場景之間的資訊使用。透過這種聯合建模的方式解決資料稀疏問題,同時去提升各個場景的業務指標。並且透過同樣的一套方法架構降低模型迭代以及部署的成本。

但是在我們的實際業務應用當中,多場景建模面臨三個核心挑戰。第一個是如何實現精細化以及有效場景資訊的遷移;另外在多場景建模裡面怎樣解決資料稀疏的問題,怎樣去引入一些無標籤資料;然後第三點就是多場景聯合建模在召回階段進行落地。

在我們的實踐當中,透過去設計這種自適應的場景資訊遷移的網路架構,以及建構場景和場景之間的對比學習的無監督任務,並且包括在模型結構設計、訓練方式以及部署上去適配召回階段的任務來解決上面的挑戰。最後,這種場景自適應的無監督模型目前在全場景上較好地落地,並且是作為一個主要的召回方式。

五、問答環節

Q1:用什麼指標來評估模型在每個場景的提升?

A1:這是模型評估方面的問題,需要和各場景的建模目標對應,然後分場景去看指標的提升。如果是召回階段的任務的話,就是在對應的每個場景上面去選擇召回相關的評估指標,例如 Hit Rate 或 NDCG。如果是在排序階段,就主要關注 AUC、GAUC 這樣一些排序相關的指標。

Q2:SASS 的兩個場景的 feature 是否相同?

A2:首先,因為我們整體解決的是一個多場景的問題。如定義所示,就是在每個場景之間,樣本很大程度上是對齊的,因此我們在實際建模時,也是盡量把所有的特徵進行對齊和拉平。另外,針對每個場景內還是有一些自己特有的特徵的情況,我們設計了場景 bias 的網絡,對於那些沒有辦法完全對齊的特徵,我們會把它放在這個單獨的網絡結構當中。

Q3:有考慮把程式碼開源嗎?

A3:這套程式碼目前正在公司實際業務場景中使用,開源需要符合公司的資訊揭露合規要求。我們後續會進行溝通,可能會提供一個 demo 版本進行開源。

Q4:召回階段也是用的這些模型嗎?

A4:我們目前的這個模型本身就是在召回階段來進行落地的,因此整個模型也是部署在這樣一個召回階段,當然我們提供的是一個比較通用的方案,透過一些改造也是完全可以作為排序模型使用的。

Q5:模型用了哪一種負取樣?

A5:負取樣主要是在微調階段進行。我們採用的是在召回任務當中比較通用的負採樣方式,其中將用戶的點擊作為正樣本,而負樣本是會在每個場景當中根據 Item 的曝光機率做一個隨機的負採樣。然後在多個場景上面,因為我們整體訓練任務還是會在每個場景各自去進行訓練。因此在負採樣的時候,正樣本對應的負樣本也是會在這個場景所對應的曝光空間裡面進行負樣本的隨機採樣,透過這樣來構造出這種正負樣本的 pair 對的形式。

#

Q6:淘寶資訊流的商品短片場景頁、主題頁都是可以用這套模型嗎?是否可以和商品推薦場景結合?目標是否需要統一?例如影片有時長目標。

A6:這個問題稍微有點大,我拆分一下,就是目前我們這套模型是落地在淘寶上的內容推薦場景,就是整體是以內容為主要的載體,包含圖文和影片。這一塊是完全適配的,因為它整體的特徵體係是基本一致的,可完全重複使用。然後另外一點其實也是我們下一階段要做的工作,就是裡面可能提到商品以及內容,他們本身的資料分佈以及特徵體係其實是不一樣的,這個可以理解為更像是一個跨域的問題,是商品域和內容域之間的一個融合。我們下一階段的工作也是希望能夠在多場景當中引入這樣一些跨域的思想,能夠把商品域的一些行為資訊遷移到內容域上面,這個是第一點。第二點的話關於目標統一,我們現在是做了目標的統一。比如說在首頁點擊上,我們是用用戶的點擊信號來作為正樣本,而在這種無盡流上下滑中, 其實沒有用戶點擊,然後我們用的是用戶的長播、完播等時長信號作為正向回饋,也就是整體把label 平成這樣一種二元的維度。

Q7:可以詳細介紹一下場景之間對比學習無監督任務嗎?

A7:整體的話還是仿照這種對比學習的思路,其實重點是透過場景和場景之間的特徵拆分之後然後去構建預訓練任務,可以再參考我前面PPT 部分的講解或我們論文中的介紹(Scenario-Adaptive and Self-Supervised Model for Multi-Scenario Personalized Recommendation)。

Q8:預訓練模型的 user 側和 item 側用的是點擊樣本嗎?

A8:預訓練任務是在沒有標籤的一個空間上面的進行的,比如說某個用戶訪問的a 和訪問的b 這兩個場景,以及此使用者有一些靜態的屬性特徵,和歷史保存下來的在每個場景對應的使用者行為序列,然後這樣構成了同一個使用者在a 和b 這兩個場景的一個特徵體系。預訓練的建模目標是去建模這個有訪問的用戶,在場景 a 和場景 b 之間通過這樣一種特徵度量之後拉近這兩個表徵向量之間的距離。因此它其實是一個無監督的任務,是在無點擊的樣本空間上面來進行訓練的。

Q9:各場景的多目標如何融合?

A9:這個其實是另一個問題了,目前我們解決的是多場景問題,我們是希望所有的場景之間都是共享了同一個目標,比如說點擊的目標或說我們轉換的這樣一種二分類的目標,它其實刻畫了使用者對這個內容或說對這個影片是否感興趣。至於剛才提到的多場景多目標的方式,其實是和多場景有一些區別,但是我理解是可以把這樣一種多目標建模的方式構建在這個多場景建模上面的。因為目前也有很多工作是在做多場景和多目標的聯合表徵的任務,比如說在我們現在這種架構上,透過表徵網絡後每一個樣本對應在每一個場景上面會有一個獨立的向量表達,如果我們將這個向量表達作為輸入,在此基礎上再去針對每一個目標構建一個特有的目標相關的特徵網絡,其實也是可以做多目標和多場景聯合的任務。你可以把我們現在的這種多場景的訓練方式當成一個基礎框架,然後在它的基礎上再去建模其他的一些多目標的任務。這個我感覺是 make sense的。 

Q10:預訓練階段的比較學習的 loss 是怎麼設計?

A10:這個loss 其實是和傳統的對比學習的方案比較相似的,我們也是選用InfoNCE loss,也就是在一個batch size 為n 的訓練樣本中,把同一個使用者或item 在對應場景產生的兩個向量當成正樣本,其他樣本所對應的產生的2n-2 個向量當成它的負樣本,這樣建構loss 來進行訓練。

#

Q11:預訓練階段 item 怎麼建構多 view? 

A11:剛才重點介紹的是 user 側,那麼 item 側其實也是同樣的結構。針對 item 側,同樣是有一個 item 自身的全域共享網絡以及針對每個場景每個 item 它在各自每個場景上面的一個網絡參數的表達。因此透過同樣的一個模型方式,和 user 側是完全對稱的一個結構。每個 item 會透過這樣一個全域共享的參數遷移,以及每個場景本身的網路結構,最終會有一個獨立的和場景相關的輸出。

Q12:請問一下模型的時效性是怎麼樣的?多久更新一次模型?是流式訓練嗎?

A12:這個問題很好。我們目前的這個模型其實是離線訓練的,是天級的更新的。然後我們也是在做一些替換性的嘗試,希望能夠提升它的一個時效性,透過 online learning 的方式進行流式訓練。當然目前還遇到一些問題,主要就是體現在這樣一種多場景訓練的方式上,其實它需要去同時引入多源的數據,那麼在這種流式訓練當中,多個源的數據怎麼能同時接入,以及如何保證訓練穩定其實是比較大的挑戰的,所以我們目前的模型還是這種離線天級別更新的。後面可能會做一些嘗試,比如說把目前的這種離線的多場景聯合訓練當成一個base 模型,然後在單場景上面通過模型restore 後進行流式數據的微調,通過這樣一種方式來進行迭代更新。

Q13:預訓練的樣本如何建構?

A13:這個剛剛其實也介紹了。整體核心點還是在於同一個使用者在不同場景上面對一些特徵的表達進行拆分,比如說a 和b 兩個場景,它有些靜態特徵,同時在對應場景上面它會留下各自獨立的用戶行為序列,以及這樣一個user 在對應的場景上面的一些統計信息,如類目偏好、帳戶偏好以及一些點擊曝光等統計特徵。這樣相當於把資料的特徵構造分場景的拆開,可以使得同一個使用者在不同場景有不同的特徵。這個是特徵上面的構造,然後在樣本上面的話就是剛剛提到的,一個使用者如果訪問了多個場景,然後場景之間兩兩組合去構造這樣一種樣本對的形式。然後在 item 側,一個 item 可能會投放到多個場景上,那麼多場景之間這樣兩兩組合的方式也可以建構 item 的樣本。

Q14:預訓練對比學習有指標評估嗎?

A14:我們的預訓練階段是一個無監督的任務,我們重點想要透過預訓練的任務拿到它的embedding 的表徵,以及對應的網絡參數的初始化。因此我們在針對預訓練對比學習這一塊評估的時候,主要是透過預訓練階段產出的向量的做視覺化的聚集來分析效果。

Q15:多場景模型在某些場景有正收益,但在某些場景是負收益,那負收益的場景怎麼做調整最佳化?

A15:這個其實還是關於場景的共性和差異性上的一個刻畫,我們設計的多場景方案的初衷是希望能夠透過統一的模型加固之後,再在各個場景上面進行優化。當然實際上,尤其在後續一些迭代上面並不能夠完全百分百的做到同一個模型架構在所有的場景上面都能取得很好的收益,可能有些收益是不太明顯的。那麼這個時候其實是需要在我們目前的這樣一個多場景架構上針對每個場景自身的一些特點,在上層結構上做一些微調的設計,就是在底層的embedding 共享以及信息遷移這個部分可以用多場景的框架來做。當然每個場景都有它自己自身的一些網絡特點,比如說在二跳當中的一些強的 trigger 信息會有一些獨立的特徵結構,需要在上層再做一些適配的。

#

Q16:預訓練模型在各個場景是 share 的嗎?

A16:底層的embedding 以及全域共享的網路在各個場景之間是share 的,然後每個場景所對應的各自的一個網路參數是在每個場景所特有的。

Q17:召回 serving 階段,對於不同場景的 item 表徵應該不同,在線檢索庫索引的時候是拆分建庫還是聯合建庫?

A17:我們目前是採用分割建庫的方式,也就是每個場景對應的一個候選會在每個場景產生各自獨立的一個索引。

Q18:樣本量在什麼量級的時候算稀疏小場景?

A18:這個沒有一個標準的答案,可能要根據實際的業務場景上面來看。

Q19:某路召回有沒有用到人工(策略產品經理)出的一些策略?

A19:因為在召回階段是一個多路召回這個形式,也就是會有多種不同類型的召回方式,比如說向量召回等,然後也會有一些人工包含一些營運指標提供的召回方式,因此整體目前的一個推薦階段的話,其實它都是各種類型的召回方式融合,再給到排序那邊做統一的打分。具體到我們今天講的這樣一個模型上面,重點還是放在這個模型的最佳化。 

Q20:請問單場景模型訓練只有初始化的時候繼承預訓練的參數?然後在單場景模型訓練起來以後,還會利用預訓練模型的參數嗎?

A20:目前我們的方案就是在模型訓練之後的初始化階段進行模型參數的載入。至於預訓練之後的 embedding 以及參數是否還需要進行更新,我們做過兩種實驗,第一種是預訓練的模型加載之後,把它固定以及第二種是在微調階段繼續參與這樣一個模型訓練。然後我們目前採用的是微調階段仍舊對原來的預訓練的模型參數進行重新訓練的方式。

Q21:多層場景的 GRU 裡面多場景的先後順序是如何決定的?

A21:場景和場景之間順序是隨機的,因為我們的模型其實是會把這樣一個全局場景的資訊遷移到單場景上面去,所以在場景之間,它的訓練順序其實是隨機的。

Q22:預訓練階段兩個 view 特徵有什麼差異呢?差異就只是在場景上嗎?

A22:對,在場景差異上面,我們整體是透過同一個使用者或同一個item 在不同場景上面的特徵體現不同,從而去刻畫它在場景上面的差異,也就是把這種場景和場景的差異當成一種資料增強的方式。不僅是單獨在場景,也包含使用者和 item 在場景上的一些行為特徵表示。

Q23:線上預估需要分步驟先取得預訓練表達嗎?然後再進行召回?

A23:預訓練是為了去輔助我們最後的召回任務的訓練,因此在預估時,我們整體是只會用到第二階段微調的任務來進行部署。你可以理解為一個比較經典的 DSSM 的這樣一個雙塔結構的模型。因此最後是用微調階段的這種模型結構來進行上線的,然後在那個表徵輸入預估的時候去輸出 user 側的表達和 item 側的表達。

#

Q24:請問對比學習的損失跟微調的損失可以聯合訓練嗎?

A24:這個問題換個說法,就是能不能把我們現在採用的這種兩階段的方式轉化成端到端的訓練,也就是在訓練任務當中既做場景和場景之間的一個無監督訓練,同時在此基礎上去做user 和item 召回的一個聯合訓練。這種方式的話感覺是可行的,但是我們沒有這樣做的原因是它沒有解決到我們想要用無標籤樣本資料的這個問題。也就是我們兩階段任務所用到的樣本其實是不一樣的,預訓練階段是用了更大範圍的無標籤數據,然後在微調階段才使用了有標籤那些數據。如果聯合訓練的話,就只能在這樣一個有標籤的資料上進行訓練,樣本空間其實是會縮小的,這個和我們最開始的設計初衷會有一些差別。

Q25:ML-SAT 階段的模型中,update-gate 和adapt-gate 本身的作用是在MLP 每一層都採用還是只在頂層融合的時候生效?

A25:這個是會在每一層來進行一個遷移的,就是在多層結構上面,單層結構會做一個訊息的遷移,然後會把這個結構進行堆疊。就剛剛的一個實驗 結果上,在多次對比後選擇 3 層的話,它的效果是有些提升的。因此,我們在實際的業務落地當中,這個模型對應的層數也是設定為 3。

Q26:預訓練用幾天的資料訓練的呢,只 pretrain 一次嗎?

A26:我們的預訓練以及微調階段的任務是天級別的增量訓練的,然後在微調階段會再去導入預訓練階段,兩邊相當於是在並行的去做增量訓練,然後在中間會做參數的載入。

Q27:預訓練和微調是使用的相同時間視窗的資料嗎?

A27:剛才提到我們整體的訓練方式是增量訓練的,因此它們的時間視窗基本上是對齊的。

#

以上是淘寶個人化推薦中自適應與無監督的多場景模型建模實踐的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除