探索將大語言模型用作推薦系統

Baihai_IDP發表於2023-05-15

編者按:目前大語言模型主要問答、對話等場景,進行被動回答。是否可以將大模型應用於推薦系統,進行主動推送呢?

這篇文章回顧了可以將大模型作為推薦系統的理論基礎,並重點描述了基於英文和阿拉伯語的購物資料集微調T5-large模型,探索將LLMs用作推薦系統的實踐。同時本文還介紹了LLMs作為推薦系統的優點和缺點,並提出建議和可行的方向。

以下是譯文,Enjoy!

作者 | Mohamad Aboufoul

編譯 | 嶽揚

最近幾個月,大型語言模型(LLMs)已經成為資料科學社群和新聞界的熱門話題。自2017年Transformer架構問世以來,我們看到這些語言模型處理的自然語言任務複雜程度呈指數級增長。這些任務包括 分類、意圖和情感抽取,甚至它們被要求 生成與人類自然語言相似的文字內容

從應用角度來看,將LLMs與現有技術相結合,如果能夠避免它們的缺陷(我最喜歡的組合是GPT + Wolfram Alpha[1],可用於處理數學和符號推理問題),那麼其發展潛力似乎是無限的。

令我驚訝的是,LLMs即使在沒有進行額外的特徵工程或手動流程的情況下,也能作為獨立的推薦系統使用。這種能力很可能是由於LLMs的預訓練方式和操作方式。

內容提綱:

  1. 回顧LLMs以及Transformers的工作原理

  2. LLMs作為推薦系統

  3. 使用自定義資料實現/複製 P5

  4. 嘗試用非英語的資料進行模型複製

  5. LLMs作為推薦系統的優點和缺點

  6. Final Thoughts 最後的思考

  7. Code 原始碼

01   回顧LLMs以及Transformers的工作原理

語言模型本質上是機率模型,透過對映一系列tokens(如短語、句子中的單詞)的機率來完成任務。它們在大量文字上進行訓練,並相應地得出機率分佈。對於可以處理的各種任務(如摘要、問答),它們使用條件機率反覆迭代來選擇最有可能的token/單詞來完成任務。請參見以下示例:根據上下文的後續令牌機率示例(作者提供的影像)

探索將大語言模型用作推薦系統

根據上下文的後續tokens機率示例圖(作者提供的影像)

LLM是一種語言模型,它使用大量的計算資源和大型計算架構訓練海量文字。LLMs通常採用Transformer結構,該結構由Google在其2017年的論文“ Attention Is All You Need[2]”中公佈。 Transformer利用“自注意力”[3]機制,在預訓練過程中允許模型學習不同token之間的關係。

在對足夠大的文字集進行預訓練後,相似的單詞會有相似的嵌入(例如:“King”、“Monarch”),而不相似的單詞將擁有更不同的 嵌入(embeddings) 。此外,透過這些嵌入,我們可以看到單詞之間的代數對映,使模型能夠更好地確定序列的下一個正確的token。

這類似於Word2Vec中的“King - Man + Woman = Queen”[4]的經典示例。

自注意力嵌入(self-attention embeddings) 的另一個好處是,它們將因其周圍的單詞而異,從而使它們更符合語境中的含義。

史丹佛大學的Christopher Manning博士對LLM的工作原理進行了不錯的概述。

02 LLMs作為推薦系統

2022年,來自羅格斯大學(Rutgers University)的研究人員發表了題為“ Recommendation as Language Processing (RLP): A Unified Pretrain, Personalized Prompt & Predict Paradigm (P5) ”(作者:Geng等人)的論文。他們在文中介紹了一種“靈活而統一的text-to-text正規化”,將多個推薦任務合併到了單個系統(P5)中。該系統可以透過自然語言序列(natural language sequences)執行以下操作:

●  序列推薦(Sequential recommendation)

●  評分預測(Rating prediction)

●  生成解釋(Explanation generation)

●  評論摘要(Review summarization)

●  直接推薦(Direct recommendation)

讓我們來看一下論文中的序列推薦任務的一個例子。

Input: "I find the purchase history list of user_15466:

4110 -> 4467 -> 4468 -> 4472

I wonder what is the next item to recommend to the user. Can you help

me decide?"

Output: "1581"

研究人員為使用者和每個物品分配一個不重複的ID。使用包含數千個使用者(及其購買歷史記錄)和獨特物品的訓練集,LLM能夠學習到某些物品彼此是相似的,某些使用者對某些物品有偏好(由於自注意力機制的特性)。在這些購買序列(purchase sequences)的預訓練過程中,模型實質上經歷了一種 協同過濾(collaborative filtering)[5]的形式。模型可以看到哪些使用者購買了相同的物品,以及哪些物品往往會一起購買。再加上LLM生成 上下文嵌入(contextual embeddings)的能力,就可以得到一個非常強大的推薦系統。

