機器學習的本質是人類學習?5大要素詳解個性化推薦的商業化之路

最近「人工智慧」特別火。「人工智慧」的概念雖然很高大上,但從演算法角度來說,離技術演算法層自然語言處理(NLP)和應用層內容的個性化推薦很近。這些演算法之所以能夠得到廣泛地應用,本質上是因為機器學習和人類學習很像。本文將從人工智慧應用場景中個性化推薦商業化的五大要素進行詳細探討。

機器學習的原理並不神秘

從人類學習的角度來說,我們教一個小朋友學數學,我們先要給他一些課本上的例題,讓他知道加減乘除大概是怎麼回事;然後給他一本習題集,讓他不斷地去算,去對答案,最終學得四則運算的技能。

在這個過程中,例題和習題就是訓練樣本,通過訓練樣本獲得標準答案的過程,就是「訓練」。「訓練」的最終目的,是要找到一個「目標函數」。有訓練樣本,通過訓練找到目標函數,這就是機器「學習」的方式,它和人類學習是很相似的。

舉個實際的例子,比如我們的天氣預報系統就是按照這個方式「學習」出來的一個人工智慧系統。為了有一個好的預測結果,我們先要廣泛地採集溫度、濕度、風速、氣壓等各類數據和特徵,構造訓練樣本;然後,根據之前是否下雨以及降雨量的結果,得到一個量化的目標函數;接下來,再通過建立一個學習模型並反覆糾正完成一套訓練過程,不斷優化我們的目標函數,得到儘可能準確的預報結果。

接下來我們要展開講的個性化推薦演算法也是如此。它的實際操作需要克服很多細節問題,但是其基礎是很容易理解的。

圖一:機器學習簡單示意圖

推薦演算法的演進之路

對於一個內容提供商,不管是新聞媒體或者是電商,還是文學網站,它們提供給用戶的內容總是按照一定指標來做推薦的。

最簡單的方法是單一指標推薦,也叫「熱門推薦」。比如就按點擊量或者銷量來做排序,優先推送閱讀人數最多、購買人數最多的產品。各種類型的「熱搜」「熱銷」類榜單就是如此。採用單一指標推薦最大的問題,是沒有「個性化」。沒有「個性化」會導致兩個顯著的後果——首先是體驗相對較差,用戶內心深處「想要變得不同」的需求沒有被激發出來;另外一個問題,就是馬太效應明顯,本身得到曝光的產品會持續得到曝光,而處於長尾上的商品則持續得不到曝光,等於大量質量不錯的產品或內容其實被閑置了。

圖二:傳統排行榜的邏輯

為了解決這兩個問題,出現了兩種針對性的方案,即基於用戶(user)信息和物品(item)信息分別來做推薦。

根據物品信息來做推薦,關鍵是對物品的基本屬性、類別、標籤等進行標註,通過對物品信息的深度分析,為用戶推薦和他之前瀏覽記錄相似的物品。在這個過程中,要推薦的物品的形態是清楚了,但用戶的畫像仍然是模糊的。

根據用戶信息來做推薦,關鍵是根據用戶的行為日誌來刻畫他的偏好。通過對用戶喜歡點什麼,來為這個用戶建立他的偏好模型,然後向他推送他偏好的那些內容。在這個過程中,用戶畫像是有些清晰了,但是用戶仍然是個體化的,不同用戶之間的相似性、用戶行為的社會性並沒有得到比較好的體現,推薦的精度也並沒有一個很好的提升。

針對這些問題,出現了「協同過濾」的演算法。協同過濾演算法的核心是利用群體智慧。具體來講,分為基於物品的協同過濾和基於用戶的協同過濾。舉例來說,基於物品的協同過濾的思路,是說在一大群人中,我們發現看劉德華的人很多都會看張學友,這說明張學友和劉德華有相似度,那以後碰到點擊劉德華的人,我們可以為他推薦張學友。而基於用戶的協同過濾是說,在一大群人中,我們發現A和B兩個人都喜歡看好萊塢大片,比如他們都看了變形金剛、木乃伊、神奇女俠,這說明A和B是同好中人,後面用戶A又看了加勒比海盜,那就可以把加勒比海盜也推薦給B。

