日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

機(jī)器學(xué)習(xí)在高德搜索建議中的應(yīng)用優(yōu)化實(shí)踐

 昵稱35641324 2019-07-10

導(dǎo)讀:高德的愿景是:連接真實(shí)世界,讓出行更美好。為了實(shí)現(xiàn)愿景,我們要處理好LBS大數(shù)據(jù)和用戶之間的智能鏈接。信息檢索是其中的關(guān)鍵技術(shù),而搜索建議又是檢索服務(wù)不可或缺的組成部分。

本文將主要介紹機(jī)器學(xué)習(xí)在高德搜索建議的具體應(yīng)用,尤其是在模型優(yōu)化方面進(jìn)行的一些嘗試,這些探索和實(shí)踐都已歷經(jīng)驗(yàn)證,取得了不錯(cuò)的效果,并且為后來幾年個(gè)性化、深度學(xué)習(xí)、向量索引的應(yīng)用奠定了基礎(chǔ)。

對(duì)搜索排序模塊做重構(gòu)

搜索建議(suggest服務(wù))是指:用戶在輸入框輸入query的過程中,為用戶自動(dòng)補(bǔ)全query或POI(Point of Interest,興趣點(diǎn),地理信息系統(tǒng)中可以是商鋪、小區(qū)、公交站等地理位置標(biāo)注信息),羅列出補(bǔ)全后的所有候選項(xiàng),并進(jìn)行智能排序。

我們希望通過suggest服務(wù):智能提示,降低用戶的輸入成本。它的特點(diǎn)是:響應(yīng)快、不承擔(dān)復(fù)雜query的檢索,可以把它理解為一個(gè)簡(jiǎn)化版的LBS領(lǐng)域信息檢索服務(wù)。

和通用IR系統(tǒng)一樣,suggest也分為doc(LBS中的doc即為POI)的召回和排序兩個(gè)階段。其中,排序階段主要使用query和doc的文本相關(guān)性,以及doc本身的特征(weight、click),進(jìn)行加權(quán)算分排序。

但隨著業(yè)務(wù)的不斷發(fā)展、特征規(guī)模越來越大,人工調(diào)參逐漸困難,基于規(guī)則的排序方式已經(jīng)很難得到滿意的效果。這種情況下,為了解決業(yè)務(wù)問題,將不得不打上各種補(bǔ)丁,導(dǎo)致代碼難以維護(hù)。

因此,我們決定對(duì)排序模塊進(jìn)行重構(gòu),Learning to Rank無疑是一個(gè)好的選擇。

面臨的挑戰(zhàn):樣本構(gòu)造、模型調(diào)優(yōu)

Learning to Rank(LTR)是用機(jī)器學(xué)習(xí)的方法來解決檢索系統(tǒng)中的排序問題。業(yè)界比較常用的模型是gbrank,loss方案用的最多的是pair wise,這里也保持一致。一般應(yīng)用LTR解決實(shí)際問題,最重要的問題之一就是如何獲得樣本。

首先,高德地圖每天的訪問量巨大,這背后隱藏的候選POI更是一個(gè)天文數(shù)字,想要使用人工標(biāo)注的方法去獲得樣本明顯不現(xiàn)實(shí)。

其次,如果想要使用一些樣本自動(dòng)構(gòu)造的方法,比如基于用戶對(duì)POI的點(diǎn)擊情況構(gòu)建樣本pair ,也會(huì)遇到如下的問題:

  • 容易出現(xiàn)點(diǎn)擊過擬合,以前點(diǎn)擊什么,以后都給什么結(jié)果。

  • 有時(shí),用戶點(diǎn)擊行為也無法衡量真實(shí)滿意度。

  • suggest前端只展示排序top10結(jié)果,更多的結(jié)果沒有機(jī)會(huì)展現(xiàn)給用戶,自然沒有點(diǎn)擊。

  • 部分用戶習(xí)慣自己輸入完整query進(jìn)行搜索,而不使用搜索建議的補(bǔ)全結(jié)果,統(tǒng)計(jì)不到這部分用戶的需求。

