Learning to rank在淘宝的应用
Learning to rank在淘寶的應(yīng)用
作者:仁重?(一淘及搜索事業(yè)部-搜索技術(shù)-算法技術(shù)-主搜索與商城)
????
前言
????排序中我們需要解決的是什么樣的問題?怎么樣把用戶想要的,好的商品排到前面;怎樣調(diào)節(jié)不同賣家的流量;給質(zhì)量好,但價格不便宜的商品更多的流量,來引導(dǎo)市場更加規(guī)范。需要解決的問題很復(fù)雜,但是排序結(jié)果好壞難以評判。
????對于搜索結(jié)果好不好的問題,通常的做法是把搜索結(jié)果的每一條分為5類:
????bad(差)
????fair(一般)
????good(好)
????excellent(非常好)
????perfect(完美)。
????對搜索的結(jié)果進行人工評價,并且對這5類計算ndcg,來判斷排序結(jié)果的好壞。
????這是非常粗放的一個評判標(biāo)準(zhǔn),并且需要大量的人工對排序結(jié)果進行標(biāo)注。這種方法費時費力并且人對搜索結(jié)果的評價很難標(biāo)準(zhǔn)化。所以對于新加入的特征做一個新的排序,在實際應(yīng)用中,我們通常會采用AB test的方法在線上進行對比測試。這樣繞開的對搜索結(jié)果的直接判斷,間接的通過用戶反饋來評價新排序的好壞。
????回到問題的本質(zhì),我們需要知道排序結(jié)果的好壞,整體的好壞,是很難得到的,但是對于一對(pair)商品的好壞,即一個寶貝是否比另外一個寶貝好,我們是比較容易判斷的。如果構(gòu)造出和線上分布基本一致的寶貝對集合,只要在這些集合上的商品對排序和我們期望的是一致的,就可以認(rèn)為排序是較好的,這樣把商品的好壞和排序的好壞定義更加明確,更有利于我們?nèi)?yōu)化排序。有了商品對的好壞,我們在淘寶的搜索上使用learning to rank技術(shù)來實現(xiàn)了對商品對(pairwise)優(yōu)化來優(yōu)化排序。
????Learning to rank(ltr)中文翻譯為排序?qū)W習(xí),用機器學(xué)習(xí)的方法來解決檢索系統(tǒng)中的排序問題。當(dāng)特征大到一定的規(guī)模,或排序的分類到了一定的規(guī)模,再使用人工規(guī)則就很難達(dá)到一個較好的狀況,這種情況就需要使用機器學(xué)習(xí)的方法來幫助我們優(yōu)化排序模型。
?
為什么要在淘寶使用learning to rank。
?
????首先得簡單介紹一下淘寶搜索的的發(fā)展歷史,從數(shù)據(jù)庫到搜索引擎,解決了商品量較大的問題;那時商品排序完全依靠下降時間來排序,隨著商品量的不斷增加,排序后的效果越來越差,就先后加入了類目相關(guān)性與文本相關(guān)性,商品人氣分;再后來為了平衡賣家流量,加入了賣家分;再后來為了更好的用戶體驗,加入了個性化,圖像質(zhì)量等因素。
?
????類似類目相關(guān)性,文本相關(guān)性在搜索排序模型中都稱之為特征,每個特征會根據(jù)不同的模型或者規(guī)則生產(chǎn)一個0~1的分?jǐn)?shù),這些分?jǐn)?shù)通過線性加權(quán)的方式對最終的排序進行作用,這些特征的權(quán)重通過不斷的進行AB test的方法找到較優(yōu)的一組。
?
????一步一步走來,現(xiàn)在淘寶搜索的排序模型有他一定的必然性。但是,每次模型的修改權(quán)重參數(shù)都需要進行較長時間的調(diào)整,需要結(jié)合人工的經(jīng)驗預(yù)估出一些比較合理的參數(shù),再不斷的通過用戶反饋進行測試,找到較優(yōu)的一組參數(shù)。這樣做有以下缺點:
????1.測試時間較長。
????2.測試有效,一般可能不能達(dá)到一個最優(yōu)化的效果。
????3.在不斷的優(yōu)化過程中,對已有特征參數(shù)的調(diào)整常常被遺漏。
????所以,我們通過learning to rank的方法,通過機器學(xué)習(xí)模型來自動調(diào)整這些參數(shù)。項目命名為Jazz,定位是自動調(diào)整特征權(quán)重參數(shù),但不產(chǎn)生新特征。之后新加入的特征,都通過這個模型來確定它最優(yōu)的參數(shù)。
?
優(yōu)點,缺點,難點
?
淘寶的ltr
????淘寶的ltr主要有以下幾個特殊之處,
?
????一、一般來說,ltr的特征都是很基礎(chǔ)的特征,例如一個網(wǎng)頁排序中經(jīng)常會被提到的特征有:
?
????與一般意義上的ltr不同,在淘寶已經(jīng)積累了不少較強的統(tǒng)計意義的特征。這些用到的特征經(jīng)過不斷優(yōu)化,在淘寶已有的排序上表現(xiàn)的已經(jīng)較好。我們再對齊進行優(yōu)化,就不需要像網(wǎng)頁排序那樣從頭開始發(fā)掘特征,我們在這個基礎(chǔ)上來做ltr,使用的特征自然而然是原來使用的這些特征,對他們在加權(quán)參數(shù)上進行調(diào)整。更像是對排序參數(shù)的優(yōu)化。(當(dāng)然這只是第一步,之后會根據(jù)效果來新增特征。)
????
????二、使用統(tǒng)計的用戶反饋的行為來代替人工標(biāo)注。很多l(xiāng)tr的論文都提到需要人工將排序的相關(guān)性分為bad, fair, good,excellent, perfect五檔,這個是耗時耗力的工作,并且由人工來標(biāo)注,標(biāo)準(zhǔn)很難以統(tǒng)一,所以選用用戶的點擊與購買等行為來代替對商品的相關(guān)性及商品優(yōu)劣的判斷。
?
對特征參數(shù)的優(yōu)化,從原始的手工調(diào)整,到了自動化的學(xué)習(xí)。這個變化如下圖所示,
?
????原有的商品排序系統(tǒng)參數(shù)產(chǎn)生流程如下圖中綠色箭頭所示,新的流程如紅色所示。減少人為的因素,并且可以在線下評估效果,節(jié)省了線上ABtest的反復(fù)測試的時間,并且是可以達(dá)到最優(yōu)化參數(shù)的目的。
?
總體的架構(gòu)如下:
使用pairwise的方法來生產(chǎn)訓(xùn)練數(shù)據(jù)
????搜索的目標(biāo)是相對比較多的,既需要考慮商品購買轉(zhuǎn)化率,又需要兼顧商品點擊率等,不適用pointwise這樣目標(biāo)單一的方法,所以我們選擇了pairwise來做訓(xùn)練數(shù)據(jù)。Pairwise的難點在于訓(xùn)練數(shù)據(jù)的構(gòu)建,當(dāng)然后續(xù)也在實驗listwise的一些方法,以及pairwise和listwise結(jié)合的方法,以及boost的方法。
?
大多數(shù)論文上都會提到幾種pairwise的方法,
????1.Click> Skip Above
????2.LastClick > Skip Above
????3.Click> Earlier Click
????4.LastClick > Skip Previous
????5.Click> No-Click Next
?
????Click>SkipAbove是指,在搜索結(jié)果頁點擊的商品,好于在點這個商品之前瀏覽過的商品,即排序排在這個商品前面的并且未被點擊的商品。前4個方法都是類似的思想,不過對于像淘寶這樣相對成熟的排序系統(tǒng)來說,這些方法并不適用,因為這樣選出的pair樣本與排序的分?jǐn)?shù)恰好相反,原始的排序順序,將各個特征分?jǐn)?shù)較高的排在前面,而通過Click > SkipAbove選出的pair集合,都是表述分?jǐn)?shù)低的比分?jǐn)?shù)高的好,可以說都是反例,這樣會導(dǎo)致模型訓(xùn)練結(jié)果所有的特征權(quán)重都為負(fù)。
????
????所以我們選擇pair的方法是通過用戶的點擊與購買反饋來生產(chǎn)表示商品好壞的pair對。
?
使用點擊反饋來形成pair
????統(tǒng)計同query下,每個商品的點擊率,將點擊率平滑后,將點擊率相差一定以上的商品形成pair。
?
使用無點擊的數(shù)據(jù)來形成pair
????在樣本中加入一部分通過原始排序來生成的pair,這樣的目的是使排序的參數(shù)變化不至于太劇烈,形成一些意想不到的badcase。
這部分的樣本根據(jù)展示日志中原始商品的排序,第1個商品好于第20個商品,第2個商品好于第21個商品,以此類推。
?
樣本的混合與分層抽樣
?
?
?
樣本產(chǎn)生之后
?
1.?按照線上參數(shù)進行排序計算NDCG。
????a)??NDCG計算有點擊的商品相關(guān)性是1,有成交的商品相關(guān)性為2
????b)??對pvlog進行重排時,重排范圍只在當(dāng)前頁面內(nèi),不考慮重排后,第2頁的商品排到第一頁的情況。
????c)??DCG[i] = DCG[i-1] + G[i]/log_2?〖(i+1)〗,i是排序的位置,G[i]是在第i個位置上商品的相關(guān)性。IDCG為按相關(guān)性排序后的DCG
????d)??NDCG=DCG/IDCG
?
2.?調(diào)整樣本混合比例,或者樣本選擇策略。并且重新進行訓(xùn)練。
3.?按訓(xùn)練好的模型的參數(shù)對pvlog進行重新排序。計算NDCG
4.?和按照線上參數(shù)排序的NDCG進行比較,看是否有增加或者減少,和增加的程度,來判斷這次調(diào)整的收益。
5.?并且通過找到ndcg下降的query,分析下降的原因。
總結(jié)
以上是生活随笔為你收集整理的Learning to rank在淘宝的应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 京东DNN Lab首席科学家:用深度学习
- 下一篇: eclipse 快捷键大全,eclips