首頁  >  文章  >  科技週邊  >  對比學習演算法在轉轉的實踐

對比學習演算法在轉轉的實踐

王林
王林轉載
2023-04-11 21:25:121653瀏覽


  • 1 什麼是對比學習
  • #1.1 對比學習的定義
  • 1.2 對比學習的原理
  • 1.3 經典對比學習演算法系列
  • 2 對比學習的應用
  • 3 對比學習在轉轉的實踐
  • 3.1 CL在推薦召回的實踐
  • 3.2 CL在轉轉的未來規劃

1 什麼是對比學習

1.1 對比學習的定義

對比學習(Contrastive Learning, CL)是近年來AI 領域的熱門研究方向,吸引了許多研究學者的關注,其所屬的自監督學習方式,更是在ICLR 2020 被Bengio 和LeCun 等大佬點名稱為AI 的未來,後陸續登陸NIPS, ACL, KDD, CIKM 等各大頂會,Google, Facebook, DeepMind,阿里、騰訊、字節等大廠也紛紛對其投入精力,CL 的相關工作也是刷爆了CV,乃至NLP 部分問題的SOTA,在AI 圈的風頭可謂一時無兩。

CL 的技術來源來自度量學習,大概的想法是:定義好樣本的正例和負例,以及映射關係(將實體映射到新的空間),優化目標是讓正例在空間中與目標樣本的距離近一些,而負例則要相對遠一些。正因為如此,CL 看起來跟向量化召回思路很像,但其實二者有本質的區別,向量化召回屬於監督學習的一種,會有明確的標籤數據,而且更注重的負樣本的選擇(素有負樣本為王的「學說」);而CL 是自監督學習(屬於無監督學習的一種範式)的一支,不需要人工標註的標籤信息,直接利用數據本身作為監督信息,學習樣本資料的特徵表達,進而引用於下游任務。此外,CL 的核心技術是資料增強(Data Augmentation),更重視的是如何建構正樣本。下圖是一個抽象的 CL 整體流程圖

對比學習演算法在轉轉的實踐

對比學習的標籤資訊來自資料本身,核心模組是資料增強。影像領域的資料增強技術是比較直觀的,例如影像的旋轉、遮蔽、取部分、著色、模糊等操作,都可以得到一張與原圖整體相似但局部相異的新圖(即增強出來的新圖),下圖是部分影像資料增強的手段(出自SimCLR[1])。

對比學習演算法在轉轉的實踐

1.2 對比學習的原理

談到CL的原理,不得不提自監督學習,它避開了人工標註的高成本,以及標籤低覆蓋的稀疏性,更容易學到通用的特徵表示。自監督學習可以分成兩大類:生成式方法和對比式方法。生成式方法的典型代表是自編碼器,而對比式學習的經典代表即ICLR 2020的SimCLR,透過(增強後的)正負樣本在特徵空間的對比學習特徵表示。相比較生成式方法,對比式方法的優點在於無需對樣本進行像素級的重構,只需要在特徵空間能夠學到可區分性即可,這使得相關的最佳化變得簡單。作者認為,CL的有效性主要體現在學習item表示的可區分性,而可區分性的學習依賴正負樣本的建構思路,以及具體的模型結構和最佳化目標。

結合CL的實作過程,Dr Zhang[2]抽象化了三個CL必須回答的問題,也是其區別於度量學習的典型特徵,即(1)如何構造正例和負例,也就是數據增強具體是如何實現的;(2)Encoder映射函數如何構造,不僅要盡可能多地保留原始信息,而且要防止坍塌問題;(3)損失函數如何設計,目前通常使用的NCE loss,如下公式所示。不難看出,這三個基本問題對應建模的三要素:樣本,模型,最佳化演算法。

對比學習演算法在轉轉的實踐

從loss 公式可以看出,分子部分強調的是與正例的距離越近越好,S函數衡量的是相似性,距離越近對應的S值越大,分母強調的是與負例的距離越遠越好,loss 越低,對應的可區分性越高。

在這三個基本問題中,資料增強是CL 演算法的核心創新點,不同的增強手段是演算法有效性的基本保障,也是各大CL 演算法的identity;Encoder函數通常藉助神經網路實現;除NCE loss外,還有其他loss 的變體,例如Google[3]就提出了監督對比損失。

1.3 經典對比學習演算法系列

