云上個(gè)性化推薦——基于PAI和Hologres的個(gè)性化推薦最佳實(shí)踐
本文內(nèi)容來(lái)自于
由達(dá)摩院領(lǐng)航舉辦的3月20日向量檢索專(zhuān)場(chǎng)Meetup講師演講內(nèi)容
天邑
阿里云計(jì)算平臺(tái)高級(jí)算法工程師。主要從事基于PAI平臺(tái)的召回和排序算法研發(fā),及基于云產(chǎn)品的推薦系統(tǒng)解決方案研發(fā),賦能客戶個(gè)性化推薦解決方案落地。
一、云上個(gè)性化推薦
二、向量召回
三、最佳實(shí)踐
解決方案簡(jiǎn)介
(一) 個(gè)性化推薦 - 核心能力
個(gè)性化推薦核心價(jià)值是要做到千人千面,實(shí)現(xiàn)用戶需求和資源的最佳匹配,從而提升流量到業(yè)務(wù)目標(biāo)的轉(zhuǎn)化效果。

個(gè)性化推薦流程一般分召回和排序兩個(gè)部分,我們要從海量的數(shù)據(jù)中來(lái)精準(zhǔn)的篩選出幾個(gè)到幾十個(gè)Item給用戶推薦過(guò)去。

常見(jiàn)推薦方案一:運(yùn)營(yíng)經(jīng)驗(yàn)制定推薦策略
需要有推薦經(jīng)驗(yàn)的產(chǎn)品設(shè)計(jì)或運(yùn)營(yíng)人員,通過(guò)積累的個(gè)人經(jīng)驗(yàn),制定業(yè)務(wù)推薦策略,并結(jié)合數(shù)據(jù)分析,調(diào)整推薦方案,通常在業(yè)務(wù)規(guī)模比較小的企業(yè),冷啟動(dòng) 階段使用,有明顯的效果弊端:
推薦方案及效果,受到人為影響而不可控。
方案難以實(shí)時(shí)結(jié)合業(yè)務(wù)發(fā)展快速更新,迭代速度慢。
數(shù)據(jù)計(jì)算能力有限,大規(guī)模數(shù)據(jù)分析時(shí)候困難。
缺少算法人員搭建企業(yè)推薦系統(tǒng),影響企業(yè)提升市場(chǎng)競(jìng)爭(zhēng)
常見(jiàn)推薦方案二:開(kāi)源框架自建推薦系統(tǒng)常見(jiàn)推薦方案一:運(yùn)營(yíng)經(jīng)驗(yàn)制定推薦策略
越來(lái)越多的企業(yè)選擇結(jié)合AI技術(shù)實(shí)現(xiàn)企業(yè)推薦系統(tǒng),但使用開(kāi)源框架自建推薦系統(tǒng),也存在諸多問(wèn)題,影響業(yè)務(wù)發(fā)展:
成本高 需要企業(yè)采購(gòu)大量機(jī)器用于支持?jǐn)?shù)據(jù)計(jì)算,不僅一次性投入資金多,且大部分企業(yè)都會(huì)存在機(jī)器資源閑置的浪費(fèi)問(wèn)題
工程化工作量大 需要適配主流開(kāi)源框架,存在巨大的工程化工作,以實(shí)現(xiàn)不同業(yè)務(wù)場(chǎng)景最優(yōu)推薦效果,或?qū)崿F(xiàn)支持多部門(mén)模型需求。
運(yùn)維難承載海量數(shù)據(jù)、多任務(wù)運(yùn)行,日常運(yùn)維難度很大。
效果不理想。
(三)個(gè)性化推薦 – 云上方案
在云上我們可以利用云上的工程基建和算法基建來(lái)減緩這部分的成本。在云上提供了兩種的推薦方案,一種是黑盒化的,一種是白盒化的,黑盒化的解決方案低門(mén)檻易上手。白盒化的解決方案,整個(gè)算法流程是工程師全部自主可控的,它適合于有一定規(guī)模的,日處理數(shù)據(jù)百萬(wàn)起的團(tuán)隊(duì),可以支持推薦算法的快速迭代。

(四)云上個(gè)性化推薦 – 白盒解決方案

