Line團隊打造一套3階段購物推薦系統,分別從上千萬商品庫中撈出幾百個用戶可能有興趣的商品,接著透過使用者行為,來排名候選的推薦商品、縮小推薦範圍,最後加上商業邏輯來決定最終推薦給用戶的商品。(圖片來源/Line)

「在數百萬到數千萬的商品中,如何快速找到用戶有興趣的商品,推薦給他們?」Line臺灣機器學習工程師黃耀慶這句話,點出推薦系統對Line購物的重要性和挑戰。

Line購物是一個導購平臺,就像是消費者與店家的橋樑,將使用者導向成千上萬款商品各自的品牌商網站、電商平臺上的商品網頁。為了提高銷售量,得想辦法從百萬、甚至是千萬量級的商品數量,迅速找出使用者有興趣的幾個商品,推薦給他們。

為此,Line團隊發展出一套高度個人化的購物推薦系統,光是推薦情境模組就有20多種,比如個人化文章推薦、降價商品推薦、搜尋關鍵字推薦,又或是類似商品推薦等。這套以機器學習驅動的核心推薦系統叫做Brickmaster,在2022年正式啟用。

Line臺灣如何設計它,來因應多情境和海底撈針般的精準推薦挑戰?多位Line臺灣開發團隊成員,在Hello World開發者大會上揭露了背後的挑戰和開發經驗。

分3階段打造精準推薦系統

首先,開發團隊將Line購物導購的推薦流程,切分為3大階段,一方面提高推薦精準度,又能整合不同消費者行為和業務考量的需求。

第一步是「檢索(Retrieval)」,從包含千萬個商品的資料庫中,撈出數百個使用者可能感興趣的商品。接著是「排名(Ranking)」,根據使用者行為,將第一階段撈出的上百個候選推薦商品,縮小至數十個商品。

最後是「重新排名(Re-rank)」,這是用來結合各種商業邏輯(如促銷活動、節日活動和商品獲益)、商品新鮮度和商品多樣性的考量,來調整候選推薦商品。完成這些階段後,系統可以產生一份用來吸引顧客的推薦商品清單。

階段1:檢索

黃耀慶指出,與全站商品相比,使用者有興趣、會點擊的商品,幾乎只占了全站商品的「0.001%」想要從龐大的商品中,找出這麼少的目標商品,正是第一步,檢索階段的嚴峻挑戰。

為快速從巨量商品中,找出使用者感有興趣的商品,Line採用推薦領域中經典的雙塔模型方法。這個雙塔模型可分為使用者塔(User tower)和商品塔(Item tower),兩個塔各為一套多層的類神經網路。

其中,使用者塔用來處理使用者特徵,得到使用者的嵌入向量。商品塔則用於處理商品特徵,產出商品嵌入向量。這雙塔產出的使用者向量和商品向量,再經過內積運算,進行使用者-商品向量的相似度搜尋,經運算最終得到目標答案,也就是使用者有興趣點擊的商品清單。

為讓模型精準產出使用者向量和商品向量,得先進行特徵工程。Line將雙塔模型所需的特徵分為兩種,即檔案和行為,比如在使用者特徵部分,就有使用者檔案(如基本資料)和使用者行為(如點擊次數、點擊品項),在商品特徵部分,則是商品檔案和商品行為,如商品名稱、ID、價格,以及同一商品被不同性別購買的次數、商品與不同族群的互動關係等。

這些特徵涵蓋數值、類別和文字等3種類型,Line對這些類型特徵,各有其處理方式。比如針對數值型特徵進行標準化(Normalization),來縮小數值範圍、好讓類神經網路學習;又或是使用威爾遜得分區間(Wilson Score Interval),來減少數值的偏差。

對於類別型特徵,也有幾種常見的處理方式,像是將商品品項轉換為數字編碼的獨熱編碼方法、確保順序邏輯的序數編碼等。文字型特徵則以BERT編碼來處理。

在實務上,Line將雙塔模型拆為2種運作模式,商品塔採取離線處理,使用者塔則靠線上處理。這是因為,商品行為的改變頻率較低,但使用者喜好變動快速,模型得在短時間內處理,才能篩選出最貼近需求的商品。

