個性化推薦系統--學習排序綜述(7-1)

一、什麼是學習排序?

說起學習排序,首先介紹一下排序,排序是在搜索場景以及推薦場景中應用的最爲廣泛的。

傳統的排序方法是基於構造相關度函數,使相關度函數對於每一個文檔進行打分,得分較高的文檔,排的位置就靠前。但是,隨着相關度函數中特徵的增多,使調參變得極其的困難。所以後來便將排序這一過程引入機器學習的概念,也就變成這裏介紹的學習排序。

那麼這裏介紹的排序都是指對於單獨的文檔進行預估點擊率,將預估點擊率最大的文檔排到前面。

所以特徵的選擇與模型的訓練是至關重要的。

那麼什麼是學習排序呢?

學習排序:將個性化召回的物品候選集根據物品本身的屬性結合用戶的屬性,上下文等信息給出展現優先級的過程。

下面用一個例子進行展示:

假設這裏有一個用戶A,基於他的歷史行爲給出了召回,可能是很多種召回算法,經過合併之後得到的6個item。經過排序,最終將這6個item的優先級固定爲c、a、f、d、b、e。

得到優先級的過程就是由排序得到的。分別根據item本身的屬性,以及user當前的一些上下文和user固定的一些屬性,得到此時最佳的順序應該是將c給展示,這樣以保證最後的點擊率最高。

二、排序在個性化推薦系統中的重要作用

之前介紹過,在個性化的算法中後端的主要流程是:召回-->排序-->策略調整。

我們說過,召回決定了推薦效果的天花板,那麼排序就決定了逼近天花板的程度。

1、排序決定了最終的推薦效果

用戶看到的順序基本就是由排序這一步驟所決定的,如果用戶在前面的位置就能夠看到自己感興趣的物品,那麼用戶就會在推薦系統總停留較長的時間;反之,如果需要用戶幾次刷新之後,才能得到自己想要的物品,那麼用戶下一次將不會在信任推薦效果,導致在推薦系統中停留的時間較短。

在工業界中,排序這一部分分爲三個步驟:

(1)prerank

也就是排序之前的部分,由於排序的模型由淺層模型切換到深層模型的時候,耗時在不停的增加。比如之前召回可以允許有5000個物品去做淺層模型,比如說邏輯迴歸,就是訓練出一組參數,那麼整體的打分過程耗時很短。但是,如果當排序模型切換到深層模型,比如說DNN,那麼整體需要請求一次新的深度學習的服務,那麼這5000個item去請求的時間顯然是不能承受的。所以要先有一個粗排。這個粗排會將這5000個召回的物品進行第一次排序,將候選集縮小到一定範圍之內。這樣使排序模型的總處理時間滿足系統的性能要求。粗排往往以一些簡單的規則爲主,比如說使用後驗CTR或者說對於新的物品使用預估的CTR等等。

(2)Rank

主排序部分就是重點部分,現在業界比較流行的還有一次重排。

a. 單一的淺層模型:淺層模型是相較於深度模型而言的,淺層模型的代表有LR、FM。

這一類模型在學習排序初期是非常受歡迎的,因爲模型線上處理時間較短,所以它支持特徵的維度就會非常的高。但是也存在很多問題:比如像LR模型,需要研發者具有很強的樣本篩選以及特徵處理能力,這個包含像特徵的歸一化、離散化、特徵的組合等等。

所以,後期發展了淺層模型的組合。

b. 淺層模型的組合

這裏比較著名的是LR+GBDT等等。這一類模型不需要特徵的歸一化、離散化,能夠較強的發現特徵之間的規律,所以相較於單一的淺層模型具有一定的優勢。

c. 深度學習模型

隨着深度學習在工業界應用的不斷成熟,以及像tensorflow等深度學習框架的開源,現在工業界大部分的主排序模型都已經切換到了深度學習模型。

(3)Rerank

這個重排是將主排序的結果再放入一個類似於強化學習的一個模型裏面去進行一個重排序,這種主要是突出了用戶最近幾次行爲的特徵,將與最近幾次用戶行爲相近的item給優先的展示,以便獲取用戶行爲的連續性

由於單一item在重排模型的耗時要比主模型長很多,所以重排部分只是會影響主排序頭部的一些結果,比如說top 50 的結果去進行一個重排。那麼既然是這樣的話,可以看到,最能影響結果的還是主排序模型。

三、工業界推薦系統中排序架構解析

工業界中排序是如何落地的。

算法的後端主流程是:召回之後排序。

召回完item之後,我們將item集合傳給排序部分,排序部分會調用打分框架,得到每一個item在當前上下文下,對當前user的一個得分,進而根據得分決定展現順序。

下面看一下打分框架內部的構成:

首先會將每一個item以及user去提取特徵,注意這裏提取的特徵要與離線訓練模型的特徵保持一致。提取完特徵之後,我們向排序服務發出請求,排序服務會返回給我們一個得分,推薦引擎會基於此得分完成排序。經過簡單的策略調整之後,展現給用戶。

這裏需要特別注意的是,排序服務與離線訓練好的排序模型之間的通信

如果是單一的淺層模型,像LR,那麼可以直接將訓練好的模型參數存入內存。當排序服務需要對外提供服務的時候,直接加載內存中模型的參數即可。像FM以及GBDT等等,我們只需要離線訓練好模型,將模型實例化到硬盤當中。在在線服務當中,由於這些模型都有相應的庫函數,他們提供了模型的加載以及模型對外預測等一系列接口,所以便可以完成打分。

但是,對於像深度學習的話,我們在訓練完成之後,我們還需要提供一個深度學習的服務供排序服務調用

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章