這是整個(gè)白盒化的推進(jìn)解決方案的架構(gòu)圖,我們從下往上看,最下層是數(shù)據(jù)處理模塊,MaxCompute和Dataworks的負(fù)責(zé)離線的特征處理,得到一些離線訓(xùn)練樣本和用戶的特征數(shù)據(jù)物料數(shù)據(jù),而Flink是支持實(shí)時(shí)的特征處理,有了特征樣本數(shù)據(jù),會(huì)流入到PAI-Studio一體化的建模平臺(tái)中。
其中PAI-EasyRec負(fù)責(zé)推薦算法,由GraphLearn和Alink負(fù)責(zé)一些圖算法和傳統(tǒng)機(jī)器設(shè)計(jì)算法。有了這一些算法,一般會(huì)產(chǎn)出兩部分的模型,召回模型和排序模型。召回模型我們可以例行部署到Hologres上,部署成各種基礎(chǔ)索引表,向量召回的話會(huì)部署成向量表,這邊圖不太好畫(huà),user部分向量也可以在EAS上進(jìn)行實(shí)時(shí)推理。排序模型的話,我們會(huì)部署成在線的模型推理服務(wù)來(lái)進(jìn)行在線的打分推理。
有了基礎(chǔ)索引表向量表和模型的推理服務(wù),我們?cè)偻蠈泳褪钦麄€(gè)推薦服務(wù)的引擎,我們稱(chēng)之為PAI-Rec推薦服務(wù)引擎,PAI-Rec直接接受用戶的推薦請(qǐng)求,串聯(lián)了多路召回、過(guò)濾、排序和冷啟動(dòng)模塊來(lái)給出TopN推薦列表。
PAI-Rec之外,我們有PAI-ABTest來(lái)做ab實(shí)驗(yàn),它主要負(fù)責(zé)科學(xué)流量劃分和指標(biāo)的分析,支持我們?cè)粕贤扑]的效果的快速迭代。
(五)云上個(gè)性化推薦 – PAI-EasyRec算法框架

我們重點(diǎn)來(lái)看一下其中的幾個(gè)模塊,首先是PAI-EasyRec的整個(gè)推薦算法框架,可以支持多樣化的數(shù)據(jù)源,比如說(shuō)OSS、OdpsTable、HDFS、Kafka等等,有了這樣的特征數(shù)據(jù),我們會(huì)進(jìn)入一個(gè)離在線一致的特征處理模塊,這里面可以支持IdFeature 、RawFeature 、SeqFeature等等的特征處理。最中間的是ModelZoo,包含很多PAI精心沉淀的排序模型、召回模型和多目標(biāo)模型,當(dāng)然也支持算法工程師來(lái)基于此自定義自己的算法。整體上看,EasyRec能在PAI上提供萬(wàn)億樣本、千億特征的超大規(guī)模分布式訓(xùn)練、分布式的評(píng)估能力,還支持自動(dòng)超參搜索和知識(shí)蒸餾等調(diào)優(yōu)效果的功能。
(六)云上個(gè)性化推薦 – PAI冷啟動(dòng)方案
除了通用的推薦算法之外,我們還提供了PAI冷啟動(dòng)方案,我們?yōu)槭裁葱枰鋯?dòng)?
因?yàn)槌R?jiàn)的推薦算法對(duì)新物品和新用戶是不太友好的,
新物品在很大程度上是常常會(huì)被低估的。
冷啟動(dòng)問(wèn)題處理不好會(huì)影響內(nèi)容創(chuàng)造者的積極性,進(jìn)而影響平臺(tái)生態(tài)的健康發(fā)展

我們PAI上的冷啟動(dòng)方案分為用戶冷啟動(dòng)和物品冷啟動(dòng)兩部分。用戶冷啟動(dòng)主要是基于用戶的基本畫(huà)像,基于社交關(guān)系,基于用戶興趣的一些熱門(mén)推薦,U2U的推薦。物品的冷啟動(dòng)的算法的則比較豐富了,有基于內(nèi)容理解的,有基于快速試探強(qiáng)化學(xué)習(xí)的,基于不同場(chǎng)景間遷移學(xué)習(xí)的,此外,少樣本學(xué)習(xí)、知識(shí)圖譜的算法,我們也在逐步的研發(fā)上線中。
(七)云上個(gè)性化推薦 – PAIRec推薦引擎
PAIRec推薦引擎從上往下看,分為接口層、召回層、過(guò)濾層、排序?qū)?、重排層,這些模塊它端到端的串聯(lián)起了整個(gè)推薦服務(wù)的各個(gè)流程,并且其中的一些內(nèi)置模塊是可以簡(jiǎn)單的通過(guò)config文件來(lái)配置化使用的。

