作者:Pavel Kordík
編譯:ronghuaiyang
導(dǎo)讀
一般來說,搜索是非個(gè)性化的,不過如果和推薦系統(tǒng)組合起來,也會(huì)有意想不到的效果。
尋找正確的信息總是很困難的。在不久之前,文檔還是存放在實(shí)際的物理倉庫中,要找到相關(guān)的文檔是非常困難的。
當(dāng)文檔可以通過在線存儲(chǔ)庫訪問時(shí),索引文檔的數(shù)量開始超出物理存儲(chǔ)的限制。電子商務(wù)網(wǎng)站提供的產(chǎn)品數(shù)量或通過在線流媒體服務(wù)提供的內(nèi)容數(shù)量亦是如此。
用戶傾向于在一個(gè)地方找到所有東西,他們中的大多數(shù)人喜歡從更相關(guān)的選擇中進(jìn)行挑選,所以服務(wù)提供商需要適應(yīng)這種需求。一些全球性的服務(wù)(如谷歌、亞馬遜、Netflix、Spotify),在飛快的增長,用戶幾乎在上面可以找到任何東西。推動(dòng)它們在全球占據(jù)主導(dǎo)地位的最強(qiáng)大工具之一,是它們以機(jī)器學(xué)習(xí)技術(shù)為動(dòng)力的高度先進(jìn)的個(gè)性化技術(shù)。這些技術(shù)就是推薦系統(tǒng)和個(gè)性化搜索。
推薦系統(tǒng)使用用戶與物品的交互的歷史來為用戶生成最相關(guān)物品的排序列表。搜索引擎根據(jù)與給定查詢的相似度對內(nèi)容進(jìn)行排序,而不考慮用戶的歷史記錄。
推薦系統(tǒng)使用戶能夠在線發(fā)現(xiàn)相關(guān)文檔、產(chǎn)品或內(nèi)容。通常,用戶可能最喜歡的物品隱藏在數(shù)百萬個(gè)其他物品中。用戶無法通過搜索引擎直接找到這些商品,因?yàn)樗麄兒苌僦浪鼈兊臉?biāo)簽,甚至可能不知道它們的存在。
另一方面,有時(shí)用戶需要尋找一個(gè)特定的物品,并愿意通過表達(dá)他們的需求來幫助在線系統(tǒng),以減少可能被推薦的物品的數(shù)量。
有幾種方法可以幫助用戶表達(dá)他們的需求。用戶體驗(yàn)在這里扮演著非常重要的角色。很多用戶通過他們的手機(jī)訪問在線服務(wù),但顯示興趣的能力有限。在線服務(wù)應(yīng)該專注于利用所有可用信息過濾可能的搜索結(jié)果。
用戶地理位置可以顯著縮小可能的搜索和推薦結(jié)果。例如,在Recombee中,您可以選擇推薦只包含距離用戶位置一定范圍內(nèi)的物品。另一種方法是,當(dāng)某個(gè)物品在地理位置上更接近某個(gè)用戶時(shí),你可以提高該物品被推薦的可能性。
用戶希望使用特定的標(biāo)簽或類別過濾掉可能的搜索結(jié)果。它通常只需要一次點(diǎn)擊就可以過濾除特定類別之外的所有物品(例如,除了科幻小說之外的所有文章)。應(yīng)該讓用戶盡可能輕松地表達(dá)他們的興趣。
一定比例的用戶希望可以使用一個(gè)查詢文本(即使只是幾個(gè)字符)的方式來縮小搜索范圍。他們的目的可能是找到一個(gè)特定類別的商品,或者通過他們知道的正在尋找的商品的標(biāo)簽直接來搜索一個(gè)特定的商品。他們輸入的文本被稱為a user query,這篇博客文章討論了如何利用一個(gè)query來幫助用戶找到她/他要找的東西。這篇博客文章從理論部分開始,然后是實(shí)踐部分。
信息檢索
為給定文本query尋找合適物品的問題作為信息檢索(information retrieval, IR)已經(jīng)研究了幾十年。當(dāng)用戶向系統(tǒng)輸入一個(gè)query時(shí),信息檢索過程就開始了。query是信息需求的正式形式,例如web搜索引擎中的搜索字符串。在信息檢索中,query不能唯一地標(biāo)識(shí)集合中的單個(gè)物品(文檔)。相反,有幾個(gè)物品能與query匹配,可能具有不同程度的相關(guān)性。
傳統(tǒng)的方法試圖將query與文檔匹配,并根據(jù)相似度獲得相關(guān)性。機(jī)器學(xué)習(xí)方法通過從訓(xùn)練數(shù)據(jù)構(gòu)建一個(gè)排序模型來解決IR問題。這樣的訓(xùn)練數(shù)據(jù)(對于搜索引擎來說)是什么樣的呢?通常,它是對每個(gè)query進(jìn)行“適當(dāng)”排序的文檔的集合。
以下是在相關(guān)博客中描述的IR系統(tǒng)方案:
經(jīng)典的IR系統(tǒng)不是個(gè)性化的,它只是為一個(gè)query返回大部分相關(guān)的文檔。機(jī)器學(xué)習(xí)通常是不需要的,因?yàn)橄到y(tǒng)遵循預(yù)定義的過程(如TF-IDF相似性查找)。
該系統(tǒng)通過匹配query和文檔并計(jì)算它們的相似度來工作。大多數(shù)相似的文檔都是按照與query的相似度排序返回的。相似度是計(jì)算出來的,比如TF-IDF向量的余弦相似度。
通過重新排序(使用機(jī)器學(xué)習(xí)模型)可以改進(jìn)搜索結(jié)果。在本例中,還使用搜索引擎來減少機(jī)器學(xué)習(xí)模型的候選項(xiàng)的數(shù)量,從而使評分更快。
Learning to rank(LTR)是機(jī)器學(xué)習(xí)的一種應(yīng)用,它根據(jù)人的期望對物品進(jìn)行排序。LTR模型通常使用人類標(biāo)記的數(shù)據(jù)進(jìn)行訓(xùn)練。
在召回階段,LTR模型獲取由搜索引擎生成的一個(gè)query和返回的文檔(項(xiàng))的子集,作為每個(gè)物品的輸入和輸出相關(guān)性。最后,它可以輸出一個(gè)經(jīng)過排序的文檔列表(k-最相關(guān)的文檔)。請注意,現(xiàn)代系統(tǒng)還可以將用戶屬性文件作為輸入,并執(zhí)行個(gè)性化學(xué)習(xí)來對機(jī)器學(xué)習(xí)任務(wù)進(jìn)行排序。
經(jīng)典預(yù)測模型, learning to rank模型和推薦系統(tǒng)之間的區(qū)別是什么?
- 預(yù)測模型/分類器通常只有幾個(gè)輸出屬性,它們的設(shè)計(jì)目的不是為及百萬用戶進(jìn)行幾百萬物品的排序。
- Learning to Rank系統(tǒng),對于給定的query,返回的結(jié)果是相同的列表,不涉及個(gè)性化。
- 推薦系統(tǒng)不使用query,它們根據(jù)用戶歷史和用戶之間的相似性生成相關(guān)物品。相關(guān)物品的計(jì)算方法是在評分矩陣中預(yù)測它們的評分,或者根據(jù)它們的屬性推薦類似的物品。
下一節(jié)對LTR和推薦系統(tǒng)都很有用,因?yàn)槟P偷脑u估與機(jī)器學(xué)習(xí)中的經(jīng)典預(yù)測模型是相似的。
評估LTR和推薦系統(tǒng)
累積收益度量通過learning to rank系統(tǒng)或推薦系統(tǒng)返回的前k項(xiàng)的相關(guān)性。
例如,我們可以把6個(gè)返回物品的相關(guān)性加起來(注意,第4項(xiàng)是不相關(guān)的)。
顯示給用戶的物品很少有統(tǒng)一的可見性方式。例如,在電子商務(wù)中,由于大多數(shù)用戶不想向下滾動(dòng)列表,所推薦的商品的可見性急劇下降。在媒體領(lǐng)域,一個(gè)內(nèi)容經(jīng)常被高亮顯示,而其他內(nèi)容則很難被發(fā)現(xiàn)。
CG的問題是它沒有考慮到物品的位置。例如,第一個(gè)推薦可能有比其他五個(gè)大得多的圖像顯示。此外,用戶傾向于瀏覽列表頂部的幾個(gè)物品,而他們看到列表更下方的物品的可能性要小得多。基于這個(gè)原因,discounted cumulative gain(DCG)比簡單的CG更受歡迎。
在DCG中,相關(guān)性值與結(jié)果的位置成對數(shù)比例遞減。
DCG可以很容易地計(jì)算,如上例所示。
有些變體甚至更加強(qiáng)調(diào)檢索列表頂部的相關(guān)物品。
假設(shè)一個(gè)數(shù)據(jù)集包含N個(gè)query。通常的做法是對每個(gè)query的DCG分?jǐn)?shù)進(jìn)行歸一化,并得到所有query的平均DCG(“NDCG”)分?jǐn)?shù)。有這樣一個(gè)評價(jià)指標(biāo)是很好的,但請記住現(xiàn)實(shí)世界是殘酷的。
傳統(tǒng)的LTR算法
- Pointwise方法將排序轉(zhuǎn)化為單個(gè)物品的回歸或分類。然后,該模型一次只獲取一個(gè)物品,它要么預(yù)測其相關(guān)性得分,要么將該物品歸類到一個(gè)相關(guān)性類中。
- Pairwise方法將問題處理為物品對的分類,即確定在第一個(gè)位置上的物品是不是具有更高的相關(guān)性,反之亦然。
- Listwise方法把整個(gè)物品列表作為一個(gè)學(xué)習(xí)樣本。例如,使用屬于一個(gè)特定query的所有物品的得分,而不是僅通過比較成對或單個(gè)樣本。
以下是一些LTR算法的例子:
PRank算法,使用感知器(線性函數(shù))從文檔的特征向量中估計(jì)文檔的得分。query被附加到文檔嵌入的特征向量中。我們還可以將文檔分類為相關(guān)類(例如相關(guān)/不相關(guān))。這個(gè)函數(shù)幾乎可以用任何機(jī)器學(xué)習(xí)方法來建模。大多數(shù)算法使用決策樹和森林。現(xiàn)代方法利用深度學(xué)習(xí)網(wǎng)絡(luò)。
最終的排名列表是通過對所有文檔進(jìn)行評分并根據(jù)預(yù)測的相關(guān)性進(jìn)行排序得到的。顯然,當(dāng)對模型進(jìn)行輸入嵌入和相應(yīng)輸出相關(guān)性的訓(xùn)練時(shí),我們并沒有直接最小化NDCG或其他上述評價(jià)標(biāo)準(zhǔn)。與Pointwise方法相一致,Pairwise方法也使用代理可微損失函數(shù)。
為了更好地理解pairwise方法,我們應(yīng)該記住在二元分類中使用的交叉熵?fù)p失,它懲罰了模型的高置信度的錯(cuò)誤的預(yù)測。
對數(shù)損失可以通過對0,1標(biāo)簽的損失求和來計(jì)算:−(y log(p) +(1−y) log(1−p))
正如你所看到的,錯(cuò)誤的高置信度的答案得到很高的損失。
更多關(guān)于LTR系統(tǒng)的梯度訓(xùn)練算法可以在這里找到:
https://medium.com/recombee-blog/
//www.microsoft.com/en-us/research/wp-content/uploads/2005/08/icml_ranking.pdf。
Rankboost直接優(yōu)化分類錯(cuò)誤。它源自Adaboost,在文檔對上進(jìn)行訓(xùn)練。它訓(xùn)練弱分類器,將更多的權(quán)重賦給在前面步驟中沒有正確分類的對。
RankSVM是第一批采用pairwise方法解決問題的算法之一。它以序數(shù)回歸的方式進(jìn)行排序,并對類的閾值進(jìn)行訓(xùn)練。RankSVM采用hinge損耗函數(shù)最小化。它還允許直接使用kernel進(jìn)行非線性處理。
listwise方法的動(dòng)機(jī)
pairwise的方法很好,但也有缺點(diǎn)。訓(xùn)練過程是昂貴的,并且存在固有的訓(xùn)練偏差,在不同的query中差異很大。也只有pairwise的關(guān)系被考慮在內(nèi)。我們想使用一個(gè)評價(jià)指標(biāo),能讓我們優(yōu)化完整的list,同時(shí)考慮到所有物品的相關(guān)性。
指數(shù)排序的優(yōu)勢在于,即使當(dāng)模型f給所有文檔分配相似的分?jǐn)?shù)時(shí),它們的最高概率也會(huì)非常不同 —— 最好的文檔接近1,相關(guān)性較低的文檔接近0。
這里,損失是針對一個(gè)文檔列表計(jì)算的。我們不太關(guān)心不相關(guān)的文檔Py(x)=0,最大的損失是由相關(guān)文檔造成的。
如何得到LTR系統(tǒng)的訓(xùn)練數(shù)據(jù)?
獲取LTR系統(tǒng)的訓(xùn)練數(shù)據(jù)可能是一個(gè)漫長而昂貴的過程。你通常需要一群人,人工來輸入查詢并判斷搜索結(jié)果。關(guān)聯(lián)判斷也比較困難。評估人評估下列分?jǐn)?shù)之一:
相關(guān)度 —— 二值:相關(guān)與不相關(guān)(適合pointwise)
pairwise偏好 —— 文件A比文件B更相關(guān)。
總的順序 —— 文件按A、B、C、…,排序,根據(jù)它們的相關(guān)性。(對listwise來說很完美,但很耗時(shí))
很明顯,人工標(biāo)注非常貴,而且它們的標(biāo)簽也不是很可靠。因此,應(yīng)該從用戶在網(wǎng)站上的行為來獲得排名和訓(xùn)練系統(tǒng)。
更好的方法是用推薦系統(tǒng)代替上述的LTR算法。
個(gè)性化搜索回顧
當(dāng)根據(jù)用戶的偏好對搜索結(jié)果進(jìn)行排序時(shí),用戶對搜索功能的總體滿意度會(huì)顯著提高。
個(gè)性化搜索還應(yīng)該考慮用戶偏好、歷史交互和相似用戶的交互。為什么不利用推薦系統(tǒng)呢?對于相同的搜索查詢,兩個(gè)用戶可以期望非常不同的推薦。
解決方案是將搜索引擎與強(qiáng)大的推薦系統(tǒng)相結(jié)合,而不是像上面描述的那樣將經(jīng)典學(xué)習(xí)應(yīng)用到機(jī)器學(xué)習(xí)(LTR)模型中。這種方法有幾個(gè)優(yōu)點(diǎn),我們將在后續(xù)的博客文章中分析它們。
我們的個(gè)性化搜索方法結(jié)合了搜索引擎和推薦系統(tǒng)。首先,搜索引擎對推薦物品(與查詢無關(guān))進(jìn)行重新排序,以過濾掉不相關(guān)的推薦,并推送與query匹配的物品及其描述。其次,搜索引擎返回最佳匹配的候選項(xiàng),而不管用戶屬性文件或交互歷史記錄。然后,這些商品由推薦系統(tǒng)重新排序,以更好地適應(yīng)每個(gè)特定用戶的口味。最終結(jié)果由上游的排名投票產(chǎn)生。
英文原文:
https://medium.com/recombee-blog/introduction-to-personalized-search-2b70eb5fa5ae