當(dāng)年打開天貓的那一刻,它為你完成了華麗的變身,成為世上獨(dú)一無二的“天貓”,這就是智能推薦的力量。今天,來自阿里巴巴搜索推薦事業(yè)部的算法工程師陳啟偉為你介紹天貓如何玩轉(zhuǎn)首頁個(gè)性化推薦,揭開搜索推薦的神秘面紗。
天貓首頁作為用戶打開手機(jī)天貓App的第一印象,所推薦的商品極大地決定了用戶接下來的行為,對用戶流量的承接與分發(fā)、提升用戶購物體驗(yàn)和呈現(xiàn)天貓貨品的性價(jià)比、品質(zhì)感及品牌力起到至關(guān)重要的作用,成為提升天貓用戶體驗(yàn)的關(guān)鍵環(huán)節(jié)之一。
1、場景介紹
天貓首頁的場景主要包括大促會場入口和日常頻道兩大類,如圖1所示。其中左圖為大促會場入口,包括主會場入口和行業(yè)會場入口;主會場入口通過為用戶推薦7個(gè)商品(3個(gè)在中間動態(tài)輪播)給大促主會場進(jìn)行引流,引流 UV 達(dá)數(shù)千萬以上;行業(yè)會場入口通過為用戶推薦4個(gè)個(gè)性化會場和商品為數(shù)萬的會場引流。右圖為日常頻道,包括限時(shí)搶購、天貓好物、聚劃算、天貓閃降和精選頻道;首頁通過個(gè)性化推薦商品為各個(gè)特色的頻道引流,通過各個(gè)頻道來培養(yǎng)用戶心智,讓用戶在天貓逛起來。

過去的首頁推薦更多的是在相關(guān)性推薦的單一數(shù)據(jù)目標(biāo)上進(jìn)行優(yōu)化,如今天貓首頁的推薦系統(tǒng)不僅僅考慮推薦結(jié)果的相關(guān)性,還在推薦結(jié)果的發(fā)現(xiàn)性、多樣性等方面上做了更深度的優(yōu)化,"效率和體驗(yàn)并重"成為天貓首頁新的優(yōu)化目標(biāo)。Graph Embedding、Transformer、深度學(xué)習(xí)、知識圖譜等新的技術(shù)已先后在天貓首頁的推薦系統(tǒng)成功落地,為場景帶來了兩位數(shù)的點(diǎn)擊率提升和兩位數(shù)的疲勞度下降。
2、推薦框架
天貓首頁的個(gè)性化推薦系統(tǒng)可以分為召回、排序和機(jī)制三個(gè)模塊。其中,召回模塊主要是從全量的商品素材中檢索出用戶感興趣的 TopK 個(gè)候選商品,排序模塊專注于用戶對商品的 CTR 預(yù)估,機(jī)制模塊負(fù)責(zé)后期的流量調(diào)控、體驗(yàn)優(yōu)化、策略調(diào)控等和最終的商品排序。整個(gè)推薦系統(tǒng)采用 Graph Embedding、Transformer、深度學(xué)習(xí)、知識圖譜、用戶體驗(yàn)建模等新的技術(shù)構(gòu)建起來,后面章節(jié)將介紹這個(gè)推薦系統(tǒng)的關(guān)鍵技術(shù)點(diǎn)。