在上面的例子中,雖然我們不知道每個ID對應哪個物品,但我們可以推斷出物品“1581”是由其他使用者與“user_15466”已經購買的任何物品一起購買的。

關於P5的體系結構,可以閱讀“ utilizes the pretrained T5 checkpoints as backbone”(作者:Geng等人)。

T5是谷歌幾年前釋出的另一個LLM[6]。它被設計用來處理多種型別的sequence-to-sequence任務,因此將其用作這種系統的起點是有道理的。

03   使用自定義資料實現/複製 P5

我對這篇論文印象深刻,想要了解 是否可以在更小的資料規模下複製其序列推薦功能。因此我打算使用開源的T5模型(T5-large)[7]進行微調,來生成適合推薦的內容。為此我準備了一個自定義的資料集,包括了100多個體育器材的購買案例和下一個購買的物品。舉個例子:

Input: “Soccer Goal Post, Soccer Ball, Soccer Cleats, Goalie Gloves”

Target Output: “Soccer Jersey”

當然, 為了讓該模型具有更強的魯棒性(robust),我決定使用更加明確的prompt。以下是我使用的具體prompt:

Input: “ITEMS PURCHASED: {Soccer Goal Post, Soccer Ball, Soccer Cleats, Goalie Gloves} — CANDIDATES FOR RECOMMENDATION: {Soccer Jersey, Basketball Jersey, Football Jersey, Baseball Jersey, Tennis Shirt, Hockey Jersey, Basketball, Football, Baseball, Tennis Ball, Hockey Puck, Basketball Shoes, Football Cleats, Baseball Cleats, Tennis Shoes, Hockey Helmet, Basketball Arm Sleeve, Football Shoulder Pads, Baseball Cap, Tennis Racket, Hockey Skates, Basketball Hoop, Football Helmet, Baseball Bat, Hockey Stick, Soccer Cones, Basketball Shorts, Baseball Glove, Hockey Pads, Soccer Shin Guards, Soccer Shorts} — RECOMMENDATION: ”

Target Output: “Soccer Jersey”

可以在上方看到使用者目前已購買的物品清單,接下來是尚未購買的(即整個庫存中)候選推薦物品列表。

在使用Hugging Face的Trainer API[8](Seq2SeqTrainer)對T5模型進行微調(10輪左右)之後,我獲得了一些特別出色的成果!以下是一些示例評估:

Input: “ITEMS PURCHASED: {Soccer Jersey, Soccer Goal Post, Soccer Cleats, Goalie Gloves} — CANDIDATES FOR RECOMMENDATION: {Basketball Jersey, Football Jersey, Baseball Jersey, Tennis Shirt, Hockey Jersey, Soccer Ball, Basketball, Football, Baseball, Tennis Ball, Hockey Puck, Basketball Shoes, Football Cleats, Baseball Cleats, Tennis Shoes, Hockey Helmet, Basketball Arm Sleeve, Football Shoulder Pads, Baseball Cap, Tennis Racket, Hockey Skates, Basketball Hoop, Football Helmet, Baseball Bat, Hockey Stick, Soccer Cones, Basketball Shorts, Baseball Glove, Hockey Pads, Soccer Shin Guards, Soccer Shorts} — RECOMMENDATION: ”

Model Output: “Soccer Ball”

Input: “ITEMS PURCHASED: {Basketball Jersey, Basketball, Basketball Arm Sleeve} — CANDIDATES FOR RECOMMENDATION: {Soccer Jersey, Football Jersey, Baseball Jersey, Tennis Shirt, Hockey Jersey, Soccer Ball, Football, Baseball, Tennis Ball, Hockey Puck, Soccer Cleats, Basketball Shoes, Football Cleats, Baseball Cleats, Tennis Shoes, Hockey Helmet, Goalie Gloves, Football Shoulder Pads, Baseball Cap, Tennis Racket, Hockey Skates, Soccer Goal Post, Basketball Hoop, Football Helmet, Baseball Bat, Hockey Stick, Soccer Cones, Basketball Shorts, Baseball Glove, Hockey Pads, Soccer Shin Guards, Soccer Shorts} — RECOMMENDATION: ”

Model Output: “Basketball Shoes”

由於 推薦結果並非二元的成功或失敗,我們其實只能根據主觀感覺來做出評判,但是推薦結果與使用者已經購買的物品非常相似,這一現象仍然令人印象深刻。

04 嘗試用非英語的資料進行模型複製