不只可以利用使用者與商品的相似度,來尋找推薦商品,也可以利用使用者最近喜歡的商品清單,來尋找更多使用者感興趣的同一類商品。這是Line購物在檢索階段,會使用的另一種商品相似度搜尋(Item to item)作法,一樣採用雙塔模型方法,只是將其中一塔改為使用者最近喜歡的商品,另一塔則是商品庫商品,透過比對使用者最近喜歡的商品特徵,以及商品庫商品最新特徵,來找出用戶可能有興趣的商品。

階段2:排名

經過檢索階段,可以從上千萬個商品中,篩選出幾百個使用者感興趣的商品了。但這個數量還是太多,接下來藉由排名作法,找出優先推薦的項目。

Line會根據使用者在Line購物「推薦版位」(比如夯話題)上的行為,推測使用者感興趣的濃厚程度,來排列候選推薦商品的順序。這可以想像為,另一種縮小推薦商品範圍的方法。

在這個階段,Line團隊一樣採用類神經網路,來計算在推薦版位,使用者會點擊的商品。排名模型所處理的特徵有3種,包括使用者特徵、商品特徵,以及使用者-商品特徵(比如用戶對商品的點擊或購買次數)。

在實務上,為支援龐大的運算需求,Line採用開源大數據處理工具PySpark,以分散式運算來執行排名模型的推論工作。這一步,就像是將原本一臺機器100秒才能完成的工作,分散給100臺機器處理,1秒就能完成該工作。

階段3:再排名

完成第二階段的排名工作,篩選出使用者最有興趣到一般有興趣的商品排序後,還需要進行最後一步的調整,才推薦給使用者。

調整條件可分為三類,包括商品多樣性、商品新鮮度和商業邏輯。進一步來說,商品多樣性是指,推薦商品要包含不同類型的商品,而不是前10名都推同一類型商品給用戶,比如滑鼠。

就商品新鮮度而言,顧名思義是盡量推薦較新的商品給用戶。不過,新上架的商品缺乏足夠的資料,難以靠模型學習來篩選。於是,Line團隊改以規則式方法,讓新上架的商品,也能納入推薦商品名單內,來增加曝光度。於是,Line團隊改以規則式方法,將新上架的商品納入推薦商品名單內,來增加曝光度。這麼做,短期內點擊率雖會下降,但長期而言,有益於推薦系統發展。

這是因為,當使用者接收到的推薦商品,都來自自己認知範圍內,久而久之容易膩。而保留流量給新品推薦,不只能讓使用者探索興趣,也能曝光新品、累積資料,利於後續模型訓練和推薦。

最後的商業邏輯,則是指推薦商品要符合促銷活動、節假日活動或商品獲益考量。比如父親節時,提高當時時令禮品的權重。

至此,「檢索」、「排名」、「再排名」這三大階段,構成了Line購物推薦系統的核心流程。

善用開源技術提高模型處理效率

由於商品庫和用戶數量龐大,模型必須處理成千上萬個特徵,需要大量運算處理。因此,除了分散式處理特徵工程的PySpark,Line團隊還借助一些開源工具,來提高作業效率和各階段任務管理。

這包括用來支援模型分散式訓練的數據函式庫Petastorm,用來管理和追蹤模型實驗成效的MLflow,能將PyTorch模型訓練程式碼模組化的PyTorch Lighting,以及視覺化管理模型訓練排程的Airflow。

這些工具相互搭配,而且缺一不可。比如,PySpark借助多臺機器資源,來分散式執行Line購物商品和使用者特徵工程,Petastorm能快速打散Line購物累積的巨量資料並讀取,MLflow則用來追蹤推薦模型表現,比如實驗中哪些模型超參數效果最好,而PyTorch Lighning除了能將模型訓練模組化,還能簡潔記錄推薦模型資訊等。這些工具也是Line購物打造出超強推薦系統的關鍵。

 相關報導 

熱門新聞

Advertisement