當(dāng)然為了滿足各種各樣場(chǎng)景定制化的需求,我們也支持在各個(gè)層便捷的注冊(cè)各種定義的實(shí)現(xiàn)來(lái)滿足靈活性的要求。
(八)云上個(gè)性化推薦 – PAI-A/BTest
PAI-A/BTest是我們保障快速做推薦迭代效果很重要的一環(huán),我們首先來(lái)看一下A/B Test是什么,我們會(huì)在同一時(shí)間維度將用戶劃分成兩組,在保證用戶特征相同的情況下,讓用戶看到不同的兩個(gè)ab方案的設(shè)計(jì),然后根據(jù)最后數(shù)據(jù)的好壞來(lái)決定到底選擇哪個(gè)方案,最終把哪個(gè)方案來(lái)推全,他要走的更進(jìn)一步,可以滿足各多樣化的A/B Test的需求。

推薦場(chǎng)景為例,我們可以支持這種普通的流量劃分,還可以支持分層的流量劃分,分層流量劃分有什么好處?
推薦場(chǎng)景我們分為召回、排序、重排的這些模塊,這些流量是完全可以正交復(fù)用的,我們可以在很小的流量場(chǎng)景之下就可以上很多的實(shí)驗(yàn)上去幫助我們快速的迭代,PAI-A/BTest還支持在實(shí)驗(yàn)室上設(shè)置各種各樣的條件,比如區(qū)分新用戶和老用戶,來(lái)滿足各種各樣多樣化的ab的需求。

PAI召回算法 & HOLO向量檢
(一)向量召回 – 簡(jiǎn)介
召回是在整個(gè)推薦系統(tǒng)中很重要的一環(huán),它是在整個(gè)推薦系統(tǒng)最前線的部分,決定了整個(gè)推薦系統(tǒng)算法效果的上限。
傳統(tǒng)的召回算法,如 CF、Swing等,他們雖然是簡(jiǎn)單高效的,但是他們完全基于用戶的歷史行為來(lái)進(jìn)行推薦,沒(méi)有結(jié)合用戶的畫(huà)像信息,物品的屬性信息來(lái)產(chǎn)出推薦結(jié)果,這導(dǎo)致了整個(gè)推薦效果發(fā)現(xiàn)性很弱,會(huì)導(dǎo)致越推越窄。
而向量召回是將User、Item都嵌入到一個(gè)向量空間中去,一定程度上緩解了發(fā)現(xiàn)性的問(wèn)題。一般向量召回分為 U2I和I2I兩種。U2I的向量召回主要代表性的如 DSSM、MIND、YoutubeDNN 等,思想很簡(jiǎn)單,將User側(cè)和Item側(cè)都抽取到向量空間中去,用User的向量在Item的向量集合中查出最臨近的TopK個(gè)Item出來(lái)。
I2I的如Node2Vec、Metapath2Vec等向量算法,它不同之處是需要Trigger Item,基于用戶的歷史行為來(lái)選擇這些Trigger,然后通過(guò)Trigger Item的向量,在Item的向量集合中查詢出TopK個(gè)臨近的Item。
(二)向量召回 – PAI向量召回
在PAI上我們提供了豐富的召回算法,在PAI-Studio中我們PAI-EasyRec有提供DSSM、YoutubeDNN、MIND等一系列深度的向量召回模型, GraphLearn提供的GraphSage、GAT、SEAL等基于圖的向量召回模型,還有Alink提供Word2Vec、Node2Vec、Metapath2Vec等一系列向量召回模型。在PAI-Studio中,我們想把這些算法快速可視化搭建快速實(shí)驗(yàn),進(jìn)行離線效果測(cè)試和在線的部署,并且我們還支持AutoML自動(dòng)化調(diào)參,有了這些算法基建,可以幫助我們?cè)谠粕峡焖俚牡七M(jìn)效果。