CL是自監督學習的一種學習演算法,提到自監督學習,Bert 恐怕是NLP 領域無法迴避的話題,Bert 預訓練Fine- tuning 的模式在許多問題的解決方案中實現了突破,既然自監督可以在NLP 取得成功,那麼電腦視覺就不可以嗎?實際上 Bert 在 NLP 領域的成功,也直接刺激了 CL 在影像領域的發生與發展。鑑於資料增強可以在影像領域直觀地展開,CL 也是率先在CV 領域取得進展,例如CL 的發展契機—— SimCLR 演算法,其創新點主要包括(1)探索了多種不同的資料增強技術的組合,選擇了最優;(2)在Encoder 之後增加了非線性映射Projector,主要是考慮Encoder 學習的向量表示會把增強的信息包含在內,而Projector 則旨在去除這部分影響,回歸數據的本質。後來Hinton的學生在 SimCLR 的基礎上實現了 SimCLR v2,主要改進點在於 Encoder 的網絡結構,同時借鑒了 MoCo 使用的 Memory Bank 的思想,進一步提升了 SOTA。

實際上,在SimCLR 之前,Kaiming He 在2019年底提出了另一個對比學習的經典演算法MoCo[4],其主要思想是既然對比是在正負樣本之間進行的,那麼增加負樣本數量,可以提高學習任務的難度,從而增強模型性能,Memory Bank 是解決該問題的經典思路,但卻無法避免表示不一致的問題,有鑑於此,MoCo 演算法提出了使用動量的方式更新Encoder 參數,從而解決新舊候選樣本編碼不一致的問題。後來,Kaiming He 又在 MoCo 的基礎上提出了 MoCo v2(在 SimCLR 提出之後),模型主要框架沒有改動,主要在數據增強的方法、Encoder 結構以及學習率等細節問題上做了優化。

2 對比學習的應用

對比學習不僅是學術界在圖像、文字、多模態等多個領域的熱門研究方向,同時也在以推薦系統為代表的工業界得到了應用。

Google 將CL 應用於推薦系統Google SSL[5],目的在於針對冷門、小眾的item 也能學習到高品質的向量表示,從而輔助解決推薦冷啟動問題。其資料增強技術主要採用Random Feature Masking(RFM),Correlated Feature Masking(CFM)的方法(CFM 一定程度上解決了RFM 可能構造出無效變體的問題),進而CL 以輔助塔的形式,結合雙塔召回的主任務共同訓練,整體流程如下圖所示

對比學習演算法在轉轉的實踐

在模型的訓練過程中,主任務的item 主要還是來自曝光日誌,因此也是對頭部熱門item 比較友好,為了消除馬太效應的影響,在輔助任務中的樣本構造需要考慮與主任務不同的分佈,後續CL 在轉轉的實踐過程中也是藉鑑了這樣的思考,從而確保模型學習結果的充分覆蓋。

資料增強不局限在item 側,Alibaba-Seq2seq[6]將CL 的想法應用在序列推薦問題上,即輸入使用者行為序列,預測下一個可能互動的item。具體地,其資料增強主要應用在使用者行為序列特徵,將使用者歷史行為序列依時序劃分成兩個子序列,作為資料增強後的使用者的表示,餵入雙塔模型,最終輸出結果越相似越好。同時,該文為了明確建模使用者的多興趣,在 Encoder 部分提取出多個向量,而不是壓縮成一個使用者向量。因為隨著子序列的拆分,以及正負例的構造,用戶天然具有多個行為序列的向量表示,在正例中,用戶前一部分歷史行為的向量,與後一部分歷史行為的向量,距離相近,而在負例中,不同用戶的距離相對較遠,而且即使同一用戶,在不同類別商品的向量表示也相對較遠。

CL 也可以與其他學習範式結合應用,圖對比學習[7],整體框架如下圖所示

對比學習演算法在轉轉的實踐

#

GCL 通常透過隨機刪除圖中的點或邊,實現圖資料的增強,而本文的作者傾向於保持重要的結構和屬性不變,擾動發生在不重要的邊或節點。

3 對比學習在轉轉的實踐

圖像領域取得了成功,文本領域也是可以的,例如美團-ConSERT[8]演算法,在句子語義匹配任務的實驗中,相比之前的SOTA(BERT-flow)提升了8%,並且在少量樣本下仍能表現出較好的性能提升。演算法將資料增強作用在Embedding 層,採用隱式生成增強樣本的方法,具體地,提出了四種資料增強方法:對抗攻擊(Adversarial Attack),打亂詞序(Token Shuffling),裁剪(Cutoff)和Dropout,這四種方法都透過調整Embedding 矩陣而得到,比顯式增強方法更有效率。