3、召回
3.1 Ranki2i
Item-CF 是目前應(yīng)用最廣泛的召回算法,其原理是根據(jù)兩個(gè)商品被同時(shí)點(diǎn)擊的頻率來計(jì)算兩個(gè)商品之間的相似度 simScore,得到 i2i 表;然后通過用戶的 trigger 去查詢 i2i 表,擴(kuò)展用戶感興趣的商品。Item-CF 的基本算法雖然簡單,但是要獲得更好的效果,往往需要根據(jù)實(shí)際的業(yè)務(wù)場景進(jìn)行調(diào)優(yōu)。清除爬蟲、刷單等噪聲數(shù)據(jù),合理選擇計(jì)算商品之間相似度的數(shù)據(jù)的時(shí)間窗口,引入時(shí)間衰減,只考慮同一個(gè)類目下商品對,歸一化、截?cái)唷⒋蛏⒌炔呗詫?yōu)化 Item-CF 的效果都有很大的幫助。
Ranki2i 是一種改進(jìn)的 Item-CF 算法,其在 item-CF 得到的兩個(gè)商品之間的相似度 simScore 的基礎(chǔ)上再乘以該 trigger item 所召回的該 target item 在過去一段時(shí)間內(nèi)的 ctr (注意 ctr 的計(jì)算需要進(jìn)行適當(dāng)?shù)钠交?,對 i2i 的 simScore 進(jìn)行修正,使得 i2i 表不僅考慮了兩個(gè)商品的點(diǎn)擊共現(xiàn)性,還考慮了召回商品的點(diǎn)擊率。
我們基于全網(wǎng)的點(diǎn)擊數(shù)據(jù)和天貓首頁場景內(nèi)的日志來計(jì)算 Ranki2i 表,并部署在檢索系統(tǒng) Basic Engine 上,對每個(gè)訪問天貓首頁的用戶,從基礎(chǔ)特征服務(wù)系統(tǒng) ABFS 中獲取用戶的 trigger,并以此查詢 Ranki2i 表來召回用戶感興趣的商品。
經(jīng)典 Item-CF 類算法直接根據(jù)兩個(gè)商品被同時(shí)點(diǎn)擊的頻率來計(jì)算兩個(gè)商品之間的相似度,在尋找用戶點(diǎn)擊商品的相似、相關(guān)以及搭配商品上都有很大的優(yōu)勢,且其具有簡單、性能高等特點(diǎn),已成為目前應(yīng)用使用最為廣泛的召回算法。然而由于經(jīng)典 Item-CF 類算法的召回結(jié)果的候選集限定在用戶的歷史行為類目中,并且算法難以結(jié)合商品的 Side Information,導(dǎo)致其推薦結(jié)果存在發(fā)現(xiàn)性弱、對長尾商品的效果差等問題,容易導(dǎo)致推薦系統(tǒng)出現(xiàn)“越推越窄”的問題,從而制約了推薦系統(tǒng)的可持續(xù)發(fā)展。為了跟精準(zhǔn)地給用戶推薦心儀的商品,同時(shí)維護(hù)推薦系統(tǒng)的可持續(xù)發(fā)展,解決推薦系統(tǒng)的發(fā)現(xiàn)性推薦和長尾推薦等問題,我們團(tuán)隊(duì)提出了 S3Graph Embeeding 算法和 MIND 算法。
3.2 S3 Graph Embedding
Graph Embedding 是一種將復(fù)雜網(wǎng)絡(luò)投影到低維空間的機(jī)器學(xué)習(xí)技術(shù),典型的做法是將網(wǎng)絡(luò)中的節(jié)點(diǎn)做向量化表達(dá),使節(jié)點(diǎn)間的向量相似度接近原始節(jié)點(diǎn)間在網(wǎng)絡(luò)結(jié)構(gòu)、近鄰關(guān)系、Meta信息等多維度上的相似性。
我們團(tuán)隊(duì)提出的 S3 Graph Embeeding 算法利用全網(wǎng)以十億的用戶對十億規(guī)模的商品的序列化點(diǎn)擊行為構(gòu)建千億規(guī)模的 Graph,結(jié)合深度隨機(jī)游走技術(shù)對用戶行為進(jìn)行"虛擬采樣",并引入商品的 Side Information 增加泛化學(xué)習(xí)能力,將全網(wǎng)的商品進(jìn)行 embedding,統(tǒng)一成同一維度的向量表示。該向量被直接用在 Item-CF 中商品相似度的計(jì)算中,相比經(jīng)典 Item-CF 以共同點(diǎn)擊次數(shù)來衡量商品相似度的做法,該算法不需要兩個(gè)商品被同時(shí)點(diǎn)擊過也能計(jì)算出商品間的相似度,并且引入 Side Information 的使其能更好的處理長尾的商品和冷啟動的商品。

