1. 程式人生 > >Bayesian Personalized Ranking 演算法解析及Python實現

Bayesian Personalized Ranking 演算法解析及Python實現

1. Learning to Rank 

1.1 什麼是排序演算法 

 為什麼google搜尋 ”idiot“ 後,會出現特朗普的照片?

 

“我們已經爬取和儲存了數十億的網頁拷貝在我們相應的索引位置。因此,你輸入一個關鍵字,我們將關鍵詞與網頁進行匹配,並根據200多個因子對其進行排名,這些因子包括相關性、新鮮度、流行度、PageRank值、查詢和文件匹配的單詞個數、網頁URL連結地址長度以及其他人對排序結果的滿意度等。在此基礎上,在任何給定的時間,我們嘗試為該查詢排序並找到最佳結果。”

                                                —— GoogleCEO: 桑達爾·皮查伊 

1.2 排序演算法的發展

1.2.1 早期排序技術

最早主要是利用詞頻、逆文件頻率和文件長度這幾個因子來人工擬合排序公式。因為考慮因素不多,由人工進行公式擬合是完全可行的,此時機器學習並不能派上很大用場,因為機器學習更適合採用很多特徵來進行公式擬合。此外,對於有監督機器學習來說,首先需要大量的訓練資料,在此基礎上才可能自動學習排序模型,單靠人工標註大量的訓練資料不太現實。

1.2.2 基於機器學習的排序技術

對於搜尋引擎來說,儘管無法靠人工來標註大量訓練資料,但是使用者點選記錄是可以當做機器學習方法訓練資料的一個替代品,比如使用者發出一個查詢,搜尋引擎返回搜尋結果,使用者會點選其中某些網頁,可以假設使用者點選的網頁是和使用者查詢更加相關的頁面。

1.3 Learning to Rank(LTR)

機器學習排序系統由4個步驟組成:

  1. 人工標註訓練資料
  2. 文件特徵抽取
  3. 學習分類函式
  4. 在實際搜尋系統中採用機器學習模型

 

2. PointWise Approach

定義:單文件方法的處理物件是單獨的一篇文件,將文件轉換為特徵向量後,機器學習系統根據從訓練資料中學習到的分類或者回歸函式對文件打分,打分結果即是搜尋結果。

Score(Q, D)=a×CS+b×PM+c×PR+d 

 對於某個新的查詢Q和文件D,系統首先獲得其文件D對應的3個特徵的特徵值,之後利用學習到的引數組合計算兩者得分,當得分大於設定的閾值,即可判斷文件是相關文件,否則判斷為不相關文件。 

3. PairWise Approach 

對於左、右兩張圖,按照pointwise的思想,則認為這兩條樣本 i 和 j 都被點選,因此label都是1。但在右圖包含更重要的資訊 :使用者只點了紅框內的酒店,而沒有點黃框內的酒店(右圖黃框內的酒店和左圖點選紅框的酒店一致)。這說明樣本 j 的 label應該比樣本 i 的label大(樣本 j 排名比樣本 i 更靠前),很顯然,pointwise並沒有利用到這個資訊。

對於搜尋任務來說,系統接收到使用者查詢後,返回相關文件列表,所以問題的關鍵是確定文件之間的先後順序關係。

單文件方法(PointWise Approach)完全從單個文件的分類得分角度計算,沒有考慮文件之間的順序關係。

文件對方法(PairWise Approach)則將重點轉向了對文件順序關係是否合理進行判斷。之所以被稱為文件對方法,是因為這種機器學習方法的訓練過程和訓練目標,是判斷任意兩個文件組成的文件對<Doc1,Doc2>是否滿足順序關係,即判斷是否Doc1應該排在Doc2的前面。

根據轉換後的訓練例項,就可以利用機器學習方法進行分類函式的學習: 輸入一個查詢和文件對<Doc1,Doc2>,機器學習排序能夠判斷這種順序關係是否成立,如果成立,那麼在搜尋結果中Doc1應該排在Doc2前面,否則Doc2應該排在Doc1前面。通過這種方式,就完成搜尋結果的排序任務。

  1. 文件對方法(PairWise Approach)只考慮了兩個文件對的相對先後順序,卻沒有考慮文件出現在搜尋列表中的位置。排在搜尋結果前列的文件更為重要,如果前列文件出現判斷錯誤,代價明顯高於排在後面的文件。
  2. 不同的查詢,其相關文件數量差異很大,所以轉換為只有十幾個對應的文件對,這對機器學習系統的效果評價造成困難。

4. ListWise Approach