3.1 CL在推薦召回的實踐

轉轉平台致力於促進低碳循環經濟的更好發展,能夠覆蓋全品類商品,近年來尤其在手機3C領域的發展表現突出。 CL 在轉轉推薦系統中的實踐也是選擇了基於文本的應用思路,考慮到二手交易特有的屬性,需要解決的問題包括(1)二手商品的孤品屬性,導致ID 類的向量並不適用; (2)資料增強是怎麼實現的;(3)正例和負例如何構造;(4)Encoder 的模型結構是怎樣的(包括loss 的設計問題)。針對這四個問題,結合下面的整體流程圖進行詳細說明

針對二手商品的孤品屬性問題,我們採用基於文本的向量作為商品的表徵,具體地,使用商品的文本描述(包括標題與內容)集合,訓練word2vec 模型,並基於詞向量透過pooling 得到商品的向量表示。

自編碼器(Auto Encoder)演算法是文字對比學習領域常用的資料增強手段之一(除此之外,還有機器翻譯、CBERT等不同想法),我們也是採用AE 演算法訓練模型,學習商品向量,並利用演算法的中間向量作為商品的增強向量表示,也就有了正例。

負例的生產原則是 Batch 內隨機選取不相似的商品,相似商品的判斷依據是根據使用者的後驗點擊行為計算而來。在以 CF(協同過濾)為代表的推薦系統召回結果中,能夠透過共同點擊行為召回的商品組合,認為是相似的,否則認為是不相似的。之所以採用行為依據判斷是否相似,一方面是為了將使用者的行為引入其中,實現文本與行為的有機結合,另一方面也是為了盡可能貼合業務目標。

具體到Encoder 部分,我們採用的是類似孿生網路的雙塔結構,分別餵入樣本(正正or 正負)的文字向量,訓練分類模型,網路結構為三層全連接的神經網絡,雙塔共享此網絡參數,並透過優化交叉熵損失優化模型參數。實際工業界,大部分推薦系統中雙塔模型的訓練目標均為使用者後驗行為(點擊、收藏、下單等),而我們的訓練目標是樣本相似與否,之所以採用孿生網路的形式,也是出於這樣做可以保證學習結果的涵蓋。

根據 CL 的常規思路,提取最終 Encoder 部分的輸入向量作為商品的向量化表示,可以進一步在推薦系統的召回、粗排甚至精排等環節應用。目前已經在轉轉推薦系統的召回模組落地,為線上帶來了超過10%的下單提袋率的提升。

3.2 CL在轉轉的未來規劃

透過人工評估以及線上AB實驗,充分確認了CL習得向量表示的有效性,在召回模組落地後,可以在推薦系統其他模組,甚至其他演算法場景推而廣之。以預先訓練的方式學習商品向量表示(當然,也可以學習使用者的向量表示),只是一條應用路徑,CL 更多的是提供了一種學習框架或學習思路,透過資料增強和對比的形式,使演算法學習物品的可區分性,這樣的思路可以自然地引入推薦系統的排序模組,因為排序問題也可以理解成物品的可區分性問題。

關於作者

李光明,資深演算法工程師。參與轉轉搜尋演算法、推薦演算法、使用者畫像等系統的演算法體系建設,在GNN、小樣本學習、對照學習等相關領域有實務應用。

參考資料

[1]SimCLR: A_Simple_Framework_for_Contrastive_Learning_of_Visual_Representations

[2]張俊林: https://www.php.cn/link/be7ecaca534f98c4ca134e527b12d4c8

[3]Google: #Supervised_

###[3]###Google: ####Supervised_Contrastive_######[3]###Google: ####Supervised_Contras #####

[4]MoCo:Momentum_Contrast_for_Unsupervised_Visual_Representation_Learning

[5]SSL:Self-supervised_Learning_[5]

SSL:

Self-supervised_Learning_for_Large-scations_Re.com ##[6]Ali-Seq2seq:Disentangled_Self-Supervision_in_Sequential_Recommenders

[7]GCL:Graph_contrastive_lening_

#[7]

GCL:Graph_contrastive_lening_with[7]GCL:Graph_contrastive_lening_with

#augmentment. ##########[8]###ConSERT:###ConSERT:_A_Contrastive_Framework_for_Self-Supervised_Sentence_Representation_Transfer######

以上是對比學習演算法在轉轉的實踐的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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