于敬 石京京 劉文海
(達而觀信息科技(上海)有限公司產(chǎn)品技術(shù)中心 上海市 201203)
隨著網(wǎng)絡(luò)技術(shù)的快速發(fā)展和移動智能設(shè)備的普及,信息呈現(xiàn)爆發(fā)式增長,網(wǎng)絡(luò)上存儲著海量信息,因此也帶來了巨大的挑戰(zhàn),即過多的信息使得用戶很難找到真正想要的東西,這就降低了信息使用的效率。如何從海量信息中獲取有價值的信息已成為信息技術(shù)的難題同時用戶的信息需求也呈現(xiàn)多樣化和個性化的趨勢,推薦系統(tǒng)應(yīng)運而生。推薦系統(tǒng)通過對用戶的點擊、購買、評分等行為數(shù)據(jù)以及用戶屬性和物品數(shù)據(jù)進行深入的分析挖掘,進而對用戶的興趣偏好進行建模,最終生成用戶最可能感興趣的推薦物品列表。推薦系統(tǒng)在緩解信息過載方面發(fā)揮著舉足輕重的作用,同時也提升了產(chǎn)品的滿意度、留存率等指標(biāo),企業(yè)收益也大幅度增加,目前已經(jīng)在多個行業(yè)大規(guī)模地應(yīng)用,包括電子商務(wù)、視頻、在線教育、旅游、音樂和社交等。
推薦系統(tǒng)從產(chǎn)品設(shè)計上,除了千人千面的個性化推薦服務(wù)、熱門推薦、地域推薦等形式以外,還有一種相關(guān)推薦的場景,常以“相關(guān)推薦”、“關(guān)聯(lián)推薦”、“看了還看”、“買了還買”等形式出現(xiàn)。相關(guān)推薦在現(xiàn)實世界的工業(yè)推薦系統(tǒng)中是不可或缺的。用戶看完一部引人入勝的電影后,就渴望更多相關(guān)性更高的電影,而視頻平臺通常代表這樣的相關(guān)推薦部分。用戶在電商網(wǎng)站或手機App 上購買產(chǎn)品后,會跳轉(zhuǎn)到訂單完成的頁面,同時會出現(xiàn)類似產(chǎn)品的部分。當(dāng)用戶在某在線旅行社的App 上預(yù)訂酒店時,他現(xiàn)在正在查看的酒店下方列出了相關(guān)酒店、風(fēng)格相同、位置近等。相關(guān)推薦,通常是非個性化的,其結(jié)果取決于用戶正在瀏覽的源物品,而不取決于他是什么樣的人。
為了生成相關(guān)推薦結(jié)果,業(yè)界有一些典型的解決方案。首先,最傳統(tǒng)的方法是通過領(lǐng)域知識或?qū)I(yè)知識手動尋找合適的項目,通常每個模塊都需要幾個具有很強領(lǐng)域知識的操作員。例如,給定一部電影A,他們應(yīng)該根據(jù)自己的判斷或快速研究知道其相關(guān)的電影列表。這種方式不夠有效,因為人力成本巨大,召回結(jié)果有限,質(zhì)量無法保證。在技術(shù)方面,通常使用基于物品的協(xié)同過濾算法(ICF,item based collaborative filtering)、基于模型的協(xié)同過濾算法(MCF,Model-based collaborative filtering)、基于內(nèi)容的推薦算法(Content based filtering method)以及混合的方法等。隨著深度學(xué)習(xí)、大數(shù)據(jù)等技術(shù)的發(fā)展,也產(chǎn)生一些基于嵌入計算的推薦方法,包括item2vec、DSSM(Deep Structured Semantic Model)、BERT(Bidirectional Encoder Representation from Transformers)、基于圖卷積網(wǎng)絡(luò)的方法等。
本文圍繞基于內(nèi)容的相關(guān)推薦方法展開,在實際工業(yè)場景中的相關(guān)推薦業(yè)務(wù)中,問題要復(fù)雜得多,也更具挑戰(zhàn)性,包括數(shù)據(jù)稀疏、冷啟動、多樣性不足、驚喜度差等問題。另外在線上實時推薦場景下,系統(tǒng)還存在高可用高并發(fā)方面的性能挑戰(zhàn)。為了更好的應(yīng)對上述問題,本文提出了一種融入語義匹配的改進的基于內(nèi)容的物品相關(guān)推薦算法。該算法基于預(yù)訓(xùn)練語言模型BERT 對物品中的大量文本信息進行語義嵌入生成,以改進基于文本匹配的內(nèi)容過濾推薦方法等進行融合訓(xùn)練并得到物品的相關(guān)推薦結(jié)果。
相關(guān)推薦在工業(yè)界有著廣發(fā)的應(yīng)用,它所體現(xiàn)的是用戶在對一個物品有過瀏覽、點贊、購買等行為后,在絕大部分場景下是有強烈的需求想看到更多與當(dāng)前物品相關(guān)性更高的其它物品,比如我們連續(xù)看相似的文章或者視頻、瀏覽相似的商品、聽著相似的音樂,可能標(biāo)題相似、內(nèi)容相近、類別相同等種種原因。相關(guān)推薦結(jié)果生成的主題思想是可以在給定源物品的情況下返回多個高度相關(guān)的物品列表。相應(yīng)的推薦方法也有很多,以CB 和CF 為主。
物品的相關(guān)性可以體現(xiàn)在內(nèi)容方面,由此可以使用基于內(nèi)容過濾的方法。其主要過程是將待推薦物品的多維度內(nèi)容特征和用戶當(dāng)前正在操作的推薦物品的特征進行相似度計算的過程,最終按照相似度高低排序得到待推薦的物品列表。傳統(tǒng)的CB 推薦系統(tǒng)通常使用貝葉斯分類器等分類算法將物品分成不同的組,并為每個組生成一個排序列表。排序列表用于對組中的物品進行推薦,同一組中的物品推薦結(jié)果是相同的,因此省略了同一組中物品之間的差異。目前已經(jīng)有大量新的方法不斷出現(xiàn)。Li Yan 等人一種利用深度卷積神經(jīng)網(wǎng)絡(luò)來緩解冷啟動問題的基于內(nèi)容過濾的推薦方法。Rohani等提出了一種基于社交網(wǎng)絡(luò)的因素來提高學(xué)術(shù)社交網(wǎng)絡(luò)中推薦過程的性能的方法。Sunandanad 等提出了引入用戶人口統(tǒng)計數(shù)據(jù)進行相似度計算增強內(nèi)容過濾算法的電影推薦系統(tǒng)。Bagul 等提出了一種以生成與輸入查詢中提供的文獻相似的相關(guān)推薦結(jié)果的綜合推薦模型。楊武等提出了一種基于內(nèi)容的推薦與協(xié)同過濾融合的新聞推薦方法,在準確率、召回率、多樣性等方面相對傳統(tǒng)方法都取得了一定的效果提升。Tai Yifan 等提出了使用機器學(xué)習(xí)和基于內(nèi)容的推薦相結(jié)合的方法,以更好地捕獲用戶的個人資料用于在線商城的推薦。Walek 等提出了使用專家系統(tǒng)的基于內(nèi)容的電商推薦方法。Wang Hongwei 等一種深度知識感知網(wǎng)絡(luò)(deep knowledge-aware network),將知識圖譜應(yīng)用到新聞推薦中以充分發(fā)現(xiàn)新聞之間潛在的知識層面的聯(lián)系進行推薦結(jié)果的擴展。
另外,文本語義匹配,即將目標(biāo)文本與源文本進行匹配并計算它們之間的語義相似度,在推薦中也有很多應(yīng)用。較早的文本語義匹配嘗試是計算一個向量作為每個文本片段的表示,然后應(yīng)用典型的相似性度量來計算匹配分數(shù)。但是這些傳統(tǒng)方法的性能沒有達到預(yù)期,因為它們經(jīng)常無法識別語義相似的文本,從而不能很精確地進行向量表示匹配。近年來,深度學(xué)習(xí)的迅速發(fā)展為理解復(fù)雜的自然語言提供了機會,已經(jīng)作為理解文本內(nèi)部和文本之間的復(fù)雜語義相關(guān)性的最先進方法。到目前為止,這些現(xiàn)有的用于文本語義匹配的深度神經(jīng)方法可以分為兩類:以表示為中心的模型和以交互為中心的模型。幾項研究表明,后一種對于文本語義匹配來說更合理。但是其往往需要大量的參數(shù)、標(biāo)記的訓(xùn)練數(shù)據(jù)和更久的時間來更好的完成以交互為中心的模型訓(xùn)練工作。為了緩解標(biāo)記訓(xùn)練數(shù)據(jù)有限的問題,更快地進行模型訓(xùn)練,預(yù)訓(xùn)練語言模型,例如ELMo(Embedding from Language Models)、GPT(Generative Pre-trained Transformer),而 Google 的 BERT 模型被廣泛使用。在上下文相關(guān)的語言模型中,BERT 席卷了自然語言處理(Natural Language Processing)世界。與其他詞嵌入方法相比,BERT 嵌入考慮了上下文,它很可能為不同文本中的同一個詞生成兩個不同的向量。在應(yīng)用方面,Kaviani 等提出了使用基于BERT嵌入的神經(jīng)網(wǎng)絡(luò)為每條推文推薦新的主題標(biāo)簽。Hoang 等提出了使用BERT 嵌入(BERT Embedding)來學(xué)習(xí)一個新的特征集,它更密集、更語義化,用于表示用戶和物品以應(yīng)對數(shù)據(jù)稀疏問題。Wang Peipei 等提出了新穎的基于BERT 的群組推薦方法(Group recommendation)來輔助組決策,即采用BERT 從全局角度通過使用句子級嵌入來捕獲群體偏好。
綜合分析,以上方法都偏重于單一方法解決問題,多策略融合算法的研究較少。在實際工業(yè)應(yīng)用推薦場景中,會面臨冷啟動、特征稀疏、用戶體驗和推薦效果需要持續(xù)優(yōu)化等問題和挑戰(zhàn),本文提出了一種融合推薦算法,實際結(jié)果證明相對于基本方法可以獲得更好的綜合表現(xiàn)。
基于物品相關(guān)的行為數(shù)據(jù)和屬性數(shù)據(jù),分別進行文本語義匹配、熱度計算三種方式的召回策略,然后基于加權(quán)求和的方式生成相關(guān)推薦結(jié)果,整體流程如圖1 所示。
圖1:物品相關(guān)融合推薦流程
在相關(guān)推薦任務(wù)中,對于當(dāng)前物品和待推薦物品集合的標(biāo)題、標(biāo)簽、描述、摘要等短文本內(nèi)容分別進行文本匹配和語義匹配生成對應(yīng)的相似度值,再使用線性加權(quán)求和的方式進行融合計算得到最終的相關(guān)性,排序后取TopN 作為候選推薦結(jié)果。
然后,按照如下方式進行最大值歸一化。
物品i 和物品j 在多個字段的融合相關(guān)性計算方式如下所示。
在語義匹配方面,基于BERT 模型進行處理。其通過聯(lián)合調(diào)節(jié)所有層的左右上下文來預(yù)訓(xùn)練深度雙向表示。 這是通過使用掩碼語言模型(Masked Language Model)和下一句預(yù)測(Next Sentence Prediction)兩個新穎的無監(jiān)督預(yù)測任務(wù)來完成的,它可以為下游任務(wù)提供包含原始句子語義的嵌入或編碼。
字段f 對應(yīng)的物品i(j)的BERT 語義向量為i(j),使用歐氏距離(Euclidean Distance)來計算i 和j 的語義相似度,如下所示。
其中n 表示語義向量地維度。然后,按照如下方式進行最大值歸一化。
則多個字段的融合相似度計算如下所示。
考慮到物品數(shù)據(jù)量很大帶來的性能壓力,在生成候選推薦結(jié)果時使用近似最近鄰(ANN,Approximate Nearest Neighbor)算法進行優(yōu)化,基于Annoy (Approximate Nearest Neighbors Oh Yeah) 開源庫實現(xiàn)。Annoy 的核心主要是不斷地用選取兩個點,然后根據(jù)這兩個點之間的連線確定可以垂直等分線段的超平面對空間進行分割,最終將每一個區(qū)分的子空間里面的樣本數(shù)據(jù)限制在K 以內(nèi)。通過這樣的方法,可以將子空間的從屬關(guān)系用二叉樹來表示。
對于待插入的樣本x,從根節(jié)點依次使用法向量跟x做內(nèi)積運算,從而判斷使用超平面的哪一邊(左子樹或者右子樹)。對于查詢向量q,采用同樣的方式(在樹結(jié)構(gòu)上體現(xiàn)為從根節(jié)點向葉子節(jié)點遞歸遍歷),即可定位到跟q在同一個子空間或者鄰近的子空間的樣本,這些樣本即為q近鄰。建立了二叉樹的結(jié)構(gòu)用于表示上述點分布空間,每個節(jié)點都表示一個子空間,在點分布空間中接近的子空間在二叉樹結(jié)構(gòu)中表現(xiàn)為位置靠近的節(jié)點。
為了提高查詢的召回,Annoy 采用構(gòu)建多個二叉樹結(jié)構(gòu)構(gòu)成森林,當(dāng)搜索多棵樹的時候,將這些節(jié)點組合起來,可以得到對于目標(biāo)點的近鄰點分布的大概估計,接下來再對這個分布范圍內(nèi)所有點進行距離計算并排序,選擇TopN 作為最相關(guān)的結(jié)果。
在實際業(yè)務(wù)場景中,用戶和物品之間的交互行為往往有很多種類型,比如點擊、點贊、收藏、購買等。設(shè)用戶行為類型集合為A={1,…,g,…,S},比如g=1 表示點擊,g=2 表示收藏等,p∈R表示各個行為類型的權(quán)重向量。
對于任意行為類型g,對應(yīng)的用戶集合U,長度為|U|,則物品i 的熱度的熱度指數(shù)計算方式如下所示。
同樣為了將各種行為的協(xié)同過濾結(jié)果進行融合,按照如下方式進行最大值歸一化。
則多種行為的融合熱度指數(shù)計算方式如下所示。
基于3.1、3.2 中的相關(guān)性和熱度計算方法,最終物品i和j 的總體推薦度如下所示。
rec_score(i,j)=α·rel(i,j)+β·dist(i,j)+λ·hot(j)
其中,α、β 和λ 均屬于R。最終按照總體推薦度從高到低排序,取TopN 作為相關(guān)推薦結(jié)果返回。通過調(diào)整α、β和λ 的值進行效果優(yōu)化。
為了充分驗證本文所提推薦方法的效果,進行了多組對比實驗并使用多個指標(biāo)進行評估。選擇實際的線上短視頻相關(guān)推薦業(yè)務(wù)場景進行隨機分流A/B 測試。在推薦結(jié)果生成階段,使用Python3.8 作為開發(fā)語言,服務(wù)器配置為CPU 為48C,內(nèi)存為512G,10 個GPU。
關(guān)于該短視頻業(yè)務(wù)場景整體數(shù)據(jù)情況,推薦位置是當(dāng)前在播放視頻的詳情頁下方的相關(guān)推薦,一次請求20 條推薦視頻,且是信息流式的設(shè)計。用戶、物品以推薦請求量的七天統(tǒng)計數(shù)據(jù)如表1 所示。
另外,通過埋點采集到的行為數(shù)據(jù)類型較多,包括曝光、點擊、播放、收藏、關(guān)注、搜索、搜索點擊、評論、取消關(guān)注、取消收藏、取消點贊等,部分行為的數(shù)據(jù)量的七天統(tǒng)計結(jié)果如表2 所示。
從表1 的最后兩列用戶量和請求量來看,人均請求數(shù)量基本在5 左右,而且趨勢上相對較穩(wěn)定,沒有特別大的波動,側(cè)面說明少量用戶請求數(shù)量過多等異常情況較少。從表2 行為數(shù)據(jù)分布上來看,曝光行為約占92%、點擊和播放行為量占比接近4%。
表1:數(shù)據(jù)集統(tǒng)計數(shù)據(jù)
表2:各類型交互行為數(shù)據(jù)情況
總體上各類型數(shù)據(jù)趨勢基本一致,每天的待推薦視頻量在120 萬以上、推薦結(jié)果的曝光量在22 萬左右、用戶的點擊和播放行為量在1 萬左右,說明產(chǎn)品業(yè)務(wù)狀態(tài)趨于穩(wěn)定,較適合做A/B 分流測試。
在實際推薦效果評估上,使用三個指標(biāo)以衡量推薦方法的效果和性能,分別是:頁面瀏覽推薦點擊率(PVCTR,Page View Click-Through Rate)、獨立訪客推薦點擊率(UVCTR,Unique Visitor Click-Through Rate)、平均播放時間(APT,Average Play time)、平均響應(yīng)時間(ART,Average Response Time),各指標(biāo)均是按自然天進行統(tǒng)計。
首先,PVCTR 和UVCTR 指標(biāo)用于衡量推薦結(jié)果的精準度,計算方式分別如下所示。
其中pv_click 表示用戶對推薦出來的視頻的點擊總量,uv_click 表示點擊過推薦結(jié)果的用戶按照用戶唯一id 去重之后的數(shù)量,pv(page view)表示推薦出來的結(jié)果實際曝光給用戶的總量,uv(unique visitor)表示有推薦結(jié)果的用戶按照用戶唯一id 去重后的數(shù)量。當(dāng)一個用戶在一個時間窗口內(nèi)多次點擊對同一個視頻,僅作為一次點擊進行統(tǒng)計。同樣,對同一個用戶在一個時間窗口多次曝光同一個視頻,僅作為一次曝光進行統(tǒng)計。對于實際推薦出來的結(jié)果是否是用戶喜歡的,取決于用戶是否會有意愿去點擊。PVCTR 和UVCTR越高,說明推薦結(jié)果越精準、效果越好。
其次,APT 指標(biāo)用于評估推薦視頻的質(zhì)量和轉(zhuǎn)化效果,同時也可以看出用戶對產(chǎn)品的粘性,單位是:秒/次,計算方式如下所示。
其中,play_time表示第i 次播放視頻的總時長,n 表示視頻總播放次數(shù)。需要說明的是,當(dāng)一個用戶對同一個視頻播放多次,播放時長按照實際的來進行計算,不需要進行去重統(tǒng)計計算。APT 越大,用戶看的越久,說明推薦視頻的質(zhì)量越高,推薦算法的轉(zhuǎn)化效果越好。
最后,ART 指標(biāo)用于評估推薦算法的實際性能情況,單位是:毫秒/次,計算方式如下所示。
其中,response_time表示第i 次推薦請求的處理時間,n 表示推薦總請求次數(shù)。ART 越短,處理時間就越短,說明推薦算法的性能越好。
為了充分驗證本文推薦方法的效果和性能,設(shè)置了多組對比實驗,如表3 所示。通過線上推薦系統(tǒng)隨機分流A/B測試方式進行測試和指標(biāo)數(shù)據(jù)統(tǒng)計及分析。
表3:實驗推薦方法
各相關(guān)推薦方法的ART 性能對比實驗結(jié)果數(shù)據(jù)如表4所示,可以明顯看出無論何種推薦方法,ART 指標(biāo)數(shù)據(jù)基本上都在50 左右,也就是平均每次推薦請求的處理時間在50ms 左右,保證了視頻相關(guān)推薦結(jié)果的實時性和用戶體驗的流暢性。
表4:各推薦方法的10 天ART 實驗數(shù)據(jù)
各相關(guān)推薦方法的PVCTR 和APT 對比實驗結(jié)果數(shù)據(jù)如圖2 和圖3 所示。從圖中可以看出,PVCTR 和APT 的數(shù)據(jù)會有波動,但趨勢基本一致,也就是用戶點擊的視頻越多,播放的視頻時間也會隨之增加。另外,HR 的效果是最差的,側(cè)面說明每個物品的相關(guān)推薦結(jié)果都用熱度指數(shù)的方式生成,則結(jié)果基本是一樣的,對于用戶而言會有視覺疲勞、驚喜度差,進而影響了效果。BHR 和CBHR 的數(shù)據(jù)來看,在HR 的基礎(chǔ)上,分別引入了基于語義匹配的內(nèi)容過濾推薦和基于文本匹配的內(nèi)容過濾推薦以后,推薦效果都有了不同程度的提升。當(dāng)然,在PVCTR 和APT 指標(biāo)上,表現(xiàn)最好的是本文提出的BCBHR 推薦方法,融合三種基礎(chǔ)推薦方法達到了各取所長的推薦效果。
圖2:各推薦方法的10 天PVCTR 實驗數(shù)據(jù)
圖3:各推薦方法的10 天APT 實驗數(shù)據(jù)
各相關(guān)推薦方法的UVCTR 如表5 所示,各推薦方法基本上都在30%左右,數(shù)據(jù)趨勢上也有波動。這和產(chǎn)品自身的用戶習(xí)慣有較大關(guān)系,大部分用戶進來以后看完當(dāng)前視頻就離開了。相對于其它推薦方法,BCBHR 會有微量提升。
表5:各推薦方法的10 天UVCTR 實驗數(shù)據(jù)
通過對現(xiàn)有物品相關(guān)推薦場景中問題的深入研究分析,提出了一種融入語義匹配的改進的基于內(nèi)容的物品相關(guān)推薦算法。該算法不需要做樣本標(biāo)注,先是使用BM25 和搜索引擎進行多字段文本相關(guān)性實時融合計算生成推薦結(jié)果候選集;然后應(yīng)用業(yè)界先進的預(yù)訓(xùn)練語言模型BERT 進行深度語義實時匹配推薦,并通過ANN 進行性能優(yōu)化,不僅提升了結(jié)果相關(guān)度,還緩解了文本匹配導(dǎo)致的驚喜度差的問題;接在引入熱度指數(shù)計算保證了線上推薦系統(tǒng)的魯棒性。通過線上業(yè)務(wù)系統(tǒng)的隨機分流測試及對比實驗,在多個指標(biāo)上也取得了不同程度的提升,證明了該推薦算法的有效性。接下來的工作會圍繞端到端學(xué)習(xí)等方面進一步研究,以持續(xù)優(yōu)化推薦效果。