(三)向量召回 – Hologres向量檢索
Hologres深度集成阿里達(dá)摩院自研的向量檢索引擎Proxima,這款向量檢索引擎具有超大規(guī)模索引構(gòu)建和檢索、高緯&高精度、高性能低成本等核心能力,能夠幫助Hologres提供提供低延時(shí)、高吞吐的在線查詢服務(wù)。并且Hologres是以SQL的查詢接口來(lái)暴露給用戶的,十分簡(jiǎn)單易用,它能很容易支持水平擴(kuò)展,因?yàn)樗欠植际綐?gòu)建向量索引的方式。

(四)向量召回 – Hologres向量檢索
在具體的推薦業(yè)務(wù)場(chǎng)景中,很重要的一環(huán)是向量查詢,Hologres不僅能支持全量item集合上的檢索,面對(duì)復(fù)雜條件下的檢索, holo也能用sql的形式來(lái)支持。例如有很多推薦場(chǎng)景需要查詢最近活躍,當(dāng)需要查詢某個(gè)類(lèi)目下的,此時(shí)寫(xiě)一個(gè)Where語(yǔ)句就能很容易的完成檢索。
全量檢索
select id, pm_approx_euclidean_distance(feature, '{0.1,0.2,0.3}')) as distance where data_time between '1990-11-11 12:00:00' and '1990-11-11 13:00:00’ and tag in ('X', 'Y', ‘Z') from feature_tb order by distance asc limit 10;
復(fù)雜條件下檢索
select id, pm_approx_euclidean_distance(feature, '{0.1,0.2,0.3}')) as distance where data_time between '1990-11-11 12:00:00' and '1990-11-11 13:00:00’ and tag in ('X', 'Y', ‘Z') from feature_tb order by distance asc limit 10;
某社交APP首頁(yè)推薦
(一)最佳實(shí)踐 – 某社交APP首頁(yè)推薦

我們以一個(gè)社交APP的首頁(yè)推薦的場(chǎng)景來(lái)體感一下這整套解決方案是怎么運(yùn)行的。這是一個(gè)社交APP首頁(yè)推薦的場(chǎng)景,分為列表頁(yè)、詳情頁(yè)和會(huì)話頁(yè),通過(guò)點(diǎn)擊列表頁(yè),可以看到用戶的具體詳情,進(jìn)而發(fā)起會(huì)話進(jìn)行聊天。整個(gè)首頁(yè)推薦的目標(biāo)是要建立用戶和用戶之間的新聯(lián)系,因此我們?cè)O(shè)計(jì)了UV回復(fù)轉(zhuǎn)化率這個(gè)指標(biāo),就是必須用戶回復(fù),才算一個(gè)有效的會(huì)話。
(二)最佳實(shí)踐 –首頁(yè)推薦方案
我們來(lái)看一下整個(gè)首頁(yè)推社交APP首頁(yè)推薦問(wèn)題的難點(diǎn)。
算法需具備發(fā)現(xiàn)性,能建立新聯(lián)系 ;“有效回復(fù)”優(yōu)化目標(biāo)非常稀疏,這導(dǎo)致我們優(yōu)化整個(gè)模型的難度也非常高。

下面是整個(gè)首頁(yè)推薦的方案,我們有常見(jiàn)的多路召回、過(guò)濾、排序和用戶的冷啟動(dòng)和最后會(huì)有一個(gè)重排。其中的重點(diǎn)是召回里面DSSM的向量召回和GraphSage的向量召回,還有新用戶的冷啟動(dòng),這保證了整體的算法具有發(fā)現(xiàn)性。然后另一塊是排序這邊做了一個(gè)多目標(biāo)的模型,包括點(diǎn)擊、關(guān)注、會(huì)話和回復(fù),多個(gè)目標(biāo)的層次遞進(jìn)的關(guān)系,解決了有效回復(fù)這個(gè)目標(biāo)非常稀疏的問(wèn)題。
(三)最佳實(shí)踐 – 向量召回算法 PAI-EasyRec | DSSM
重點(diǎn)來(lái)看一下其中向量召回,我們以其中的DSSM為例,

