日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

今天為大家分享下京東電商推薦系統(tǒng)實踐方面的經(jīng)驗,主要包括:

  • 簡介
  • 排序模塊
  • 實時更新
  • 召回和首輪排序
  • 實驗平臺

▌簡介

京東電商推薦系統(tǒng)實踐

 

說到推薦系統(tǒng),最經(jīng)典的就是協(xié)同過濾,上圖是一個協(xié)同過濾的例子。協(xié)同過濾主要分為倆種:user-based 基于用戶的協(xié)同過濾和 item-based 基于商品的協(xié)調(diào)過濾。

但是,現(xiàn)在絕大多數(shù)推薦系統(tǒng)都不會直接使用協(xié)同過濾來做推薦。目前主要用的是 learning to rank 框架。

京東電商推薦系統(tǒng)實踐

 

這里,是推薦系統(tǒng)的框架,整個推薦系統(tǒng)可以分為兩部分,在線部分和離線部分。

  • 在線部分主要負(fù)責(zé)當(dāng)用戶訪問時,如何把結(jié)果拼裝好,然后返回給用戶。主要模塊有召回、排序和對結(jié)果的調(diào)整。
  • 離線部分主要是對用戶日志的數(shù)據(jù)分析,應(yīng)用于線上。

整個推薦系統(tǒng)大概就是這樣的一個框架。

和新聞、視頻這類的內(nèi)容推薦相比,電商推薦系統(tǒng)又有一些特殊的地方,比如:

優(yōu)化方向(點擊、銷售額、時長、用戶留存等)。另外,電商中推薦的內(nèi)容也會有很多種,尤其像是活動類的內(nèi)容,很多推薦都是算法和人工運營共同完成的。這就是電商推薦和新聞推薦等的區(qū)別之處。

京東電商推薦系統(tǒng)實踐

 

我們展開看下在線推薦系統(tǒng):

除了剛才說的召回和排序以及最終的調(diào)整之外,還有實踐過程中的一些細(xì)節(jié)。

  • 召回:這里召回會有很多種方法,如協(xié)同過濾,熱門商品、實時促銷等和應(yīng)用場景相關(guān)的召回,還有一些基于 KNN 的召回。
  • 過濾:召回之后,會進行過濾,主要是和應(yīng)用場景相關(guān),如已購商品過濾掉、沒有庫存的過濾掉,或者敏感的商品過濾掉等等這些邏輯。
  • 排序:排序目前主要用到的是 DNN 模型,某些流量比較小的地方會用到 GBDT。
  • 過濾:排序之后還會有些分頁、同商品過濾等邏輯。

調(diào)整:最終調(diào)整過程中,主要有兩部分邏輯,多樣性和探索邏輯。

▌排序模塊

1. 模型結(jié)構(gòu)

京東電商推薦系統(tǒng)實踐

 

深度學(xué)習(xí) ranking 模型結(jié)構(gòu)我們不作為重點討論,這里列舉了一種最經(jīng)典的模型,它們都用到了很多 id 的 Embedding,然后這些 Embedding 規(guī)模都很大,這樣訓(xùn)練和上線都比較耗時。因此,我們做了一些優(yōu)化,比如做分布式的訓(xùn)練,并且會有一套 Pipeline 來完成模型的上線。另外,雖然模型很復(fù)雜,并且能帶來很好的效果,但是特征工程還是必不可少的,很多指標(biāo)的提升還是依賴于特征工程,當(dāng)然也包括一些模型調(diào)整的工作。

2. 實踐

京東電商推薦系統(tǒng)實踐

 

那么如何把這些模型落地呢?我們看下整個模型的上線過程:

首先最重要的部分是模型訓(xùn)練平臺和排序服務(wù),因為很多深度模型計算量要求很高,為了能達到比較快的效果,需要部署單獨的排序服務(wù)。目前比較流行的是 TensorFlow serving,可以很快速的來上線一個深度模型,并充分利用對分片、單機并行,達到很高的計算效率。