在商業實戰中,協同過濾通常會和對物品以及用戶的深度分析相結合,並進行進一步的模型融合,從而得到一個精準度更高的效果。比如基於物品的協同過濾在Amazon、Netflix等網站中成功應用,能為用戶推薦同領域的更深入的結果;而基於用戶的協同過濾則傾向於推薦範圍更寬泛而熱門的內容,在特定場景下運用,能實現跨領域、令人耳目一新的結果。

圖三:協同過濾示意圖

除了協同過濾,隱語義模型的廣泛應用也是一個重要的技術突破。以前傳統的分析方式分為兩步,第一步是對用戶打標籤,比如「15-20歲,男性」;有了這個標籤,第二步是根據這些標籤來映射到結果。這兩步都存在一些「硬傷」。首先,根據用戶信息打出的標籤不一定準確,比如用戶填的註冊年齡,不一定是真實的年齡;其次,通過標籤來對其偏好的物品進行映射,準確度也不高。比如男性中確實很大部分喜歡體育類內容,但是所有男性都要給他們推送體育類內容嗎?這樣的推薦精準度是比較差的。隱語義模型的核心,是超越這些表層語義標籤的維度,通過機器學習技術,挖掘用戶行為中更深層的潛在關聯,從而避免人工貼標籤粗放、主觀的缺點,使得推薦精準度更高。

協同過濾和隱語義模型已經應用在越來越多的商業場景中。不過,對於一個成功的演算法來說,僅僅明確其模型基礎是不夠的,還必須要具備下面所說的這些重要優點。

五大要素缺一不可

從整個行業的實踐來看,有五個要素至關重要,即自我進化、快速建模、模型融合、開放架構以及性能/效果/資源的良好平衡。具備這五個要素的演算法,才能有效應對海量實時數據的吞吐,並高效持續地進行運轉。

自我進化

一個推薦系統要長期運行,首先要解決的就是自我進化的問題。用戶的興趣、物品的價值以及用戶數據的時效性都會隨著時間的推延而變化。用戶的興趣有長期和短期的興趣,曾經的短期興趣並不能對預測其未來行為提供很好的參考;物品的價值也有它的高峰期和平原期,現在賣得好的產品未必以後也賣得好,反之亦然。

圖四:用戶長短期興趣圖

以前針對用戶興趣、物品價值的變化,通常是用人工設定規則的方法來加以應對。隨著數據量呈幾何級的增長,人工設定規則繁瑣且低效的弱點越來越明顯。人工設定100條、1000條規則可能還行,但是100萬、1000萬條規則呢?根本不可行。與之相比,通過演算法設計,驅動推薦系統不斷進行自我進化,不但更可行,而且更精準高效。

快速建模

在信息的洪流裹挾下,用戶在每個平台停留的時間是很有限的,這就要求推薦系統必須根據這很短的停留時間內用戶的行為數據,快速地捕捉其興趣,為其建立和更新興趣模型,從而迅速為其推薦個性化的內容。

對於新用戶來說,這個問題特別明顯,業界稱之為「冷啟動」問題。解決冷啟動問題,從完全空白到建立起一個可以提供有效參考的用戶模型通常需要幾天。這個漫長的周期在實際的商業化過程中是很致命的。很難想像一個用戶如果沒有在首次瀏覽時獲得滿意印象後以後仍會經常來光顧。

要解決冷啟動問題,有很多種方案,比如可以通過外部信息,如IP地址,註冊信息等來完善用戶的標籤體系。但更重要的是,我們可以選擇那些接受度比較高、同時又能代表細分領域的物品來測試用戶的興趣點。如何選擇這些物品,以確保能快速地明確用戶興趣,是問題的核心。一個能快速捕捉到用戶興趣的推薦系統,是確保用戶留存、提升用戶轉化率的重要因素。

模型融合

前面講協同過濾時我們已經提到,商用的推薦演算法中都融合了多套演算法,以獲得更佳的效果。在機器學習領域,每一個單一演算法都是針對一類特定的問題,因而針對同一個推薦任務,不同的演算法效果相差很大。但是,實踐中的推薦任務千差萬別,每個任務適應的演算法往往並不相同,在這種情況下,將多個演算法的預測結果進行融合,往往能取得10%以上的優化效果。