我們基于 Behemoth X2Vec 平臺,利用全網(wǎng)的點(diǎn)擊數(shù)據(jù)和商品 Side Information 構(gòu)建全網(wǎng)商品的 embedding,并以此來計(jì)算 Graph Embedding i2i 表,部署在Basic Engine 上,對每個(gè)訪問天貓首頁的用戶,從 ABFS 中獲取用戶的 trigger,并以此查詢 Graph Embedding i2i 表來召回用戶感興趣的商品。
3.3 MIND
Multi-Interest Network with Dynamic Routing (MIND) 是我們團(tuán)隊(duì)提出的一種向量召回的方法,其通過構(gòu)建多個(gè)和商品向量在統(tǒng)一的向量空間的用戶興趣向量來表示用戶的多個(gè)興趣,然后通過這多個(gè)興趣向量去檢索出TopK個(gè)與其近鄰的商品向量,得到 TopK個(gè) 用戶感興趣的商品。
傳統(tǒng) DeepMatch 方法為每個(gè)用戶生成一個(gè)興趣向量,但在實(shí)際的購物場景中,用戶的興趣是多樣的,不同興趣之間甚至可能是不相關(guān)的,比如用戶可能同時(shí)期望購買服裝、化妝品、零食,而一個(gè)長度有限的向量很難表示用戶這樣的多個(gè)興趣。我們的 MIND 模型通過 Dynamic Routing 的方法從用戶行為和用戶屬性信息中動態(tài)學(xué)習(xí)出多個(gè)表示用戶興趣的向量,更好的捕捉用戶的多樣興趣,來提升召回的豐富度和準(zhǔn)確度。

