首頁>科技>

引言

資訊時代到來以後,我們被各種各樣海量的資訊所淹沒,從新聞、廣告、電商、直播、短影片等各種涉及這些場景的APP中,大量個性化的資訊被推送到我們眼前。例如在使用得物APP購物的過程中,我們也常常會聽到這樣的問題,為什麼會給我推這雙鞋/這件衣服?為什麼瀏覽收藏過的商品反覆出現在推薦流中?推薦流是怎麼猜測我的喜好的?推薦的排序邏輯是怎樣的,都考慮了哪些因素?能不能主動增加某些類目的曝光量?這些種種的問題,都和我們的排序模型、排序邏輯有關,下面就讓我們來聊聊推薦系統中是如何對商品做排序的。

圖1. 得物APP首頁推薦瀑布流

推薦系統

首先來簡單說一下推薦系統的基本架構,借用youtube論文中的一張圖片來說明。推薦系統的核心目標是從我們的總商品庫中,為使用者挑選出他最感興趣的一部分商品,從而節省使用者時間,也提高平臺的轉化效率,為交易的順利進行提供助力。除開一些工程實現部分的細節,整個過程可以大致分為兩個階段,即召回(candidate generation)和排序(ranking),其中召回的任務是從海量商品中選取部分使用者“大機率”感興趣的商品集,而排序則負責將召回選出來的這部分商品仔細分析,按照使用者可能感興趣的程度(probability),從高到低進行排序,展示給使用者觀看,整個過程在毫秒級的時間內完成。

圖2. 引用自論文:Deep Neural Networks for YouTube Recommendations

召回層面的策略和邏輯有很多,也演化了很長一段時間,不過這不是我們今天聊的重點,我們來詳細聊聊,當我們拿到了召回結果,大概在一萬件以內的規模下,模型是怎樣確定他們的先後順序的,機器怎樣自動化地計算出分數來評估使用者對他們的感興趣程度的。

排序模型的發展也有很長一段時間了,從網際網路逐漸興起開始,為使用者快速篩選出有價值的資訊一直是一件非常核心的事。我們不妨來看看,為了完成這項任務,都經歷了哪些演變過程。

先看一個簡單例子,一位女性使用者來到我們平臺,我們可以拿到的資訊有她的性別、訪問時間、行為歷史記錄等,假設她之前逛了逛衣服,收藏了一雙鞋,最近又在瀏覽吹風機,而我們的召回候選集中又恰好有衣服、鞋和吹風機,我們應該怎樣來定義排序的邏輯呢?

規則學習

解決問題的第一階段,往往是依賴於直覺的,直覺告訴我們,每一個和使用者或者是商品有關的資訊,都會影響到使用者的決策,這之中又必然存在著一定的數量關係,排序便有了最初的思路:人工規則。顧名思義,就是根據平臺運營人員對業務的熟悉程度,來直接定義物品的先後順序,例如平臺最近某件衣服是爆款,賣得很好,所以要排在前面,儘可能讓顧客看到,考慮到個性化因素,這位又是女性使用者,那麼就把最近所有女性使用者購買的商品做一個統計,按照銷量從高到低排序,或者更近一步,某個地區的女性使用者,最近收藏過鞋子的某地區的女性使用者….只要劃分使用者特定維度後的資料流足夠多,規則足夠明確,最終所有商品對一個具體使用者都會有一個排序結果,一個粗糙的推薦排序策略也就成型了。

那麼以上策略是否就是我們的排序方案呢?顯然並不是的。以上方案有兩個不太合理的地方:

人工的策略會因人而異,很難有一個統一的標準,而且幾乎不可能把所有資訊整合在一起利用起來。最佳化的目標模糊,依賴於線上實踐結果來評價好壞,總體而言大家都是為了讓平臺更好,但是每一個具體的策略,到底是最佳化點選率還是轉化率還是使用者的停留時長、下拉深度,很難在給出規則時對結果有一個預期,線上實驗的成本很高,而且方案的迭代週期可能是無限長的(人總能想到各種不同的規則組合)。

有沒有一個方案能整合利用所有能拿到的資訊,並且在上線前對結果有一個合理預期,甚至不需要上線實驗,離線就能評估策略的好壞呢?這個時候,機器學習方法出現在了我們眼前。

機器學習

