Pinterest暴力版人工智慧個性化推薦系統
先八卦一下系統的主負責人,人工智慧界男神小哥Jure Leskovec,來自斯洛維尼亞的天才少年。
首先,這小哥長得標誌水靈,堪稱人工智慧界小鮮肉,足以迷倒萬千少女:
小哥不僅僅顏值逆天,而且智商開掛,而且有著讓人瞠目結舌的執行力,真是人比人氣死人:
- 04年CMU開始讀博。
- 讀博期間個人每年可以扛出14到15篇頂級期刊的文章,總引用量過三萬。這意味著平均每個月至少得出一篇文章,簡直不可思議。
- 在出文章之餘,小哥讀博期間還碼出用於網路分析和圖形挖掘的SNAP開源包。
- 09年博士還沒畢業,斯坦福計算機系就向小哥伸出了助理教授的橄欖枝。小哥去了斯坦福後,發文章變成了團隊作戰,效率更上一層樓,讓人瞠目結舌。15年順利升副教授。
- 14年小哥創辦AI公司Kosei,15年一月公司就被Pinterest重金收購。從此小哥擔任Pinterest首席科學家至今。
10年間,小哥發過山一樣多的文章,寫過開源軟體,拿到了斯坦福終身教職,創辦了公司並全身而退,成為獨角獸公司的首席科學家。小哥很好地詮釋了什麼叫做人與人之間的確是存在先天差異的,後天的努力並不能彌補這種差異,千萬不要強行對比,省得內傷。
言歸正傳,我們來介紹Pixie系統,這是Pinterest用來做智能推薦的。Pinterest有1.5億用戶,上面有好幾十億不同的內容。那麼,該給每個用戶推薦什麼樣子的內容,他們才會更加感興趣呢?這就是Pixie系統的目標,這套系統號稱可以在60毫秒內響應百分之99的實時推薦請求。他是怎麼做到的呢?
如此快的實時響應時間,分散式系統其實很難實現。Pixie的主要想法是利用超大型內存來做圖形挖掘。
內容和用戶的關係其實可以用一個二分圖來表示。比如在上圖中,Pins代表內容,Boards指的是用戶自己的頁面。一條從Pins到Boards的邊,則代表某個用戶將一個內容收藏到了自己的頁面中。在Pinterest,這個二分圖非常大,想像一下,它包含了幾十億的節點和一千多億條邊,包含了海量的信息。
在以前,這麼大的圖是不可能存儲在一台機器上的,因此我們必須要借用分散式數據挖掘系統,比如說Hadoop或者Spark。但這種分散式系統的問題在於它們雖然能處理海量的數據,但是跑起來很慢,沒有辦法做實時的分析。比如,我們只能把昨天的數據在Hadoop或者Spark上跑出來的結果提供給用戶。弊端很明顯,今天產生的新內容怎麼辦?不好意思,等到明天才有可能看到。
Pixie系統很暴力的用TB級別內存的AWS機器解決了這個實時推薦的問題。很簡單,以前內存很貴,一個機器有個幾G的內存了不得了。但現在,輕鬆可以搭起1000多G的內存。所以Pixie把整個二分圖(一千多億條邊)存進了內存。通過對二分圖進行遍歷計算各個節點的PageRank從而得到推薦結果。這樣子的話,系統可以實時讀取用戶收藏和發布的內容對內存里的二分圖進行更新,並等用戶的請求來了之後再開始遍歷二分圖做推薦。暴力出奇蹟,實時推薦不再是夢。
計算PageRank有很多方法,Pixie採用的是偏隨機遊走。當然了,不可能每個請求來的時候都把整個圖遍歷一次。Pixie遍歷的時候只從已知相關的節點出發,而且只會遍歷離相關節點最近的一部分圖。重複遍歷到的節點被推薦的權重更大。比如說,某用戶剛剛保存了以下三張圖片:
這三張圖片被發給了Pixie系統。Pixie從這三個節點出發隨機遊走一部分網路之後,將遊走路徑彼此覆蓋的部分作為推薦結果發了回來。每一個推薦的結果都自帶權重,表明它們和初始節點的相關性。
Pixie系統每個伺服器可以每秒響應1000個推薦請求,百分之99的請求可以在60毫秒內完成,基本上已經成為Pinterest很多功能的後台標配。Pixie系統出來之後,Pinterest的用戶粘性增加了百分之50,而且覆蓋了很多以前無法推薦出來的內容。是不是感覺很牛逼呢?
原文鏈接:https://medium.com/@Pinterest_Engineering/introducing-pixie-an-advanced-graph-based-recommendation-system-e7b4229b664b
推薦閱讀:
※關於阿里雲工業大腦宣講的感想
※機器翻譯真的達到了專業水平?人還需要學外語嗎?別慌!聽聽技術專家、語言學家們怎麼說
※機器管家
※突圍機器寫詩紅海,360這款黑科技讓全民皆「詩人」
※Projet du cours Geste et AI