模型線上線下一致性問題對于模型效果非常重要,我們使用特征日志來實時記錄特征,保證特征的一致性。這樣離線處理的時候會把實時的用戶反饋,和特征日志做一個結(jié)合生成訓(xùn)練樣本,然后更新到模型訓(xùn)練平臺上,平臺更新之后在推送到線上,這樣整個排序形成了一個閉環(huán)。

3. 實時更新

京東電商推薦系統(tǒng)實踐

 

我們的特征和模型都需要做實時的更新。因為我們經(jīng)常需要很快的 catch 一些實時的信號,比如需要實時的用戶畫像來抓住實時的用戶興趣的變化,還比如需要抓住實時的商品畫像,因為經(jīng)常會有一些活動或者爆品,我們需要快速的捕捉這些信號,并應(yīng)用到推薦中。另外還有一些實時的召回和特征,比如一些交叉的特征,實時的點擊率,實時訂單等特征。

除了特征外,模型也需要實時更新,對于電商場景來說這是有一定困難的,因為訂單是有延時的,延時可能是十幾分鐘到十幾小時不等,這樣實時模型更新上就會采取一些保守的策略,比如用點擊率對模型做些微調(diào),然后訂單數(shù)據(jù)再通過離線來獲得,這屬于業(yè)務(wù)場景的限制。

▌思考

京東電商推薦系統(tǒng)實踐

 

排序可以算是推薦系統(tǒng)中比較重要的一個環(huán)節(jié),但是只有排序肯定是不夠的,事實上,有一些問題是目前的排序框架無法解決的:

  • 排序得到的結(jié)果非常相似,影響體驗。
  • 有多個優(yōu)化目標(biāo),需要一個平衡(點擊率、訂單金額、用戶交互時長等)。
  • 計算能力有限,如果有無限的計算力,可以直接對全部候選集進行排序。

1. 多樣性

京東電商推薦系統(tǒng)實踐

 

使用模型輸出的結(jié)果一般都會非常相似,如果直接給用戶看體驗會很差,因此在模型之后我們需要加入多樣性的邏輯。

比較通用的解決辦法是多樣性的 ranking,這是一個貪心算法,從第一個商品開始選,當(dāng)選第二個商品的時候,會重新計算下候選集中每個商品的 score,然后選擇一個 score 最高的。我們的方法是看 novelty score 候選商品的產(chǎn)品詞分布和之前 N 個商品的產(chǎn)品詞分布的 KL 距離。這樣做的思路,就是選一個和已有商品最不像的商品,來更好的保證商品推薦結(jié)果的多樣性。

由于純基于算法的多樣性可能會出現(xiàn) badcase,因此還需要一個規(guī)則來進行兜底,確保在極端情況下結(jié)果也能接受。

最后,我們思考一個問題,有沒有更好的方法實現(xiàn)多樣性的邏輯呢?當(dāng)然有,比如是否可以考慮使用 list wise ranking。這里只是為大家分享一個比較容易的,并且效果比較好的方法。

2. 多目標(biāo)

京東電商推薦系統(tǒng)實踐

 

我們的優(yōu)化目標(biāo)有很多,比如點擊、轉(zhuǎn)化、時長等,問題會變得比較復(fù)雜,單一的模型訓(xùn)練很難覆蓋到所有指標(biāo)。另外,經(jīng)常我們需要在各個指標(biāo)之間進行權(quán)衡,因此可調(diào)試性也非常重要。

一種很有用的方式是多模型 ranking,然后用某種方式把所有模型的結(jié)果 combine。

這也體現(xiàn)了一個思想,在算法的實際應(yīng)用中,其實需要在算法的先進性和系統(tǒng)可維護性、可調(diào)試性之間做一個平衡。往往 paper 里很有創(chuàng)意的算法落地的時候是有些困難的。

3. 多輪排序

京東電商推薦系統(tǒng)實踐

 