對(duì)于這幾個(gè)問題總結(jié)起來就是:無點(diǎn)擊數(shù)據(jù)時(shí),建模很迷茫。但就算有某個(gè)POI的點(diǎn)擊,卻也無法代表用戶實(shí)際是滿意的。

最后,在模型學(xué)習(xí)中,也面臨了特征稀疏性的挑戰(zhàn)。統(tǒng)計(jì)學(xué)習(xí)的目標(biāo)是全局誤差的一個(gè)最小化。稀疏特征由于影響的樣本較少,在全局上影響不大,常常被模型忽略。但是實(shí)際中一些中長尾case的解決卻往往要依靠這些特征。因此,如何在模型學(xué)習(xí)過程中進(jìn)行調(diào)優(yōu)是很重要。

系統(tǒng)建模過程詳解

上一節(jié),我們描述了建模的兩個(gè)難題,一個(gè)是樣本如何構(gòu)造,另一個(gè)是模型學(xué)習(xí)如何調(diào)優(yōu)。先看下怎么解決樣本構(gòu)造難題,我們解決方案是:

  • 考量用戶在出行場(chǎng)景的行為session,不光看在suggest的某次點(diǎn)擊行為,更重要的是,考察用戶在出行場(chǎng)景下的行為序列。比如suggest給出搜索建議后,繼續(xù)搜索的是什么詞,出行的地點(diǎn)是去哪里,等等。

  • 不是統(tǒng)計(jì)某個(gè)query下的點(diǎn)擊, 而是把session看作一個(gè)整體,用戶在session最后的點(diǎn)擊行為,會(huì)泛化到session中的所有query上。

詳細(xì)方案

第一步,融合服務(wù)端多張日志表,包括搜索建議、搜索、導(dǎo)航等。接著,進(jìn)行session的切分和清洗。最后,通過把輸入session中,末尾query的點(diǎn)擊計(jì)算到session中所有query上,以此滿足實(shí)現(xiàn)用戶輸入session最短的優(yōu)化目標(biāo)。

如下圖所示:

最終,抽取線上點(diǎn)擊日志超過百萬條的隨機(jī)query,每條query召回前N條候選POI。利用上述樣本構(gòu)造方案,最終生成千萬級(jí)別的有效樣本作為gbrank的訓(xùn)練樣本。

特征方面,主要考慮了4種建模需求,每種需求都有對(duì)應(yīng)的特征設(shè)計(jì)方案:

  • 有多個(gè)召回鏈路,包括:不同城市、拼音召回。因此,需要一種特征設(shè)計(jì),解決不同召回鏈路間的可比性。

  • 隨著用戶的不斷輸入,目標(biāo)POI不是靜態(tài)的,而是動(dòng)態(tài)變化的。需要一種特征能夠表示不同query下的動(dòng)態(tài)需求。

  • 低頻長尾query,無點(diǎn)擊等后驗(yàn)特征,需要補(bǔ)充先驗(yàn)特征。

  • LBS服務(wù),有很強(qiáng)的區(qū)域個(gè)性化需求。不同區(qū)域用戶的需求有很大不同。為實(shí)現(xiàn)區(qū)域個(gè)性化,做到千域千面,首先利用geohash算法對(duì)地理空間進(jìn)行分片,每個(gè)分片都得到一串唯一的標(biāo)識(shí)符。從而可以在這個(gè)標(biāo)識(shí)符(分片)上分別統(tǒng)計(jì)特征。

詳細(xì)的特征設(shè)計(jì),如下表所示:

完成特征設(shè)計(jì)后,為了更好發(fā)揮特征的作用,進(jìn)行必要的特征工程,包括尺度縮放、特征平滑、去position bias、歸一化等。這里不做過多解釋。