解決問題的第二階段,就是在直覺的基礎上引入可量化的模型。模型是一個比較抽象的詞,在這裡它指的是對一種對映的抽象描述,即 f(context,user,item)—> score,任何能用具體公式提供這個分數計算邏輯的方案,都可以叫做模型。衡量一個模型好壞的標準,就是這個假設出來的對映關係與現實中真實的內在關係的距離。比如個子越高,體重就越大,就是一個根據身高資訊去對映體重資訊的線型模型,這個模型顯然是不嚴謹的,但在很多時候也是成立的。說回我們的排序模型,我們需要設計一個方案,從使用者、商品和上下文資訊(事件發生的時間、場景等客觀資訊)中,提煉出使用者對商品的偏好程度。

一個能同時整合所有資訊,在形式上足夠簡單,在工業界的大資料和高併發下又擁有足夠穩定性的模型,早就已經被數學所給出,那就是著名的邏輯迴歸模型,形式如下:

圖3. 邏輯迴歸函式影象

這個模型的形式雖然簡單,但思想足夠深刻,裡面整合了數學界在引數估計、資訊理論和凸最佳化等方向的研究成果,將變數用線性的方式結合起來,把定義在(-∞,+∞)的自變數對映到(0,1)的值域上,這裡的(0,1)之間的分數可以理解為使用者感興趣的機率,整個過程便成了一個點選率預估問題。當我們用線上實時收集到的使用者行為資料作為基礎,把使用者的點選行為轉化為0或1的訓練目標,便可以用很成熟的數學方案快速地求出公式中的所有最最佳化引數w,從而確定下最終的計算過程。雖然邏輯迴歸模型在學術界已經是基礎中的基礎,但由於其穩定性和極高的計算效率,工業界也依然有很多業務場景中使用這套模型作為線上服務的主要擔當或者降級備用方案。

除了邏輯迴歸以外,還有許多機器學習的模型被應用在排序環節中如NB, SVM和GBDT等,其中比較成功的模型是GBDT,這裡面又以陳天奇博士提出的XGBoost模型最為著名,在工業界也有廣泛的應用。GBDT模型是以決策樹模型為基礎提出的組合模型,樹模型的特點是更加符合我們人對事物的判斷方式,大概的思想類似下圖:

圖4. 樹模型決策思路簡述

剛才提到的GBDT模型就是將以上這種決策行為給定量化,並且使用多棵決策樹進行組合決策的結果,相比於邏輯迴歸模型,它提出了一個更符合人類直覺的視角,將排序問題拆解為對若干特徵的而二分類組合,將各種使用者和商品特徵在決策過程中進行了交叉,實踐中效果往往是更優的,這也符合我們提到的“模型是對真實決策關係的模擬”這一觀點。但是樹模型也有它的不足,比如它最佳化效能較低,對大資料量的計算效能較差,對增量訓練的支援度較差等等。

總的來說,無論是邏輯迴歸還是GBDT模型,都是機器學習在推薦領域很好的實踐和探索,他們各自都還存在一些明顯的不足,業界針對這些不足的地方也都有各種補充和最佳化的方案,經過幾年的迭代,伴隨著理論和硬體條件雙重發展的基礎上,推薦系統迎來了它的深度學習時代。

深度學習

解決問題的第三階段,是在成熟的工業界方案基礎上,加入自己對具體業務場景的理解。邏輯迴歸公式簡潔,效能可靠,GBDT思路清晰,效果出色,但他們是否就是問題的最終解決方案呢?顯然還是不夠的,如上面提到的,他們各自都還有不少的問題需要解決:

邏輯迴歸對特徵間關係的刻畫過於簡單,對特徵僅僅做了線性組合,與現實中大量的非線性關係的存在是違背的,比如女性、上海、數碼產品這幾個特徵的簡單加減法來描述使用者購買傾向,與我們的認知不符,這三個特徵和購買意願的關係,更有可能是非線性的,而GBDT在處理特徵組合時使用的方式也比較單一,難以刻畫更為複雜的組合關係。資料的排序邏輯過於單一,都是以點選率作為目標,單一目標的問題在於,很容易導致結果缺乏多樣性,使用者此刻想看數碼產品,並不意味著滿屏的推薦都應該變成數碼產品,這可能反而會降低使用者體驗。