下面我們討論一下多輪排序的問題。多輪排序是 learning to rank 實踐中很重要的一個思想。使用多輪排序主要是因為計算資源的限制,無法使用復(fù)雜的模型進行大規(guī)模的候選集排序。右圖描述了一個多輪排序的框架。這像是一個漏斗模型,從上往下模型的復(fù)雜度是遞增的,同時候選集是逐漸減少的,就是越到后面用越復(fù)雜的模型來保證效果更好,越到前面可能只需要簡單的模型來保證能拿到一些商品就可以了。

這樣會存在一個問題,由于訓(xùn)練樣本可能有偏,導(dǎo)致只有被用戶看到的樣本才有 label,但是一般不會有太大的影響。

▌基于索引的首輪排序

1. 索引召回

京東電商推薦系統(tǒng)實踐

 

下面我們重點介紹一下第一輪排序。倒排索引很常見,是信息檢索里常用的工具。它通過把 doc 的內(nèi)容索引到 doc id 的方式,快速通過內(nèi)容來查找 doc。我們很多召回都是通過索引實現(xiàn)的。這里我列舉了一些基于索引的召回方式,如 item cf 的 key、產(chǎn)品詞、熱門類目、促銷產(chǎn)品詞等。

京東電商推薦系統(tǒng)實踐

 

雖然索引能夠很大程度上的縮小候選集的范圍,但是經(jīng)常情況下,第一輪排序的 doc 數(shù)量仍然可能會很大。為了保證性能,截斷邏輯是必不可少的。通過情況下可以通過 quality score 截斷,保留質(zhì)量好的 doc。經(jīng)過線性的 LR 或者 GBDT 模型就可以有結(jié)果了。另外截斷之后需要有些多樣性的邏輯,因為只有在召回的時候保持多樣性,最終結(jié)果才會有多樣性。

京東電商推薦系統(tǒng)實踐

 

基于 quality score 截斷是一種 naive 的算法,這里我們討論另一種業(yè)界也較常用的算法,wand。wand 其實是 weak and,它的重點是 wand 操作符。wand 操作符是一個布爾操作符,當(dāng) Xi wi 比 θ 大時,它的值是1,否則是0。之所以叫做 weak-and,是因為當(dāng) w 都取1, θ 取 K 時,wand 操作符就變成了 and,當(dāng) w 取1,θ 取1時,wand 操作符就變成了 or。可以看出 wand 是介于 and 和 or 之間的操作。對 Xi wi 求和的操作其實和我們線性模型很相似。通過 wand 操作符,我們可以定義一些上界,因為是倒排索引,可以給每個索引鏈賦予一個估計值,這樣就可以拿到權(quán)重上界 UBt,這樣通過和 wand 操作符對比,就可以快速的判斷 UBt 是否滿足條件,如果滿足條件就可以快速的把一些 doc 扔掉,這樣就可以快速的使用線性模型對全戶做 ranking。可以看到,基于線性模型的分?jǐn)?shù)做截斷,比完全基于 quality score 截斷的策略要稍微好一點。

京東電商推薦系統(tǒng)實踐

 

這里我列了 paper 中 wand 算法的偽代碼。出于時間關(guān)系,我們不會過算法邏輯的細(xì)節(jié)。我認(rèn)為它的主要的思路是通過快速使用 upper bound 做截斷和跳轉(zhuǎn),可以略過很多明顯不符合的候選 doc,從而減少計算 score 的次數(shù)。當(dāng)然這種方法對于線性模型來說,有一個缺點,當(dāng)我們需要多樣性的時候,沒辦法很好的實現(xiàn)在模型中增加多樣性的。

wand 算法目前已經(jīng)應(yīng)用非常廣泛了,在很多開源的索引如 lucene 中,也會用到這種方法快速計算文本相關(guān)分。

京東電商推薦系統(tǒng)實踐

 

剛剛我們介紹了使用倒排索引做第一輪排序,以及一個常見的排序加速算法,回過來我們思考一下倒排索引本身,它適用于什么場景,不適用于什么場景。

