<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          超強指南!推薦算法架構(gòu)——重排

          共 6753字,需瀏覽 14分鐘

           ·

          2022-04-10 13:49


          導(dǎo)語?|?重排技術(shù)細(xì)節(jié)非常多,一定要清楚技術(shù)架構(gòu)大圖,從而將細(xì)節(jié)串聯(lián)起來。實際上主要是為了解決三大方面的問題:用戶體驗、算法效率、流量調(diào)控。


          在上篇圖文解讀:推薦算法架構(gòu)——精排!中我們結(jié)合算法架構(gòu)精排進(jìn)行解讀分析,本篇將深入重排這部分進(jìn)行闡述。



          一、總體架構(gòu)


          精排打分完成后,就到了重排階段,之后可能還會有混排。召回、精排、重排三個模塊中,重排離最終的用戶展現(xiàn)最近,所以也十分關(guān)鍵。重排的技術(shù)點也十分多,總結(jié)下來,個人認(rèn)為重排主要是為了解決三大方面的問題:用戶體驗、算法效率、流量調(diào)控。下圖是重排總體架構(gòu):




          二、用戶體驗


          重排模塊是推薦系統(tǒng)最后一個模塊(可能還會有混排),離用戶最近。作為最后一層兜底,用戶體驗十分重要。主要包括打散、多樣性等內(nèi)容。曝光過濾有時候也會放在重排中,但本質(zhì)上完全可以在召回鏈路,對已充分曝光的短視頻,或者剛剛已經(jīng)購買過的商品,進(jìn)行過濾,從而防止用戶抵觸。


          (一)打散


          對同類目、同作者、相似封面圖的item進(jìn)行打散,可以有效防止用戶疲勞和系統(tǒng)過度個性化,同時有利于探索和捕捉用戶的潛在興趣,對用戶體驗和長期目標(biāo)都很關(guān)鍵。


          打散問題一般可以定義為,輸入一個item有序序列,每個item有幾個需要隔離開的屬性,輸出一個相似屬性分離開的item序列。打散可以基于規(guī)則,也可以基于embedding?;谝?guī)則比較簡單可控,但由于item屬性枚舉值較多,可能需要頻繁更新,擴展性不強?;趀mbedding的打散,泛化能力強,但容易出現(xiàn)bad case。目前主流方法仍然是基于規(guī)則的打散。


          基于規(guī)則的打散主要有如下幾種:


          • 分桶打散法:將不同屬性的item放入不同的桶中,依次從各桶中取出item即可。這種方法實現(xiàn)簡單,打散效果好。但末尾容易扎堆。對原始序列改變較大,可能帶來指標(biāo)的下降。多屬性疊加困難,擴展性也較差。


          • 權(quán)重分配法:對每個item定義一個分?jǐn)?shù),計算公式如下:



            其中W為每個屬性的權(quán)重,代表屬性打散需求的優(yōu)先級。Count為同屬性item已經(jīng)出現(xiàn)的次數(shù)。f(x)即為打散加權(quán)分?jǐn)?shù),按照它從低到高對item進(jìn)行排序,即可完成打散。這種方法實現(xiàn)也比較容易,而且可以充分考慮多種屬性的疊加,擴展性也很強。但仍然容易出現(xiàn)末尾扎堆。


          1. 滑動窗口法:在一個長度可控的滑動窗口(session)內(nèi),同屬性item超過一定次數(shù)后,就交換出session。這種方法只用考慮局部,不需要全局計算,因此計算量較低。同時對原序的破壞也比較低,最大限度保留相關(guān)性。但也會出現(xiàn)末尾扎堆的現(xiàn)象。



          (二)多樣性


          多樣性是一個很大的話題,后面我們會作為專項來梳理。多樣性會對用戶體驗、長期目標(biāo)有比較關(guān)鍵的影響。召回、精排、重排全鏈路都要考慮多樣性問題,但確實一般重排中考慮比較多一些,我們這兒也一起分析下。


          • 評價指標(biāo)


          多樣性評價可以使用兩種方法:


          • 數(shù)據(jù)指標(biāo)分析:可以從user和item兩個角度評估,比如平均每個用戶的曝光一二級類目數(shù),曝光item同屬一個類目的概率等??梢詮念惸俊⒆髡?、標(biāo)簽等多個維度進(jìn)行數(shù)據(jù)分析和評價。


          • 人工評估:抽樣進(jìn)行人工體驗,評估多樣性。


          兩種方法各有所長,一般還是需要結(jié)合一起使用。特別是人工體驗評估,千萬不可忽略。算法工程師也要經(jīng)常去體驗和對比自己的實際業(yè)務(wù)場景。



          • 發(fā)展進(jìn)程


          個人認(rèn)為多樣性算法經(jīng)歷了三個階段


          • 規(guī)則約束:基本都是基于規(guī)則,沒有結(jié)合相關(guān)性來考慮多樣性問題。主要有三種:


          • 硬規(guī)則約束:比如類目打散、作者打散、同圖打散等。一般業(yè)務(wù)初期都會采用這種方法,開發(fā)簡單快速,沒有實現(xiàn)配置化,所以擴展性不高。新的打散需求一般要重新開發(fā)和部署。


          • 規(guī)則引擎:規(guī)則抽象化和配置化,上線速度快,新增需求只需要新增一個規(guī)則即可。


          • 個性化約束:不同類目、不同時段、不同活躍度用戶配置不同。比如手機和抽紙,他們的打散窗口可能會不同。不同活躍度人群,其耐受度也會不一樣。



          • 啟發(fā)式方法:多樣性和相關(guān)性相結(jié)合的方法,充分保留相關(guān)性。主要有:


          • MMR:最大邊緣相關(guān)模型。1998年發(fā)表,比較老。參見The Use of MMR, Diversity-Based Reranking for Reordering Documents and Producing Summaries


          • DPP:點行列式矩陣。NIPS2018。參見Fast Greedy MAP Inference for Determinantal Point Process to Improve Recommendation Diversity


          • Deep-DPP:結(jié)合深度神經(jīng)網(wǎng)絡(luò)的DPP,CIKM2018,youtube。參見Practical Diversified Recommendations on YouTube with Determinantal Point Processes



          • 深度模型主要是加入了上下文感知,從而可以結(jié)合規(guī)則引擎實現(xiàn)多樣性。這部分在與下一章節(jié)的上下文感知模塊比較類似,放在那邊統(tǒng)一梳理。



          三、算法效率


          重排對于提升算法準(zhǔn)確率和效率,從而提升業(yè)務(wù)指標(biāo)也十分關(guān)鍵。重排提升算法效率,主要分為三個方向:


          • 多任務(wù)融合。精排輸出的多個任務(wù)的分?jǐn)?shù),在重排階段進(jìn)行融合??梢曰谌斯ふ{(diào)權(quán)、grid search、LTR或者強化學(xué)習(xí)。


          • 上下文感知。精排由于計算性能因素,目前是基于point-wise的單點打分,沒有考慮上下文因素。但其實序列中item的前后其他item,都對最終是否點擊和轉(zhuǎn)化有很大影響。context-aware的實現(xiàn)方式有pairwise、listwise、generative等多種方式。


          • 實時性提升。重排比精排模型輕量化很多,也可以只對精排的topK重排,因此較容易實現(xiàn)在線學(xué)習(xí)(目前有一些團(tuán)隊甚至實現(xiàn)了精排在線學(xué)習(xí))。實時性提升對于快速捕捉用戶實時興趣十分重要,能大大提升模型準(zhǔn)確率和用戶體驗。通過ODL在線學(xué)習(xí),實現(xiàn)重排模型實時更新,可以提升整體鏈路實時性。另外在端上部署模型,實現(xiàn)端上重排,也可以實現(xiàn)推薦的實時響應(yīng)和特征的實時捕獲。



          (一)多任務(wù)融合


          當(dāng)前大多數(shù)業(yè)務(wù)場景需要優(yōu)化多個任務(wù),算法模型也已經(jīng)實現(xiàn)了多任務(wù)學(xué)習(xí),比如MMOE和PLE等。那模型輸出的多個任務(wù)分?jǐn)?shù)怎么融合呢?我們可以在精排階段融合,也可以在重排階段融合。由于重排模型相對精排要輕量級一些,容易實現(xiàn)在線學(xué)習(xí),所以有不少場景放在重排階段進(jìn)行多任務(wù)融合。



          目前多任務(wù)融合主要有以下幾種方式:


          • 人工調(diào)權(quán):通過專家先驗知識,設(shè)置多任務(wù)融合的超參數(shù)。這種方式比較簡單,業(yè)務(wù)發(fā)展初期通常采用。缺點也比較明顯:


          • 超參組合的選擇依賴專家經(jīng)驗,準(zhǔn)確率有限,有一定的效率浪費。


          • 固定的超參不能快速自動適應(yīng)業(yè)務(wù)和模型迭代,對整體鏈路算法效率有比較大的影響,甚至負(fù)向。



          • Grid search將各參數(shù)可能的取值進(jìn)行排列組合,窮舉搜索所有的可能,再逐步輸入系統(tǒng)中進(jìn)行評估,選擇效果最好的參數(shù)組合。相比人工調(diào)權(quán),grid search顯然更有可能找到最優(yōu)的參數(shù)組合。但它缺點同樣明顯:


          • 排列組合多,搜索空間大,十分耗時。超過4個超參后,計算量就要爆炸了。


          • 難以進(jìn)行在線AB,不能準(zhǔn)確拿到用戶反饋。這也是超參搜索空間大導(dǎo)致的。


          • 同樣不能自動適應(yīng)業(yè)務(wù)和模型迭代,會成為整個鏈路的優(yōu)化瓶頸。



          • 模型法:將精排各任務(wù)的打分結(jié)果,采用線性模型或者比較輕量級的深度模型,構(gòu)建監(jiān)督學(xué)習(xí)。一般也可以將其他比較重要的特征,比如商品價格、銷量、近期CTR、近期CVR,一起融合在重排模型中。由于精排的打分結(jié)果已經(jīng)相當(dāng)置信了,重排模型可以盡量輕量級一些,所以比較容易實現(xiàn)在線學(xué)習(xí),實時更新特征和模型,提高重排模型的實時能力。模型法優(yōu)點很多,在目前各業(yè)務(wù)場景中廣泛使用。其缺點主要有:


          • 仍然是基于point-wise的,沒有上下文感知能力。


          • 業(yè)務(wù)場景最終指標(biāo)必須單一。重排模型做多任務(wù)融合,其監(jiān)督目標(biāo)必須是一個單一的任務(wù),否則誰來融合重排呢?比如電商場景下訂單量指標(biāo),一般會在精排構(gòu)建CTR(曝光到點擊)和CVR(點擊到轉(zhuǎn)化)兩個任務(wù),重排則統(tǒng)一成CTCVR(曝光到轉(zhuǎn)化)即可。但如果還想把用戶互動指標(biāo)(比如收藏、分享、評論)也加入進(jìn)來,則較難建模了。



          • 強化學(xué)習(xí):根據(jù)用戶在不同狀態(tài)下的行為,利用強化學(xué)習(xí)建模狀態(tài)轉(zhuǎn)移過程,從而提升業(yè)務(wù)核心目標(biāo)。state為用戶特征,比如用戶靜態(tài)特征、統(tǒng)計特征等。Action為當(dāng)前各任務(wù)的融合參數(shù)。reward可以根據(jù)業(yè)務(wù)場景定義,比如內(nèi)容推薦場景中,一般為用戶打開APP到退出的總時長。可以采用DQN、DDPG、A3C等方法。




          (二)上下文感知


          由于精排模型一般比較復(fù)雜,基于系統(tǒng)時延考慮,一般采用point-wise方式,并行對每個item進(jìn)行打分。這就使得打分時缺少了上下文感知能力。用戶最終是否會點擊購買一個商品,除了和它自身有關(guān)外,和它周圍其他的item也息息相關(guān)。重排一般比較輕量,可以加入上下文感知能力,提升推薦整體算法效率。



          context-wise建模的方法主要有:pairwise和listwise兩大類。


          • Pairwise


          通過對比兩個商品之間相對關(guān)系來構(gòu)建,有一定的上下文感知能力,但仍然忽略了全局信息,而且造成了極大的計算和性能開銷。這種方法有RankSVM、GBRank、RankNet、LambdaRank等經(jīng)典的pairwise LTR方法。


          • Listwise


          建模item序列整體信息,通過listwise損失函數(shù)來對比商品之間序列關(guān)系??梢酝ㄟ^DNN、RNN、self-attention等多種方式建模和提取item序列信息,再通過beam-search等貪婪搜索方法得到最終的序列。主要有五種建模方法:


          • 樹模型:LambdaMart等。


          • RNN:DLCM、seq2slate等,分別利用RNN+attention,和pointer-network來構(gòu)建seq2seq模型。


          • 兩段式:PRS等,構(gòu)建PMatch和PRank兩個鏈路,通過兩段式結(jié)構(gòu)得到最終輸出。


          • self-attention:PRM、SetRank等,和RNN模型比較像,將RNN替換成了self-attention,客服長程建模梯度彌散問題,以及串行計算耗時過大等。


          • 強化學(xué)習(xí):LIRD、GRN等。


          這兒簡單介紹下PRM,它構(gòu)建了input layer、encoding layer、output layer三層,通過self-attention使得序列內(nèi)item充分交互,提取序列信息,通過貪婪搜索得到最終序列:


          • input layer輸入層:得到排序階段輸出的有序序列,輸入包括三部分:


          1. 每個item對應(yīng)一個特征向量E。

          2. user和item之間計算一個個性化向量PV,通過預(yù)訓(xùn)練模型得到。

          3. item的位置編碼PE。


          • encoding layer編碼層:通過self-attention建模,每個位置輸出一個編碼后的向量


          • output layer輸出層:編碼層輸出的每個位置的向量,通過一層線性層和softmax后,得到每個item的概率。通過beam-search等貪婪搜索方法,得到最終的序列。



          整個過程和機器翻譯等NLP場景任務(wù)很像,同樣可以結(jié)合pointer-network來優(yōu)化。paper地址:(https://arxiv.org/pdf/1904.06813.pdf)



          (三)實時性提升


          推薦系統(tǒng)的實時性也是一個比較大的話題。實時性對于提升用戶體驗,優(yōu)化算法效率,都十分重要。實時性主要包括3方面:


          • 系統(tǒng)響應(yīng)實時性:考慮到推薦系統(tǒng)QPS壓力,用戶一次請求會下發(fā)多個item,瀏覽完后重新請求才會觸發(fā)系統(tǒng)新的響應(yīng)。系統(tǒng)響應(yīng)實時性,對于用戶實時行為捕捉十分關(guān)鍵?;诙松现嘏诺南到y(tǒng),可以實現(xiàn)響應(yīng)的實時性。


          • 特征實時性:用戶行為特征實時性、item統(tǒng)計特征實時性等。相對來說特征實時性是最容易做到的,也是對推薦效果影響最大的。特征實時性要考慮系統(tǒng)鏈路數(shù)據(jù)回收延遲,和用戶本身行為延遲反饋問題。


          • 模型實時性:在線學(xué)習(xí),實時更新模型等。重排模型比較輕量,容易做到實時更新。精排相對來說困難一些,但也有一些團(tuán)隊實現(xiàn)了精排的在線深度學(xué)習(xí)ODL。


          重排階段提升實時性主要方法有,在線學(xué)習(xí)ODL和端上重排,下面詳細(xì)講解。



          • 在線學(xué)習(xí)ODL


          深度模型由于需要的訓(xùn)練數(shù)據(jù)和時間都比較大,資源消耗也比較多,故一般以離線訓(xùn)練為主。小時級或者天級更新。對于用戶的實時行為pattern,或者冷啟item都不是特別友好。特別在大促期間和秒殺場景,用戶興趣和需求轉(zhuǎn)瞬即逝,商品也隨時可能會被售空。我們這兒就不談數(shù)據(jù)鏈路和推薦工程方面的工作了,算法方面主要的問題有:


          • 延遲反饋:用戶點擊完商品后,可能大數(shù)據(jù)系統(tǒng)中需要幾分鐘甚至數(shù)小時后才收集到他的購買行為。延遲反饋顯然對于label置信度是個很大的挑戰(zhàn)。主要原因有數(shù)據(jù)鏈路延遲和用戶行為延遲。flink收集數(shù)據(jù)有一定的鏈路delay,用戶也可能猶豫幾小時后才真正購買。延遲反饋需要平衡樣本置信度和模型新鮮度。優(yōu)化方法有:


            負(fù)例校正法:先標(biāo)記為負(fù)樣本,等真正轉(zhuǎn)化后再重新插入正樣本。這種方法可以保證模型新鮮度,但假負(fù)例會對模型有一定的副作用。(https://dl.acm.org/doi/abs/10.1145/3298689.3347002)


            待法:一定時間內(nèi)等待真實的成交轉(zhuǎn)化,如果沒等到,不管后續(xù)有沒有,都不校正了。這種方法label置信度有一定提升,但模型新鮮度會有折損。

            (https://arxiv.org/pdf/2002.02068.pdf)


            糾偏法,例如ES-DFM,對觀測轉(zhuǎn)化分布和真實轉(zhuǎn)化分布之間的關(guān)系建模,降低假負(fù)例的權(quán)重和增加真正例的權(quán)重,來糾正樣本不置信問題。

            (https://arxiv.org/pdf/2012.03245.pdf)


          • 數(shù)據(jù)穩(wěn)定性數(shù)據(jù)隨時間波動大,比如電商CVR。很多用戶習(xí)慣白天瀏覽點擊,晚上真正下單。所以CVR在晚上明顯比白天高。這時候需要做一定的修正。也可以在線學(xué)習(xí)和離線增量學(xué)習(xí)相結(jié)合。每天固定一個時間點,對模型做一次天級離線增量更新。從而修正在線學(xué)習(xí)中積累的誤差。



          • 邊緣計算與端上重排


          邊緣計算和端上重排這兩年一直都很火,它可以有效降低云端負(fù)載,保證數(shù)據(jù)安全隱私性。同時也可以提升算法效率,算法側(cè)的優(yōu)點要有:


          • 推薦響應(yīng)實時性:不用請求下一頁,實現(xiàn)即時更新。


          • 行為特征實時性:端上即時計算,不用回傳云端。


          • 行為特征豐富度:負(fù)反饋、滾動速度、曝光時長等多種用戶行為都可以在模型中使用,基于云端的方式受限于數(shù)據(jù)傳輸和存儲,一般只會選擇點擊等關(guān)鍵的用戶行為。


          端上重排需要將一個輕量級的模型,部署在端側(cè),實現(xiàn)端上推理。



          四、流量調(diào)控


          流量調(diào)控在推薦系統(tǒng)中也十分重要,重排在最后一環(huán),責(zé)無旁貸。流量調(diào)控要兼顧實時性和準(zhǔn)確性,二者之間需要達(dá)到平衡。流量調(diào)控的作用和方式主要有:


          • 保量類:通過流量扶持,刺激生態(tài)建設(shè)。比如對冷啟item,新熱item,大V的新發(fā)布item,均可以給予一定的保量流量,讓他們能夠順利透出和正循環(huán)。保量的實時性也十分重要,作者能第一時間看到自己item得到的點贊、評論等,有利于刺激他們持續(xù)創(chuàng)作。保量常見的方法有:


            規(guī)則引擎制訂一定的策略規(guī)則,實現(xiàn)保量。這種方法簡單易行,item也肯定能獲得一定流量。但準(zhǔn)確度較低,也較難實現(xiàn)個性化。流量容易不夠或者超發(fā)。


            探索和利用通過e-greedy、Thompson sampling、UCB等EE類的方法,可以有效探索冷啟item,同時利用已有item,保障效率折損最低。

          • 調(diào)權(quán)類:一般是業(yè)務(wù)運營需求,需要快速實時干預(yù)。比如三八婦女節(jié)需要臨時對美妝類item做加權(quán),增加其流量。過了這一天可能效果就會大打折扣了。常見方法有:


            規(guī)則引擎直接在重排結(jié)果上,對于命中屬性規(guī)則的item,加入一定的分?jǐn)?shù),使得最后可以透出,增加其流量。這種方法簡單易行,實時性好。但調(diào)權(quán)準(zhǔn)確率低,也較難個性化,可能造成較大的流量浪費和效率折損。適合某些時效要求高的場景。比如大促期間加權(quán)等。


            樣本加權(quán)對于命中調(diào)權(quán)規(guī)則的樣本,增加其在loss中的權(quán)重,迫使模型偏向于對它們精準(zhǔn)預(yù)估。這種方法可以實現(xiàn)個性化,對效率折損較低。但由于需要訓(xùn)練模型并重新上線,故實時性不高。適合某些長期性的調(diào)權(quán)場景。比如對大店、大V的加權(quán)等。



          ?作者簡介


          謝楊易

          騰訊應(yīng)用算法研究員

          騰訊應(yīng)用算法研究員,畢業(yè)于中國科學(xué)院,目前在騰訊負(fù)責(zé)視頻推薦算法工作,有豐富的自然語言處理和搜索推薦算法經(jīng)驗。



          ?推薦閱讀


          圖文解讀:推薦算法架構(gòu)——精排!

          技術(shù)的發(fā)展,如何高效助力行業(yè)數(shù)字化?

          作為Gopher,你知道Go的注釋即文檔應(yīng)該怎么寫嗎?

          從中心走向邊緣——解讀邊緣計算解決方案!





          瀏覽 108
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  狠狠狠操 | 无码人妻一区二区三区在线 | 免费看黄在线看 | 玖玖视频在线免费观看 | 污污网站在线免费观看 |