它是一個(gè)典型的雙塔架構(gòu),優(yōu)勢(shì)是能充分利用Side-Info , 能支持分布式訓(xùn)練時(shí)的負(fù)采樣和負(fù)樣本MiniBatch內(nèi)的共享。
(四)最佳實(shí)踐 – 向量召回算法 PAI-EasyRec | DSSM – 優(yōu)化技巧

雙塔架構(gòu)上模型一個(gè)核心的問(wèn)題點(diǎn)是怎么做負(fù)采樣?負(fù)采樣決定了整個(gè)召回模型效果的好壞,我們來(lái)看這個(gè)離線hitrate的曲線,可以看到隨著負(fù)采量數(shù)的增加,基本上是一個(gè)穩(wěn)步上漲的趨勢(shì),最高點(diǎn)是正負(fù)樣本比例等于1:1W的時(shí)候最佳。所以當(dāng)然隨著負(fù)采樣數(shù)的增加,特別是要達(dá)到1:1W的采樣,對(duì)于存儲(chǔ)的壓力和計(jì)算壓力都是非常大的。我們想要離線的去join出這個(gè)1:1W的正負(fù)樣本來(lái)做存儲(chǔ)基本是不太現(xiàn)實(shí)的。因此PAI-EasyRec支持在分布式訓(xùn)練時(shí)的實(shí)時(shí)的負(fù)采樣,我們?cè)诖鎯?chǔ)的時(shí)候只存點(diǎn)擊的正樣本,在訓(xùn)練時(shí)分布式采樣出相應(yīng)的負(fù)樣本來(lái)做訓(xùn)練。
下面是我們做分布式負(fù)采樣的方案,其實(shí)是將用戶的歷史行為和用戶的一些屬性特征,以圖結(jié)構(gòu)形式存在參數(shù)服務(wù)器上,然后基于我們從參數(shù)服務(wù)器上進(jìn)行實(shí)時(shí)的負(fù)采樣,跟正樣本join起來(lái)進(jìn)行訓(xùn)練。1:1W正負(fù)樣本對(duì)于我們的計(jì)算壓力也是提出了很大的挑戰(zhàn)。在PAI-EasyRec在里面我們做了一個(gè)優(yōu)化, MiniBatch內(nèi)負(fù)樣本是共享的,不用將N*1W個(gè)負(fù)樣本都計(jì)算一次,它只需要整體計(jì)算1W次,在做內(nèi)積的時(shí)候以矩陣乘的方式展開(kāi),就可以達(dá)到簡(jiǎn)化共享負(fù)樣本計(jì)算的效果。

(五)最佳實(shí)踐 – HOLO向量檢索
我們?cè)賮?lái)看一下工程系統(tǒng)在首頁(yè)推薦上實(shí)踐的HOLO向量檢索,我們首先需要在Hologres中建立向量表,建表的語(yǔ)句也非常簡(jiǎn)單,其中重點(diǎn)是要在其中設(shè)置proxima的向量引擎和其他向量引擎所需要的檢索參數(shù),有了這樣的向量表,我們就很容易的把MaxCompute上的外表數(shù)據(jù)來(lái)導(dǎo)入到Hologres中,這是一個(gè)異性推薦的場(chǎng)景,我們就可以在性別條件下進(jìn)行向量的檢索。

(六)最佳實(shí)踐 – 首頁(yè)推薦效果
推薦解決方案使得社交APP首頁(yè)推薦的UV回復(fù)轉(zhuǎn)化率提升了39%,UV會(huì)話轉(zhuǎn)化率提升了30%,是一個(gè)很成功的案例。

(七)PAI上其他向量算法能力
PAI上其實(shí)還提供了很多其他的向量算法能力,包括圖像的、文本的PAI-EasyVision、PAI-EasyTransfer,PAI-EasyTransfer已經(jīng)在github上開(kāi)源了,我們?cè)赑AI上還有人臉人臉匹配的能力、圖片搜索能力、問(wèn)答匹配的能力等等,都可以用到其中的向量引擎。歡迎大家來(lái)使用。

“ AI 檢索技術(shù)博客”
由阿里巴巴達(dá)摩院系統(tǒng) AI 實(shí)驗(yàn)室創(chuàng)立,
關(guān)注 “ AI 檢索技術(shù)博客” 公眾號(hào),
獲取更多技術(shù)干貨文章、
AI 檢索領(lǐng)域 Meetup 動(dòng)態(tài)。