首先它適用于 kv 查找這種場景,并且 kv 查找也屬于實際應(yīng)用很多的情況。但是對于更復(fù)雜的方式,類似 graph 的召回方式不友好,比如找用戶看過的商品中相似商品的相關(guān)商品,這時實現(xiàn)起來會比較麻煩,這是它的一些限制。再一個,我們需要有較好的截斷策略,例如底層使用 relevence score 截斷,排序使用 GBDT。

當(dāng)然,索引還會受到機器本身的內(nèi)存限制,限于機器的大小,很多時候我們需要多機分片部署索引,這樣會帶來一定的復(fù)雜性。雖然有些限制,但是索引是目前應(yīng)用很廣泛、有效的方式,包括在推薦、搜索等領(lǐng)域都會使用到。

2. KNN 召回

京東電商推薦系統(tǒng)實踐

 

除了索引召回,KNN 也是現(xiàn)在較常用的一種召回方式。首先,我們把所有的候選集轉(zhuǎn)換成 embedding,我們把用戶興趣也可以轉(zhuǎn)換成 embedding,通過定義 embedding 之間距離計算公式,我們可以定義 KNN 召回問題,也就是在全部候選池中,找到與用戶最接近的 k 個結(jié)果。

京東電商推薦系統(tǒng)實踐

 

定義好 KNN 召回的問題,下一步就是如何找到最近的 K 個候選集。由于整個候選集非常大,每次都使用用戶的 embedding 去全量計算距離是不現(xiàn)實的,只能使用一種近似算法。我們今天分享其中的一種近似算法。是 facebook 開源的 KNN 計算庫 faiss 使用的。其原理:

首先需要對全部候選集進行分塊,每一塊都會有自己的質(zhì)心。paper 中使用 Lloyd 算法,將整個空間劃分開。分塊后,就需要對每一塊構(gòu)建索引,進而通過索引實現(xiàn)快速檢索的功能。

右圖是索引構(gòu)建和檢索的方法。

上半部分是如何構(gòu)建索引(這里的優(yōu)化點是使用了二級索引):首先拿到 y 候選集之后,做一個 quantizer 分類得到一個一級索引,把它放到索引表中,另外還得到殘差 compute residual,可以對殘差再進行一次 quantizer,得到一個二級索引,通過兩級索引來加快檢索的速度,同理,在真正的 quary 的時候,拿到的是用戶的向量 x,先做一個 quantizer,得到 k 近鄰的一級索引,然后查找 k 個一級索引,同時拿到 k 個二級索引,然后在二級索引中查找,然后這里還有很多加速的算法(這里就不展開了),通過這樣一種多層的查詢方式來做到加速 K 近鄰的算法。

PS:關(guān)于 KNN 的一些思考,KNN 是一種有效的方式,但是不是唯一有效的方式。比如之后分享的 TDM,能夠比 KNN 更加靈活。

▌實驗平臺

京東電商推薦系統(tǒng)實踐

 

最后簡單介紹下分層實驗平臺,因為大家想快速迭代特征和模型,離不開實驗,經(jīng)常會遇到的情況是實驗流量不夠用了,這時就需要對實驗做分層。分層的邏輯見右圖,通過在不同的 Layer 使用不同的哈希函數(shù),保證每個 Layer 之間流量是正交的,這樣就可以在不同的 Layer 上做不同的實驗。

京東電商推薦系統(tǒng)實踐

 

分層實驗的具體做法:召回->排序->后處理->業(yè)務(wù),另外還有一部分對齊流量,用來做全量的驗證。

分層的優(yōu)點,可以用于做實驗的流量多,適合快速迭代;缺點,需要嚴(yán)格控制層與層之間的關(guān)系,防止相互干擾。

作者:孟崇,京東推薦架構(gòu)負(fù)責(zé)人。負(fù)責(zé)京東推薦系統(tǒng)的 ranking 算法架構(gòu)和模型訓(xùn)練。碩士畢業(yè)于中科院自動化所,先后在 yahoo、獵豹移動和京東從事推薦的工作,有豐富的推薦算法經(jīng)驗。

分享到:
標(biāo)簽:推薦 系統(tǒng)
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定