模型融合的出發點是想建立一個通用性更強的解決方案,以期用一個較一般的演算法模型,來為儘可能多的任務提供支持。如何盡量兼顧「通用性」和「優化效果」,是在進行模型融合過程中需要考慮的關鍵。在實踐中,我們開發出的獨有專利的雙層疊加演算法模型就是這方面的一個典型案例,現在已經成為我們向客戶提供推薦服務的技術基礎。

開放架構

從推薦演算法發展的歷史來看,新的演算法始終在不斷的湧現,尤其是隨著深度學習興起之後,各種新興演算法更是層出不窮,包括強化學習、遷移學習等新方法、新領域都開始受到越來越多的關注。

對於一個優秀的推薦系統來說,即使現在的推薦效果已經相當好,但必須對新興演算法也持有海納百川、兼容並蓄的態度,才能不斷地進一步優化提升自己。要做到這樣的理想狀態,整個系統架構的開放性是至關重要的。比如我原來是採用協同過濾來做推薦的,現在要接入深度學習的演算法,怎樣才能保證我原來的系統仍然高效穩定的運行?如果是見獵心喜,跟風趕潮流地接入新演算法,會有很大風險,系統的效率和穩定性可能都會打折扣。如何解決這個問題,是我們在做架構設計的時候一開始就該有所考慮的。

性能/效果/資源的良好平衡

和以前相比,現在的數據量的增長可以說是爆炸式的。用戶數、商品數的急劇增長,隨之而來的是為他們建立的模型的數量呈現幾何級增長——每個用戶不僅有長期興趣模型還有短期興趣模型,每個商品也要建立時效性變化的模型,而且在高並發的場景下,所有這些事情都需要在極短的時間內完成,但是運算所需的硬體資源卻是有限的,這時候就需要在資源消耗和運算效果中找到一個平衡。

比如大家都知道分散式計算是解決海量數據運算的一個解決方案,但是分散式數據很難滿足時效性方面的要求。要滿足時效性的需求,很重要的一點就是要簡化模型,去掉不必要的用戶特徵,從而降低運算量,並同時緩解存儲資源緊張的問題。但是,降低了運算量之後,會不會對推薦效果產生消極影響?如何平衡好運算量和推薦效果,這也是一個大課題。

圖五:三層火箭模型

在實際中,我們的操作方式是,專門抽取出高價值的用戶和物品,讓它們享受更複雜的演算法和更快的更新頻率,同時構建「三級火箭」的演算法體系。「三級火箭」的核心思想是,按照離線、近線、在線這三個步驟,將一整套推薦演算法拆分成三個部分。比如,對海量用戶日誌進行深入挖掘完全可以獨立進行,可以離線進行操作;Cache、Model的及時更新、迅速捕捉用戶點擊反饋以及一些較輕量級的推薦演算法的運行可以在近線部分進行完成;在線部分則負責及時響應請求並返回結果,保證高可靠高並發的能力。在演算法設計中應用類似的思路,可以分攤運算壓力,提升運算效率。

作者:紀達麒,達觀數據CTO,中國計算機學會(CCF)會員。曾經擔任騰訊文學數據中心高級專家、盛大文學技術總監,負責百度、搜狗廣告系統研發工作,在中國一線互聯網公司中承擔個性化推薦系統、在線廣告系統等核心技術研發十餘年。其代表公司多次參加國際數據挖掘競賽,是ACM KDD-Cup,CIKM Competition等世界一流數據挖掘競賽獲冠軍,所開發的個性化推薦系統曾創造了上線後效果提升300%的記錄。


推薦閱讀:

重構?抑或解構?——讀《華夏邊緣》
我們用1年時間和60個年輕人討論他們的「人設」,發現他們真正想要的……丨睿叢·洞察
眾相VOL.7 | 李明越:畢竟我是這麼熱愛人類學
先發幾個關於易洛魁語的鏈接,有空慢慢聊

TAG:學習 | 商業 | 人類 | 人類學 | 機器學習 | 推薦 | 個性 | 商業化 | 本質 | 個性化 | 個性化推薦 | 機器 |