信息時代到來之後,咱們被各類各樣海量的信息所淹沒,重新聞、廣告、電商、直播、短視頻等各類涉及這些場景的APP中,大量個性化的信息被推送到咱們眼前。例如在使用得物APP購物的過程當中,咱們也經常會聽到這樣的問題,爲何會給我推這雙鞋/這件衣服?爲何瀏覽收藏過的商品反覆出如今推薦流中?推薦流是怎麼猜想個人喜愛的?推薦的排序邏輯是怎樣的,都考慮了哪些因素?能不能主動增長某些類目的曝光量?這些種種的問題,都和咱們的排序模型、排序邏輯有關,下面就讓咱們來聊聊推薦系統中是如何對商品作排序的。算法
圖1. 得物APP首頁推薦瀑布流網絡
首先來簡單說一下推薦系統的基本架構,借用youtube論文中的一張圖片來講明。推薦系統的核心目標是從咱們的總商品庫中,爲用戶挑選出他最感興趣的一部分商品,從而節省用戶時間,也提升平臺的轉化效率,爲交易的順利進行提供助力。除開一些工程實現部分的細節,整個過程能夠大體分爲兩個階段,即召回(candidate generation)和排序(ranking),其中召回的任務是從海量商品中選取部分用戶「大機率」感興趣的商品集,而排序則負責將召回選出來的這部分商品仔細分析,按照用戶可能感興趣的程度(probability),從高到低進行排序,展現給用戶觀看,整個過程在毫秒級的時間內完成。架構
圖2. 引用自論文:Deep Neural Networks for YouTube Recommendations併發
召回層面的策略和邏輯有不少,也演化了很長一段時間,不過這不是咱們今天聊的重點,咱們來詳細聊聊,當咱們拿到了召回結果,大概在一萬件之內的規模下,模型是怎樣肯定他們的前後順序的,機器怎樣自動化地計算出分數來評估用戶對他們的感興趣程度的。app
排序模型的發展也有很長一段時間了,從互聯網逐漸興起開始,爲用戶快速篩選出有價值的信息一直是一件很是核心的事。咱們不妨來看看,爲了完成這項任務,都經歷了哪些演變過程。機器學習
先看一個簡單例子,一位女性用戶來到咱們平臺,咱們能夠拿到的信息有她的性別、訪問時間、行爲歷史記錄等,假設她以前逛了逛衣服,收藏了一雙鞋,最近又在瀏覽吹風機,而咱們的召回候選集中又剛好有衣服、鞋和吹風機,咱們應該怎樣來定義排序的邏輯呢?ide
解決問題的第一階段,每每是依賴於直覺的,直覺告訴咱們,每個和用戶或者是商品有關的信息,都會影響到用戶的決策,這之中又必然存在着必定的數量關係,排序便有了最初的思路:人工規則。顧名思義,就是根據平臺運營人員對業務的熟悉程度,來直接定義物品的前後順序,例如平臺最近某件衣服是爆款,賣的很好,因此要排在前面,儘量讓顧客看到,考慮到個性化因素,這位又是女性用戶,那麼就把最近全部女性用戶購買的商品作一個統計,按照銷量從高到低排序,或者更近一步,某個地區的女性用戶,最近收藏過鞋子的某地區的女性用戶….只要劃分用戶特定維度後的數據流足夠多,規則足夠明確,最終全部商品對一個具體用戶都會有一個排序結果,一個粗糙的推薦排序策略也就成型了。函數
那麼以上策略是否就是咱們的排序方案呢?顯然並非的。以上方案有兩個不太合理的地方:高併發
有沒有一個方案能整合利用全部能拿到的信息,而且在上線前對結果有一個合理預期,甚至不須要上線實驗,離線就能評估策略的好壞呢?這個時候,機器學習方法出如今了咱們眼前。post
解決問題的第二階段,就是在直覺的基礎上引入可量化的模型。模型是一個比較抽象的詞,在這裏它指的是對一種映射的抽象描述,即 f(context,user,item)—> score,任何能用具體公式提供這個分數計算邏輯的方案,均可以叫作模型。衡量一個模型好壞的標準,就是這個假設出來的映射關係與現實中真實的內在關係的距離。好比個子越高,體重就越大,就是一個根據身高信息去映射體重信息的線型模型,這個模型顯然是不嚴謹的,但在不少時候也是成立的。說回咱們的排序模型,咱們須要設計一個方案,從用戶、商品和上下文信息(事件發生的時間、場景等客觀信息)中,提煉出用戶對商品的偏好程度。
一個能同時整合全部信息,在形式上足夠簡單,在工業界的大數據和高併發下又擁有足夠穩定性的模型,早就已經被數學所給出,那就是著名的邏輯迴歸模型,形式以下:
圖3. 邏輯迴歸函數圖像
這個模型的形式雖然簡單,但思想足夠深入,裏面整合了數學界在參數估計、信息論和凸優化等方向的研究成果,將變量用線性的方式結合起來,把定義在(-∞,+∞)的自變量映射到(0,1)的值域上,這裏的(0,1)之間的分數能夠理解爲用戶感興趣的機率,整個過程便成了一個點擊率預估問題。當咱們用線上實時收集到的用戶行爲數據做爲基礎,把用戶的點擊行爲轉化爲0或1的訓練目標,即可以用很成熟的數學方案快速地求出公式中的全部最優化參數w,從而肯定下最終的計算過程。雖然邏輯迴歸模型在學術界已是基礎中的基礎,但因爲其穩定性和極高的計算效率,工業界也依然有不少業務場景中使用這套模型做爲線上服務的主要擔當或者降級備用方案。
除了邏輯迴歸之外,還有許多機器學習的模型被應用在排序環節中如NB, SVM和GBDT等,其中比較成功的模型是GBDT,這裏面又以陳天奇博士提出的XGBoost模型最爲著名,在工業界也有普遍的應用。GBDT模型是以決策樹模型爲基礎提出的組合模型,樹模型的特色是更加符合咱們人對事物的判斷方式,大概的思想相似下圖:
圖4. 樹模型決策思路簡述
剛纔提到的GBDT模型就是將以上這種決策行爲給定量化,而且使用多棵決策樹進行組合決策的結果,相比於邏輯迴歸模型,它提出了一個更符合人類直覺的視角,將排序問題拆解爲對若干特徵的而二分類組合,將各類用戶和商品特徵在決策過程當中進行了交叉,實踐中效果每每是更優的,這也符合咱們提到的「模型是對真實決策關係的模擬」這一觀點。可是樹模型也有它的不足,好比它優化性能較低,對大數據量的計算性能較差,對增量訓練的支持度較差等等。
總的來講,不管是邏輯迴歸仍是GBDT模型,都是機器學習在推薦領域很好的實踐和探索,他們各自都還存在一些明顯的不足,業界針對這些不足的地方也都有各類補充和優化的方案,通過幾年的迭代,伴隨着理論和硬件條件雙重發展的基礎上,推薦系統迎來了它的深度學習時代。
解決問題的第三階段,是在成熟的工業界方案基礎上,加入本身對具體業務場景的理解。邏輯迴歸公式簡潔,性能可靠,GBDT思路清晰,效果出色,但他們是否就是問題的最終解決方案呢?顯然仍是不夠的,如上面提到的,他們各自都還有很多的問題須要解決:
從解決這兩個問題出發,咱們的思路又細分到了兩個方向上,分別是拓寬模型的複雜度和多目標下的後排序干預。
第一個問題是拓寬模型的複雜度,在具體操做中能夠分爲兩個方面的工做,第一個方面,是在特徵組合上儘量提供複雜的特徵,好比咱們例子中,自己模型輸入的信息是性別、地區、用戶行爲、商品屬性,可是咱們能夠人工定義一些其餘的複雜特徵,好比用戶是否購買過同類商品,用戶對同品牌商品的點擊次數等,經過增長特徵的複雜度,來增長模型輸入的信息量,把一些非線性的關係轉化到線性模型上來解決,這樣作的好處是有效節省了計算資源,也減輕了線上推斷所帶來的壓力,對效果提高也頗有幫助;不過弊端也是明顯的,那就是總體思路又回到了咱們一開始人工規則的老路上,依賴於人的經驗來作優化,不過這裏的人由平臺運營換成了算法工程師。因此能不能把拓寬非線性關係的工做也交給機器來完成呢?這即是第二個方面,引入深度學習的模型。
圖5. Google提出的模型的Wide&Deep模型架構
深度學習在現在的工業界早已經是大名鼎鼎,從2016年起,在谷歌的W&D模型的影響下,工業界的推薦系統開始紛紛效仿,大踏步地邁進了深度學習所統治的時代,現在各大廠的主流推薦模型,都是在深度學習的基礎上作的開發,關於深度學習的理論知識,相關講解有不少,這裏就不詳細展開。對於推薦系統來講,深度學習所解決的核心問題,就是特徵間非線性關係的自動化挖掘。這裏面的邏輯,能夠說是一個「用魔法來戰勝魔法」的過程。我對這個問題的理解是這樣的,特徵間正確的組合方式是存在的,只是組合成幾何級增加,遍歷嘗試的操做代價難以承受,這即是第一重「魔法」;而深度學習從理論上證實,只要給定入參和目標,它能夠擬合任意複雜的函數,可是最終你也不會知道擬合出來的函數具體形式是怎樣的(可解釋性目前爲止也是學術界的一個很重要的方向),這即是第二重「魔法」;一邊是你沒法遍歷的組合結果,另外一邊是你沒法解釋的組合結果,但最終產出了符合你預期的業務效果,因此我稱之爲一個用魔法去戰勝魔法的過程,這也是業內深度學習算法工程師又被戲稱爲「煉丹工程師」的緣由,不少時候工程師對於模型的具體做用原理也是難以解釋的,惟一知道的,就是它是否「有效」。
圖6.阿里巴巴提出的ESMM多目標網絡
圖7.阿里巴巴提出的重排序網絡
關於邏輯迴歸的第二個問題,多目標和多樣性,就不能簡單經過拓寬模型複雜度來解決了。多目標優化和後排序干預也是如今推薦排序側很重要的邏輯,因爲深度學習這個魔法特別好用,因此業界也產出了不少相關的理論模型,好比阿里的ESMM和Re-ranking模型。不過因爲後排序這塊是直接影響到用戶最終體驗的,不可解釋的魔法結果在目前的實用性和可控性上仍是比不上可以靈活調整的規則,所以在模型排序的結果環節,又加入了一些人工規則,好比類目打散、品牌打散和曝光過濾等,來知足一些主觀需求。最終的排序流程,仍是一個計算機模型和人工規則互相扶助來實現的。
以上即是推薦系統的大致排序邏輯,之後的模型還會愈來愈多,也未必都會侷限在深度學習的領域,整個業界也還在探尋什麼樣的模型能以最小的代價刻畫出人與物的協同關係,這個問題極可能沒有一個標準答案,須要算法工程師根據具體的業務場景和業務特色去構造和處理排序的問題。最終的排序結果是在訓練數據、特徵選擇、模型結構和後排序邏輯的共同干預做用下決定的,數據會是排序邏輯的核心,而不是人工主觀意識在駕馭和操縱的。雖然小的細節還在不斷地調整和改變,可是大的方向必定是以更復雜的特徵、更合理的模型結構、更高效的迭代方式,更靈活的規則調整來實現更好的業務指標。
[1] Covington, Paul, Jay Adams, and Emre Sargin. "Deep neural networks for youtube recommendations." Proceedings of the 10th ACM conference on recommender systems. 2016.
[2] Cheng, Heng-Tze, et al. "Wide & deep learning for recommender systems." Proceedings of the 1st workshop on deep learning for recommender systems. 2016.
[3] Ma, Xiao, et al. "Entire space multi-task model: An effective approach for estimating post-click conversion rate." The 41st International ACM SIGIR Conference on Research & Development in Information Retrieval. 2018.
[4] Pei, Changhua, et al. "Personalized re-ranking for recommendation." Proceedings of the 13th ACM Conference on Recommender Systems. 2019.
[5] Chen, Tianqi, and Carlos Guestrin. "Xgboost: A scalable tree boosting system." Proceedings of the 22nd acm sigkdd international conference on knowledge discovery and data mining. 2016.
文|John關注得物技術,攜手走向技術的雲端