初版模型,下掉所有規(guī)則,在測(cè)試集上MRR 有5個(gè)點(diǎn)左右的提升,但模型學(xué)習(xí)也存在一些問題,gbrank特征學(xué)習(xí)的非常不均勻。樹節(jié)點(diǎn)分裂時(shí)只選擇了少數(shù)特征,其他特征沒有發(fā)揮作用。

以上就是前面提到的,建模的第二個(gè)難題:模型學(xué)習(xí)的調(diào)優(yōu)問題。具體來說就是如何解決gbrank特征選擇不均勻的問題。接下來,我們?cè)敿?xì)解釋下。

先看下,模型的特征重要度。如下圖所示:

經(jīng)過分析,造成特征學(xué)習(xí)不均衡的原因主要有:

  • 交叉特征query-click的缺失程度較高,60%的樣本該特征值為0。該特征的樹節(jié)點(diǎn)分裂收益較小,特征無法被選擇。然而,事實(shí)上,在點(diǎn)擊充分的情況下,query-click的點(diǎn)擊比city-click更接近用戶的真實(shí)意圖。

  • 對(duì)于文本相似特征,雖然不會(huì)缺失,但是它的正逆序比較低,因此節(jié)點(diǎn)分裂收益也比city-click低,同樣無法被選擇。

綜上,由于各種原因,導(dǎo)致樹模型學(xué)習(xí)過程中,特征選擇時(shí),不停選擇同一個(gè)特征(city-click)作為樹節(jié)點(diǎn),使得其他特征未起到應(yīng)有的作用。解決這個(gè)問題,方案有兩種:

  • 方法一:對(duì)稀疏特征的樣本、低頻query的樣本進(jìn)行過采樣,從而增大分裂收益。優(yōu)點(diǎn)是實(shí)現(xiàn)簡(jiǎn)單,但缺點(diǎn)也很明顯:改變了樣本的真實(shí)分布,并且過采樣對(duì)所有特征生效,無法靈活的實(shí)現(xiàn)調(diào)整目標(biāo)。我們選擇了方法二來解決。

  • 方法二:調(diào)loss function。按兩個(gè)樣本的特征差值,修改負(fù)梯度(殘差),從而修改該特征的下一輪分裂收益。例如,對(duì)于query-click特征非缺失的樣本,學(xué)習(xí)錯(cuò)誤時(shí)會(huì)產(chǎn)生loss,調(diào)loss就是給這個(gè)loss增加懲罰項(xiàng)loss_diff。隨著loss的增加,下一棵樹的分裂收益隨之增加,這時(shí)query-click特征被選作分裂節(jié)點(diǎn)的概率就增加了。

具體的計(jì)算公式如下式:

以上公式是交叉熵?fù)p失函數(shù)的負(fù)梯度,loss_diff 相當(dāng)于對(duì)sigmod函數(shù)的一個(gè)平移。

差值越大,loss_diff越大,懲罰力度越大,相應(yīng)的下一輪迭代該特征的分裂收益也就越大。

調(diào)loss后,重新訓(xùn)練模型,測(cè)試集MRR在初版模型的基礎(chǔ)又提升了2個(gè)點(diǎn)。同時(shí)歷史排序case的解決比例從40%提升到70%,效果明顯。

寫在最后

Learning to Rank技術(shù)在高德搜索建議應(yīng)用后,使系統(tǒng)擺脫了策略耦合、依靠補(bǔ)丁的規(guī)則排序方式,取得了明顯的效果收益。gbrank模型上線后,效果基本覆蓋了各頻次query的排序需求。

目前,我們已經(jīng)完成了人群個(gè)性化、個(gè)體個(gè)性化的建模上線,并且正在積極推進(jìn)深度學(xué)習(xí)、向量索引、用戶行為序列預(yù)測(cè)在高德搜索建議上的應(yīng)用。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多