接著,我嘗試對阿拉伯語資料進行同樣的操作。我將資料集進行了翻譯,並尋找適合處理阿拉伯文字的開源T5模型(如AraT5[9]、MT5[10]等)。然而,經過嘗試了Hugging Face Hub[11]上十幾個相關變體模型後,我發現沒有得到符合要求的結果。即使使用微調的模型,在無論某商品過去是否購買過的基礎上,也僅推薦相同的1或2件物品,通常是“كرة القدم”(足球)(也許該模型知道阿拉伯語言人士喜歡足球,並一直在搜尋足球相關物品)。即使嘗試使用更大規模的T5模型,如MT5-xl,仍然得到相同的結果。 這可能是因為這些語言模型對英語以外的資料支援不足。

為了嘗試進行改進,我決定使用Google翻譯API以及我已經微調的英文T5模型進行操作。具體步驟如下:

● 將阿拉伯輸入文字翻譯為英文。

● 將翻譯後的英文文字輸入到已經微調的英文模型中。

● 獲取模型在英文上的預測結果。

● 將預測結果翻譯回阿拉伯語。

然而, 這一過程並沒有帶來太大幫助,因為翻譯工具也會犯一些錯誤(比如說,“كرة القدم”,谷歌翻譯將其翻譯成“足球”,但它實際上的意思是“橄欖球”),這導致了模型出現了誤差,最終結果是始終推薦相同的1-2件物品。

05   LLMs作為推薦系統的優缺點

這種技術最主要的優點在於其能夠作為一個獨立的系統(stand-alone system.)來實現,便利性很高。 由於LLMs和預訓練技術擁有的特性,我們可以避免大量手動的特徵工程(manual feature engineering)要求。因為該模型應該能夠自然地學習表徵(representations)和關係(relationships)。此外,我們 也可以在一定程度上避免新推出的物品面臨的“冷啟動”問題。我們可以透過提取出新物品的名稱/描述,並將其自然地與使用者已經購買/選擇的現有物品相關聯。

然而,這種方法也存在一些缺點(不要把你現有的推薦系統丟棄!)。 主要表現為對推薦內容缺乏控制

● 由於使用者瀏覽商品和購買商品的不同行為/事件(actions/events)沒有進行加權,我們完全依賴於LLM去預測最有可能的下一個token或token組,來進行推薦。 這種方法無法考慮使用者的收藏、瀏覽歷史、購物車等行為。

● 此外,因為這些LLM大部分推薦都是基於相似度,即與迄今購買過的商品語義相似的商品,存在一定風險。然而,我認為透過大量的使用者購買歷史資料,可以採用此方法所模擬的“協同過濾”方法來改善這個問題。

● 最後,由於LLM在理論上可以生成任何文字,推薦的內容可能並不完全匹配商品庫存中的專案。不過,我認為這種情況發生的可能性較低。

06   Final Thoughts 最後的思考

基於P5論文的結果以及我嘗試在T5模型上透過微調和Prompt來進行復制的經理,我推斷這種技術可以用於許多語言模型。如果微調模型的資料足夠大,Prompt技術得到完善,使用更強大的sequence-to-sequence模型可以顯著增強效果。

然而,我不會建議單獨使用這種方法。 我建議將其與其他推薦系統技術結合起來使用,這樣就可以避免上面提到的缺點並同時獲得更好的效果。 如何做到這一點我不確定,但我認為只要有創造力,將LLM技術與其他推薦系統技術相結合可能會很有幫助(例如,可以 提取基於嵌入的特徵(embedding-based features)用於協同過濾(collaborative filtering) ,或與 “Two Tower”架構結合使用等等)。

07   Code

  1. 我實現的 T5 推薦系統(在 Github 倉庫中)[12]

  2. 我在 Hugging Face 平臺微調過的 T5 模型(Hugging Face Hub)[13]

END

參考資料

1.

2.

3.https://ai.googleblog.com/2017/08/transformer-novel-neural-network.html

4.https://kawine.github.io/blog/nlp/2019/06/21/word-analogies.html

5.https://developers.google.com/machine-learning/recommendation/collaborative/basics

6.https://ai.googleblog.com/2020/02/exploring-transfer-learning-with-t5.html

7.

8.

9.

10.

11.

12.

13.

14.S. Geng, S. Liu, Z. Fu, Y. Ge, Y. Zhang, Recommendation as Language Processing (RLP): A Unified Pretrain, Personalized Prompt & Predict Paradigm (P5) (2023), 16th ACM Conference on Recommender Systems

本文經原作者授權,由Baihai IDP編譯。如需轉載譯文,請聯絡獲取授權。

原文連結


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70018536/viewspace-2952057/,如需轉載,請註明出處,否則將追究法律責任。

相關文章