當新用戶或新項目進入內容平臺時,就會出現冷啓動(Cold Start)問題。前端
以協同過濾這樣的經典推薦系統爲例,假設每一個用戶或項目都有評級,這樣咱們就能夠推斷出相似用戶/項目的評級,即便這些評級沒辦法調用。可是,對於新進入的用戶/項目,實現這一點很困難,由於咱們沒有相關的瀏覽、點擊或下載等數據,也就沒辦法使用矩陣分解技術來「填補空白」。算法
不過,研究人員已經提出了各類方法來解決冷啓動問題。在這篇文章中,咱們會簡單介紹一些解決推薦系統中冷啓動問題的方法,至於這些方法在實踐工做中是否奏效,尚無定論。數據庫
•基於表明性:使用有表明性的項目和用戶子集;微信
•基於內容:使用諸如文本、社交網絡等的輔助信息;網絡
•老虎機:考慮新項目中的EE問題(Exploration&Exploitation);運維
•深度學習:使用黑盒子。機器學習
基於表明性ide
若是沒有足夠的用戶和項目信息,咱們能夠更多地依賴那些可以「表明」項目和用戶的用戶。這就是基於表明性的方法背後的哲學。函數
表明性用戶的興趣偏好線性組合能與其餘用戶的無限接近。例如,基於表明性的矩陣因子分解(RBMF,Representative Based Matrix Factorization),實際上是矩陣因子分解方法的擴展,其附加約束條件是m個項應該由k個項的線性組合表示,以下面的目標函數所示:post
有了這個附加約束條件,就有了相似於標準MF方法的重建偏差。當新用戶進入平臺時,要求新用戶對這k個項進行評級,並用它來推斷其餘m-k項的評級。這種方法經過讓用戶對某些項目進行額外評級,從而改進對新用戶的推薦。通過改進的RBMF只須要一部分新用戶對這些項目評級,而不是全部的新用戶。
優勢
•用少數表明性用戶來表達新用戶,更具可解釋性;
•是MF的簡單擴展。
缺點
•須要改進UI和前端邏輯,以要求用戶對錶明項進行評級。
基於內容
在推薦系統中還有許多未充分利用的輔助信息。
近年來,電子商務和社交網絡之間的界限愈來愈模糊。許多電子商務網站支持社交登陸機制,用戶可使用他們的社交網絡帳號登陸,例如微信、微博、QQ賬戶。用戶還能夠在微博上直接分享他們購買的新產品,其中包含指向產品網頁的連接。
那如何在CF方法中處理這些內容呢?經典的CF方法以重建偏差爲目標,基本上是矩陣填充,從而很難利用這些輔助信息。所以,研究人員提出了將矩陣重建目標和基於內容的目標相結合的混合方法。這些方法並不是特定的冷啓動,感興趣的讀者能夠進一步探討。
優勢
•能夠包含各類內容信息;
•是MF的簡單擴展。
缺點
•經過深層方法解決,具備不一樣的缺點,目標函數變得雜亂無章。
•出現大量的功能工程,須要考慮是否在數據庫中插入用戶/項目功能。
老虎機問題(Bandit)
冷啓動問題能夠從新定義並轉換爲老虎機問題。什麼是老虎機(Bandit)問題?一個典型的例子以下:
一個賭徒,要去搖老虎機,走進賭場一看,一排老虎機,外表如出一轍,可是每一個老虎機吐錢的機率可不同,他不知道每一個老虎機吐錢的機率分佈是什麼,那麼每次該選擇哪一個老虎機才能夠作到收益最大化呢?
老虎機問題和冷啓動問題又有什麼關係呢?咱們能夠這樣類比:以電子商務平臺爲例,天天有k個新物品進入平臺,咱們能夠把這k個項看做是具備不一樣回報(收入、利潤)的老虎機。但因爲它們是新產品,所以無權訪問購買它們的用戶數量。推薦哪些項目就像選擇要用哪臺老虎機同樣。
在老虎機問題上,咱們會很是關心EE (exploration vs exploitation)問題。若是發現一個銷量很是好的新商品,咱們但願向用的展現的次數也更多(Exploitation);但與此同時,咱們還想展現其餘沒有展現過的東西,由於它們有可能比已經展現過的商品(Exploration)更受歡迎。
解決老虎機問題有不少方法:
•Epsilon-Greedy算法:這是最簡單的一種,選一個(0,1)之間較小的數做爲epsilon;每次以機率epsilon作一件事:全部臂中隨機選一個;每次以機率1-epsilon 選擇截止到當前,平均收益最大的那個臂。epsilon的值能夠控制對Exploit和Explore的偏好程度。越接近0,越保守,只想花錢不想掙錢。
•UCB算法:UCB算法全稱是Upper Confidence Bound(置信區間上界),它的算法步驟以下:
初始化:先對每個臂都試一遍;
按照以下公式計算每一個臂的分數,而後選擇分數最大的臂做爲選擇:
觀察選擇結果,更新t和Tjt。其中加號前面是這個臂到目前的收益均值,後面的叫作bonus,本質上是均值的標準差,t是目前的試驗次數,Tjt是這個臂被試次數。
這個公式反映一個特色:均值越大,標準差越小,被選中的機率會愈來愈大,同時哪些被選次數較少的臂也會獲得試驗機會。
•Thompson sampling算法:這種算法簡單實用,由於它只要一行代碼就能夠實現。簡單介紹一下它的原理,要點以下:
每一個臂是否產生收益,其背後有一個機率分佈,產生收益的機率爲p。
咱們不斷地試驗,去估計出一個置信度較高的「機率p的機率分佈」就能近似解決這個問題了。
怎麼能估計「機率p的機率分佈」呢? 答案是假設機率p的機率分佈符合beta(wins, lose)分佈,它有兩個參數: wins, lose。
每一個臂都維護一個beta分佈的參數。每次試驗後,選中一個臂,搖一下,有收益則該臂的wins增長1,不然該臂的lose增長1。
每次選擇臂的方式是:用每一個臂現有的beta分佈產生一個隨機數b,選擇全部臂產生的隨機數中最大的那個臂去搖。
上下文老虎機問題
上下文老虎機問題是老虎機問題的通常化,更接近現實世界的狀況。惟一的區別是,除了動做(例如,要顯示的項目)和獎勵(例如銷售)以外,還有上下文(例如項目描述、圖片、用戶點擊的次數)。經過利用這些上下文,咱們能夠更好地估計獎勵。例如,在上面的UCB中,咱們能夠向獎勵函數添加上下文特徵的線性組合。在TS中,咱們可使似然函數除了取決於獎勵和行動以外,還取決於上下文。
優勢
•易於實現:與複雜的機器學習方法相比,簡單的Bandit算法很是容易實現;
•良好的理論保證:因爲其簡單性,已經對平均狀況和最壞狀況的獎勵進行了大量的理論分析。
缺點
•太過簡單?
深度學習
這裏把深度學習視爲解決冷啓動問題的一大類,但其實使用深度學習的方式很是多樣化,如下只是其中的一些方法:
DropoutNet:
基本思路很簡單,但頗有效果。具體方法是,在訓練基於深度學習的推薦系統(如多層的協同過濾)時,咱們能夠隨機捨去某些項目和用戶的評級,使其對新項目具備魯棒性。與神經網絡訓練中的標準dropout相反,神經網絡訓練會捨去特徵,而DropoutNet會捨去節點。這樣作能夠減小神經網絡對某些評級的依賴,更廣泛地適用於評級較少的項目/用戶。這種方法的優點是能夠與任何基於神經網絡的推薦系統一塊兒使用,同時還適用於用戶和物品的冷啓動。
基於會話的RNN:
這種方法試圖把每一個用戶會話反饋到RNN中,具體來講,它訓練了GRU (Gated Recurrent Unit)的變體,其中輸入是會話的當前狀態,輸出是會話中下一個事件的項目。在只有少數用戶會話可用的小型電子商務網站中,這種方法頗有用。
優勢
•若是可以找到適合當前目的的特定域的模型,則有可能顯著提升推薦性能。
缺點
•實施和調整模型花費時間;
•部署深層模型可能須要更多時間,具體狀況取決於當前的堆棧;
•具體效果沒法保證。
原文連接:Tackling the Cold Start Problem in Recommender Systems
以上內容由第四範式先薦編譯,僅用於學習、交流,版權歸原做者全部。
相關閱讀:
如欲瞭解更多,歡迎搜索並關注先薦微信公衆號(ID:dsfsxj)。
本帳號爲第四範式智能推薦產品先薦的官方帳號。帳號立足於計算機領域,特別是人工智能相關的前沿研究,旨在把更多與人工智能相關的知識分享給公衆,從專業的角度促進公衆對人工智能的理解;同時也但願爲人工智能相關人員提供一個討論、交流、學習的開放平臺,從而早日讓每一個人都享受到人工智能創造的價值。