1. 單文件方法(PointWise Approach)將訓練集裡每一個文件當做一個訓練例項。

2. 文件對方法(PairWise Approach)將同一個查詢的搜尋結果裡任意兩個文件對作為一個訓練例項。

3. 文件列表方法(ListWise Approach)與上述兩種表示方式不同,是將每一個查詢對應的所有搜尋結果列表整體作為一個訓練例項,這也是為何稱之為文件列表方法的原因。

4. 文件列表方法根據K個訓練例項(一個查詢及其對應的所有搜尋結果評分作為一個例項)訓練得到最優評分函式F。對於一個新的使用者查詢,函式F對每一個文件打分,之後按照得分順序由高到低排序,就是對應的搜尋結果。

對於某個評分函式 f 來說,對3個搜尋結果文件的相關性打分,得到3個不同的相關度得分F(A)、 F(B)和F(C),根據這3個得分就可以計算6種排列組合情況各自的概率值。不同的評分函式,其6種搜尋結果排列組合的概率分佈是不一樣的。所以可以通過不同的評分函式分佈與實際分佈比較得出最優的那個評分函式作為排序模型。如何判斷 h 和 f 與虛擬的最優評分函式 g 更接近?一般可以用兩個分佈概率之間的距離遠近來度量這種相似性,比如 KL散度等。

5. Bayesian Personalized Ranking

5.1 BPR介紹

  • 在推薦系統中,分為召回和排序兩個階段。
  • 貝葉斯個性化排序屬於Pairwise Approach。

 BPR演算法的五個核心知識點:

  • 每個⽤戶之間的偏好⾏為相互獨⽴
  • 同⼀⽤戶對不同物品的偏序,即排序關係相互獨⽴
  • 表⽰⽤戶u對 I 的偏好⼤於對 j 的偏好
  • 滿⾜完整性,反對稱性和傳遞性
  • 採用最⼤後驗估計計算引數

 其中,完整性,反對稱性和傳遞性的定義如下:

5.2 BPR引數

在推薦系統中,排序演算法通常完成對候選商品的二次篩選,也叫Reranking。這裡的BPR演算法借鑑了召回步驟中協同過濾演算法的思想: 矩陣分解 。

對於使用者u:

對於所有使用者:

其中使用者矩陣W:

物品矩陣H:

5.3 BPR引數計算方法

BPR演算法採用的是最大化後驗概率來估計引數(關於什麼是最大化後驗概率,可移步我的另外一篇文章:似然與概率的異同),因此,這裡用到了貝葉斯公式。

之前已經假設每個使用者之間的偏好行為相互獨立,同一使用者對不同物品的偏序相互獨立,所以:

δ(b)函式返回1 如果條件b成立, 否則返回0。D為訓練集, (u,i,j) 表示關係,即相對於j,使用者u更喜歡 i 。

由於滿足完整性和反對稱性,所以上式可簡化為:

其中,δ()為sigmod函式,使用者 u 相比於 j 更喜歡 i 通過藉助使用者 u 對 i 的喜歡程度與對 j 的喜歡程度的差進行度量。

因此, 可表示為:

目標是求解θ。 由於採用最大後驗估計來學習引數,所以假設θ服從正態分佈:

根據概率密度函式,求得:

關於這個等式的推導,筆者嘗試將概率分佈帶入到概率密度函式中,發現並不能推匯出來,但是由於存在正比關係,所以可以近似等於。

所以,最終的後驗概率估計函式為:

通過最大化這個函式,可以求出引數W和H。 

6. Bayesian Personalized Ranking演算法實現

網上開源的BPR程式碼有很多,這裡著重表達一下使用者embedding矩陣和物品embedding矩陣,以及損失函式的構造。其中損失函式為最小化上一小節的最大後驗概率函式。 

 7. 總結

回顧Bayesian Personalized Ranking 演算法,有以下三點值得回味:

1. θ的正態分佈(先驗)形式:

之所以這樣設計,筆者以為有兩點:一是方便取對數、二是能與正則化聯絡起來。

2. 使用者 u 相比於 j 更喜歡 i 通過藉助使用者 u 對 i 的喜歡程度與對 j 的喜歡程度的差進行度量。這當然是最直觀的表示方法,當然也可以加以改進。

3. 萬物皆可embedding !通過對使用者以及物品分別構造embedding向量,從而完成使用者對物品喜好程度的計算。

https://www.cnblogs.com/wkang/p/10217172.html

 

鄭州無痛人流哪好

鄭州哪家醫院做人流好

鄭州正規人流醫院

鄭州男科醫院