從解決這兩個問題出發,我們的思路又細分到了兩個方向上,分別是拓寬模型的複雜度和多目標下的後排序干預。

第一個問題是拓寬模型的複雜度,在具體操作中可以分為兩個方面的工作,第一個方面,是在特徵組合上儘可能提供複雜的特徵,比如我們例子中,本身模型輸入的資訊是性別、地區、使用者行為、商品屬性,但是我們可以人工定義一些其他的複雜特徵,比如使用者是否購買過同類商品,使用者對同品牌商品的點選次數等,透過增加特徵的複雜度,來增加模型輸入的資訊量,把一些非線性的關係轉化到線性模型上來解決,這樣做的好處是有效節省了計算資源,也減輕了線上推斷所帶來的壓力,對效果提升也很有幫助;不過弊端也是明顯的,那就是整體思路又回到了我們一開始人工規則的老路上,依賴於人的經驗來做最佳化,不過這裡的人由平臺運營換成了演算法工程師。所以能不能把拓寬非線性關係的工作也交給機器來完成呢?這便是第二個方面,引入深度學習的模型。

圖5. Google提出的模型的Wide&Deep模型架構

深度學習在如今的工業界早已是大名鼎鼎,從2016年起,在谷歌的W&D模型的影響下,工業界的推薦系統開始紛紛效仿,大踏步地邁進了深度學習所統治的時代,如今各大廠的主流推薦模型,都是在深度學習的基礎上做的開發,關於深度學習的理論知識,相關講解有很多,這裡就不詳細展開。對於推薦系統來說,深度學習所解決的核心問題,就是特徵間非線性關係的自動化挖掘。這裡面的邏輯,可以說是一個“用魔法來打敗魔法”的過程。我對這個問題的理解是這樣的,特徵間正確的組合方式是存在的,只是組合成幾何級增長,遍歷嘗試的操作代價難以承受,這便是第一重“魔法”;而深度學習從理論上證明,只要給定入參和目標,它可以擬合任意複雜的函式,但是最終你也不會知道擬合出來的函式具體形式是怎樣的(可解釋性目前為止也是學術界的一個很重要的方向),這便是第二重“魔法”;一邊是你無法遍歷的組合結果,另一邊是你無法解釋的組合結果,但最終產出了符合你預期的業務效果,所以我稱之為一個用魔法去打敗魔法的過程,這也是業內深度學習演算法工程師又被戲稱為“煉丹工程師”的原因,很多時候工程師對於模型的具體作用原理也是難以解釋的,唯一知道的,就是它是否“有效”。

圖6.阿里巴巴提出的ESMM多目標網路

圖7.阿里巴巴提出的重排序網路

關於邏輯迴歸的第二個問題,多目標和多樣性,就不能簡單透過拓寬模型複雜度來解決了。多目標最佳化和後排序干預也是現在推薦排序側很重要的邏輯,由於深度學習這個魔法特別好用,所以業界也產出了很多相關的理論模型,比如阿里的ESMM和Re-ranking模型。不過由於後排序這塊是直接影響到使用者最終體驗的,不可解釋的魔法結果在目前的實用性和可控性上還是比不上能夠靈活調整的規則,因此在模型排序的結果環節,又加入了一些人工規則,比如類目打散、品牌打散和曝光過濾等,來滿足一些主觀需求。最終的排序流程,還是一個計算機模型和人工規則互相輔助來實現的。

總結

以上便是推薦系統的大體排序邏輯,以後的模型還會越來越多,也未必都會侷限在深度學習的領域,整個業界也還在探尋什麼樣的模型能以最小的代價刻畫出人與物的協同關係,這個問題很可能沒有一個標準答案,需要演算法工程師根據具體的業務場景和業務特點去構造和處理排序的問題。最終的排序結果是在訓練資料、特徵選擇、模型結構和後排序邏輯的共同干預作用下決定的,資料會是排序邏輯的核心,而不是人工主觀意識在駕馭和操縱的。雖然小的細節還在不斷地調整和改變,但是大的方向一定是以更復雜的特徵、更合理的模型結構、更高效的迭代方式,更靈活的規則調整來實現更好的業務指標。

15
最新評論
  • 整治雙十一購物亂象,國家再次出手!該跟這些套路說再見了
  • 中興欲要重回巔峰?就拍照來說,能和華為正面剛一波嗎?