圖4. MIND模型
我們基于實(shí)時(shí)排序服務(wù) RTP 和召回引擎 Basic Engine(BE) 開發(fā)了一整套 MIND 在線服務(wù)體系。對每個(gè)訪問場景的用戶,先通過部署在 RTP 中的 MIND 模型的 Multi-interest Extractor Layer 提取出用戶的多個(gè)興趣向量,然后利用這些興趣向量在 Basic Engine 中通過 aitheta 檢索引擎召回用戶感興趣的商品。
3.4 Retargeting
Retargering 是一種將用戶點(diǎn)擊、收藏或加購的商品再次推薦給用戶的一種推薦策略。在電商的推薦系統(tǒng)中,用戶的行為包含瀏覽、點(diǎn)擊、收藏、加購和下單等行為,我們當(dāng)然希望用戶每一個(gè)行為流最終都能到達(dá)轉(zhuǎn)化的環(huán)節(jié),但是事實(shí)并非如此。當(dāng)用戶產(chǎn)生了下單行為的某些上游行為時(shí),會有相當(dāng)一部分用戶因?yàn)楦鞣N原因沒有最終達(dá)成交易,但是用戶當(dāng)時(shí)沒有產(chǎn)生下單行為并不代表用戶對當(dāng)前商品不感興趣,當(dāng)用戶再次來到天貓時(shí),我們根據(jù)用戶之前產(chǎn)生的先驗(yàn)行為理解并識別用戶的真正意圖,將符合用戶意圖的商品再次推薦給用戶,引導(dǎo)用戶沿著行為流向下游,最終達(dá)到下單這個(gè)最終的行為。
Retargering 的召回策略更多是在大促促成交的場景下使用,其召回量更需要嚴(yán)格控制。
3.5 Crowd-based Filtering
上述的召回策略都能跟著用戶的歷史行為等信息召回用戶感興趣的商品,但是對于未登錄用戶或是冷啟動的用戶,這些召回策略所能召回的商品是有限的。Crowd-based Filtering 是一種替補(bǔ)的召回策略,是一種基于人群屬性來推薦的方法,其通過將用戶按照性別、年齡段、收貨城市等粗粒度的屬性劃分為若干個(gè)人群,然后為基于每個(gè)人群的行為數(shù)據(jù)挑選出該人群點(diǎn)擊率高的 TopK 個(gè)商品作為該人群感興趣的商品。
3.6 融合與調(diào)制
為了結(jié)合不同召回策略的優(yōu)點(diǎn),同時(shí)提高候選集的多樣性和覆蓋率,我們將以上召回策略召回的商品融合在一起。融合的過程中根據(jù)各個(gè)召回策略召回結(jié)果的歷史表現(xiàn)和流量調(diào)控的需求,對各個(gè)召回算法的召回比例進(jìn)行適當(dāng)?shù)恼{(diào)制。
4、 排序
4.1 排序特征
排序特征在排序的效果中起到了非常重要的作用,天貓首頁推薦系統(tǒng)排序模型的特征可以抽象為五類:
- User Profile Features:用戶側(cè)的基礎(chǔ)特征,如用戶的性別、年齡、城市、購買力等。
- Item Features:商品側(cè)的特征,如商品 ID、類目 ID、店鋪 ID、標(biāo)簽等。
- Context Features:上下文特征,如 match_type、位置、頁碼等。
- Cross Features:交叉特征,如用戶側(cè)特征與商品側(cè)特征的交叉等。
- Sequence Item Features:用戶對商品的行為特征,如用戶點(diǎn)擊的商品序列、點(diǎn)擊的類目序列及相應(yīng)的 Positional Bias。
4.2 排序樣本
排序樣本的選取也會影響排序模型的效果。排序的樣本來自于場景產(chǎn)生的曝光和點(diǎn)擊日志,對場景日志進(jìn)行有效的清洗去噪,準(zhǔn)實(shí)時(shí)計(jì)算場景活躍用戶、黑名單用戶,保留對場景有感知的部分用戶,過濾數(shù)據(jù)中混雜的刷單爬蟲等作弊行為數(shù)據(jù),過濾大促0點(diǎn)下單和紅包雨等異常時(shí)段用戶的非正常行為日志等對提升模型效果有一定的幫助。
4.3 排序模型
4.3.1 經(jīng)典 Deep 排序模型
Google 提出的 WDL 模型奠定了目前 Deep 排序模型的基本框架。
DeepFM/PNN/DCN/DeepResNet 等模型把傳統(tǒng)離散 LR 中特征工程的經(jīng)驗(yàn)搬到DL 中來,用人工構(gòu)建的代數(shù)式先驗(yàn)來幫助模型建立對某種認(rèn)知模式的預(yù)設(shè),幫助模型更好的建模。DIN 等模型引入了用戶行為數(shù)據(jù),通過 Attention 來捕捉了用戶興趣的多樣性以及與預(yù)測目標(biāo)的局部相關(guān)性,對大規(guī)模離散用戶行為數(shù)據(jù)的進(jìn)行建模。
4.3.2 BST
類似 DeepFM/PNN/DCN/DeepResNet 等模型更多的在探索如何更好的利用 id features 和 bias features 去逼近 id features 和 bias features 所能達(dá)到的模型上限,很少探索如何有效利用 seq features;DIN 等模型在這些模型的基礎(chǔ)上進(jìn)行 seq features 建模的探索,其用打分 item對seq features 做 attention 后對其進(jìn)行weighted sum pooling,雖然可以很好地表達(dá)打分 item 和用戶行為序列的相關(guān)性,但不能抽象用戶行為序列內(nèi)部的相關(guān)性。
為了解決 WDL 和 DIN 等模型存在的上述問題,受 Transformer 在 NLP 任務(wù)中有效地處理詞序列的啟發(fā),我們提出了 Behavior Sequence Transformer (BST) 模型,該模型用 Transformer 來建模用戶的行為序列,學(xué)習(xí)用戶行為序列內(nèi)部的相關(guān)性及其與打分 item 之間的相關(guān)性。

BST 模型的結(jié)構(gòu)如圖5所示,模型將用戶行為序列(包括打分 item)、用戶側(cè)特征、商品側(cè)特征、上下文特征、交叉特征作為輸入;首先通過 Embedding 技術(shù)將其 embeds 為低維稠密向量;為了更好的學(xué)習(xí)用戶行為序列內(nèi)部的相關(guān)性及其與打分item之間的相關(guān)性,通過 Transformer 來學(xué)習(xí)每個(gè)用戶行為序列的深度表示;然后將用戶側(cè)特征、商品側(cè)特征、上下文特征、交叉特征和 Transformer 層的輸出concat 在一起得到樣本的特征表示向量,并利用三層的 MLP 網(wǎng)絡(luò)來進(jìn)一步學(xué)習(xí)特征表示向量更抽象的表達(dá)和特征之間的交叉關(guān)系;最后通過 Sigmoid 計(jì)算模型的輸出。
模型通過 Transformer 來建模用戶行為序列,首先通過 Self-Attention 學(xué)習(xí)用戶行為序列內(nèi)部之間的相關(guān)性及其與打分 item 之間的相關(guān)性。考慮向量的物理意義,使用內(nèi)積來計(jì)算attention,這樣兩個(gè) item 越相近,內(nèi)積越大,attention 增益越大。并采用 Mutil-Head Attention 的方式,有效的將序列特征放到多個(gè)平行的空間進(jìn)行計(jì)算,提升模型的容錯性與精準(zhǔn)度。

其中,為投影矩陣,E 是用戶行為序列與當(dāng)前打分Q進(jìn)行拼接后的 Embedding 表示,,h 是 head 數(shù)。
為了進(jìn)一步增強(qiáng)網(wǎng)絡(luò)的非線性表示能力,將 Self-Attention 的輸出做一層 Point-wise Feed-Forward Networks (FFN) 。
我們基于實(shí)時(shí)排序服務(wù) RTP,在 GPU 集群上部署了量化后的 BST 模型,對于每一個(gè)打分 item 列表,RTP 將其拆分后并行打分,實(shí)時(shí)預(yù)測用戶對打分 item 列表中每一個(gè)item的點(diǎn)擊率。
5、機(jī)制
5.1 視覺體驗(yàn)優(yōu)化
5.1.1 基于知識圖譜的標(biāo)準(zhǔn)類目擴(kuò)展
受種種因素制約,淘寶天貓商品類目體系過于細(xì)致,不符合推薦場景中用戶對商品的主觀分類。我們與知識圖譜團(tuán)隊(duì)合作,建立了標(biāo)準(zhǔn)類目體系,從語義層面出發(fā),結(jié)合場景的特點(diǎn),將相近的葉子類目進(jìn)行不同程度的聚合,分別應(yīng)用在購買類目過濾和類目打散時(shí)的類目擴(kuò)展。

5.1.2 基于圖像指紋的相似圖片檢測系統(tǒng)
淘寶商品素材浩如煙海,相似的展示圖片層出不窮。這種相似經(jīng)常超越圖片所屬商品本身的屬性,通過商品本身的標(biāo)題、類目等語義信息已無法識別這種相似,為此我們團(tuán)隊(duì)研發(fā)了相似圖片檢測系統(tǒng),從圖形本身出發(fā)來檢測商品素材圖片之間的相似度。
同圖檢測系統(tǒng)以 CNN 作為分類器,識別商品素材圖片所屬的葉子類目,將最后隱藏層向量作為圖像特征向量,并通過向量的相似度來計(jì)算商品之間的相似度。為了加速向量相似度的計(jì)算,我們使用 SimHash 算法將圖像特征向量進(jìn)一步轉(zhuǎn)化成高維圖像指紋,將計(jì)算兩個(gè)特征向量距離的問題轉(zhuǎn)化成計(jì)算兩個(gè)圖像指紋漢明距離的問題, 在精度損失可接受的范圍內(nèi)極大地降低了計(jì)算復(fù)雜度。

5.1.3 多維度打散
天貓首頁由大促會場入口和日常頻道構(gòu)成,大促會場入口包括主會場入口和行業(yè)會場入口,日常頻道包括限時(shí)搶購、天貓好物、聚劃算、天貓閃降和一些精選精選頻道,每一個(gè)頻道的商品素材都是獨(dú)立的,存在一定的重復(fù),如果不加限制,各個(gè)頻道之間容易出現(xiàn)相似的推薦結(jié)果,這在“寸土寸金”的首頁,無疑是一種浪費(fèi),也會傷害用戶體驗(yàn),不利于導(dǎo)購心智的培養(yǎng)。為此,我們設(shè)計(jì)了多種打散方案,從多個(gè)維度(商品/標(biāo)準(zhǔn)類目/品牌/會場/相似圖片等)對首頁各個(gè)頻道推薦的素材進(jìn)行聯(lián)合打散,讓推薦的結(jié)果更具多樣性。
5.2 模板式實(shí)時(shí)曝光過濾
由于天貓首頁在手機(jī)天貓的首屏,用戶每次打開 APP 都會獲得曝光,其中就包含了很多無效的曝光,如用戶直接進(jìn)入搜索頻道、進(jìn)入購物車或者大促期間來搶紅包雨搶券等,這些無效曝光中用戶對該場景是無心智的。常見的將對用戶偽曝光的商品記錄下來并利用其來進(jìn)行實(shí)時(shí)曝光過濾的方法對首頁這種無效曝光率很高的場景來說“太嚴(yán)格”了,會使得推薦的效果大打折扣。為此,我們設(shè)計(jì)了一種模板式實(shí)時(shí)曝光過濾的方法。一次推薦給用戶出多個(gè)模板,并記錄用戶上次看到的第 i 個(gè)模板,然后在本次給用戶展現(xiàn)第 i+1個(gè)模板。如果用戶產(chǎn)生新的行為,模板的推薦內(nèi)容也會隨之進(jìn)行更新。
5.3 用戶及類目個(gè)性化的購買過濾
”買了還推“是過去推薦系統(tǒng)經(jīng)常被詬病的吐槽點(diǎn),要解決該問題就需要對用戶購買的類目進(jìn)行合理的過濾。然而由于每個(gè)葉子類目的購買周期不同,不同用戶對類目的購買周期也不同,因此設(shè)計(jì)購買過濾時(shí)還需要關(guān)注不同用戶對不同類目過購買過濾的個(gè)性化需求。購買過濾作為所有推薦場景都會面對的基礎(chǔ)問題,我們與工程團(tuán)隊(duì)合作推出了統(tǒng)一的全域購買過濾服務(wù),為每一個(gè)類目定制一個(gè)購買屏蔽周期,根據(jù)用戶最近一段時(shí)間內(nèi)購買的行為為每個(gè)用戶維護(hù)一個(gè)實(shí)時(shí)的購買過濾類目,同時(shí)考慮到如果該用戶在購買屏蔽周期內(nèi)又主動在該類目上發(fā)生了多次點(diǎn)擊行為,說明用戶對該類目仍感興趣,有購買的可能,則該類目會被"解禁"。天貓首頁接入購買過濾服務(wù)之后,"買了還推"的問題也得到了大大的改善。
6、總結(jié)
本文從算法的角度介紹了天貓首頁的推薦系統(tǒng),從召回、排序、推薦機(jī)制三個(gè)方面講解了我們?nèi)绾卫?Graph Embedding、Transformer、深度學(xué)習(xí)、知識圖譜、用戶體驗(yàn)建模等多項(xiàng)技術(shù)來構(gòu)建先進(jìn)的推薦系統(tǒng)。當(dāng)然,完整的推薦系統(tǒng)是一個(gè)復(fù)雜系統(tǒng),構(gòu)建一個(gè)"懂你"的天貓首頁還離不開產(chǎn)品、工程、運(yùn)營等同學(xué)的合作和幫助。在個(gè)性化推薦的道路上,我們將繼續(xù)不斷積累和打磨,深耕技術(shù),創(chuàng)造更好的個(gè)性化服務(wù),也相信個(gè)性化推薦的未來會更好。