搜索、推薦和廣告架構能統一嗎?
搜索,推薦,廣告是互聯網時代最主要的三種獲取信息方式。如果你了解三個系統的具體實現,甚至自己還分別親手做過,那麼你應該有一種模模糊糊的印象:似乎有些底層的技術和數據是可以共享的啊,但是為什麼我們公司是分屬三個不同的團隊在搞呢?有時候似乎還要打個架什麼的。
如果你有這個模模糊糊的印象,那麼我告訴你:你不是一個人!Hector Molina在Recsys"14上就提出了將搜索、推薦、廣告三合一的觀點[1]。同時,在國內的微博上,也因此掀起了一些討論[2]。微博上的討論先按下不表,我們先來看看為什麼三合一是一種可能的趨勢?如果要合,又有哪些困難呢?
不同與相似
搜索,推薦和廣告本質上都在解決信息過載的問題,各自解決的手段、目標不相同,各自誕生在產品生命周期不同階段,以至於系統實現不盡相同。
從幾個維度對比一下,看看他們不同和相同在哪。
搜索要解決的是精確快速找到想要的結果。最重要的目標是降低延遲和提高相關性。搜索更關注內容消費者,用雙手讓他們爽。搜索引擎不會像社交網站或資訊網站那樣變成time killer,人們依賴搜索而不沉迷搜索就與搜索引擎的目標有關。在搜索解決用戶的信息獲取需求時,很少給予用戶一些驚喜,這也不是搜索的目的,也不會隨隨便便地利用集體智慧去擴充一些不那麼直接相關的結果。
推薦系統則不同,首先很少有靠推薦系統撐起一款產品,大都是起一個「錦上添花」的作用,好的推薦系統都會變成一個time killer,讓用戶走進去就不想出來那是墜吼的。推薦系統通常不必須要明確表達需求的「query」,因此在給出的結果中就有很多發揮的餘地,可以給用戶製造一些驚喜,這一點和搜索很不一樣。
根據策略不同,推薦系統有不同的實現方式。比如基於內容的推薦,很接近一個搜索引擎,實際上很多推薦引擎底層的技術實現,尤其是數據存儲上大量借鑒了搜索相關技術,比如按照興趣標籤對推薦候選池做倒排索引。另外,搜索是針對個人用戶的,一個用戶發起一個請求,而推薦系統既可能真對單個用戶進行推薦,也可能針對用戶群進行推薦。
廣告則是一個很特殊的存在,它在產品形式上很像推薦,總是「不請自來」,而在技術實現上又兼有推薦和搜索兩者特點,而且它又是一個商業驅動的系統,所以更多關注商業利益最大化。
有一個很有意思的現象,搜索和推薦的信息對象理論上可以共用的,也就是說可以允許用戶設置條件檢索一堆候選對象,也可以把這些候選對象主動推薦給可能感興趣的用戶面前。但是廣告的信息對象卻是另一個隔離的存在,為什麼不能讓用戶直接設置條件檢索我們的廣告庫存呢,就像是一個通常的搜索引擎一樣?也許是可能的。
抽象看三者
這三個系統有這些特點,對於大多數成熟公司,他們已經被把持在三個不同的團隊部門手中,各自團隊每天在同時填著大同小異的技術坑。
我們抽象一下三者的需求共性:本質上都是在匹配,匹配用戶的興趣和需求(看成context),但匹配的目標,條件和策略不盡相同。
進一步抽象下去,又可以分為三步:過濾候選(filter)+排序候選(ranking)+個性化輸出(personalization)。
過濾候選這一步在搜索裡面天經地義,query解析得到查詢意圖,或者更多結構化的搜索條件,用結構化的查詢條件去倒排索引中獲取搜索候選。
與之相似的是廣告系統,搜索廣告也是拿著query去獲取候選廣告,而聯盟廣告則是拿著用戶標籤去需求方獲取廣告候選。
filter在基於內容的推薦策略中也有類似的過程,而其它推薦策略,比如協同過濾或者隱因子模型,一般是提前計算好的,並沒有明顯的類似搜索一樣的filter,不過我們仍然可以抽象地把各種不同召回策略視為filter這一步,只不過filter並不是同步進行的,而是非同步進行的。
ranking這一步主要區別在於排序的目標和約束。搜索的排序目標是高相關性,無論BM25為代表的傳統排序模型還是以Learn to rank為代表的機器學習排序,皆如此,用戶每次在搜索上花費的時間是不是更少(而不是更多)來衡量搜索的效果。
推薦系統的ranking比較複雜,相關性只是很小的部分,根據推薦系統的產品形式不同,ranking時排序不同。通常推薦系統用CTR預估來融合各種召回策略得到的候選集,如果做得深入,還需要考慮Exploit-Explore問題。附加的約束則千變萬化:電商中,當天買過的當天就不能再推了,新聞推薦里,重複的新聞不能再推了,某些場景需要推薦搭配,某些場景需要推薦相似,topN 推薦還需要考慮多樣性,序列推薦要考慮前序和後續,etc。
廣告系統的排序更多是從經濟學角度去看,通常CPC廣告的排序方式是結合預估CTR、出價、廣告質量三者一起考慮。同時還要考慮很多別的因素,尤其是商業因素,平台方的要求,廣告主的要求等等,是一個純動態博弈,正如微軟亞洲研究院的劉鐵岩所介紹那樣[4]。
personalization最被推薦系統看重,而且在某些場合,個性化一度成為推薦系統的代名詞,然而個性化只是推薦系統的衡量指標之一而已,個性化的前提也一定是信息夠豐富夠垂直才行;搜索的personalization相對來說就粗淺一些,常見的是利用地域等人口統計學來做personalization,而且對於歧義較少的query,搜索如果太個性化既沒意義又有風險。
三者的協同
雖然事實上三個系統目前是軍閥割據,但其業務和技術上已經有很多重疊,也能夠產生很多協同作用。
有一部分搜索需求是無法用搜索相關性滿足的,比如「一個人的夜晚聽什麼歌」這樣的query,需要推薦系統去滿足,交互形式可能是眼下大熱的bot,也可能是傳統的流推薦等等。如果能夠識別出這樣的搜索請求,其實更應該交給推薦系統來響應。
推薦系統總體上滯後於用戶的即時需求,所以強大如Amazon這樣的推薦系統,也是有搜索引擎來與之配合的。一方面,搜索因為能夠滿足用戶的主動尋找需求,所以能夠化解一些推薦不力不及時的尷尬;另一方面,搜索可以積累用戶興趣數據;當二者結合起來考慮時,可以避免「搜什麼推什麼」的窘境,整個系統能夠綜合考慮哪些是即時快速需求,哪些是長期興趣。
廣告系統,在技術上和搜索跟推薦並無本質差異,差異在意圖不同,功能不同。對用戶的信息需求滿足,搜索和推薦離真正得到滿足之間總是有一定的鴻溝,要麼是信息不足,要麼是信息過載,這些鴻溝可以利用經濟手段進行調配,也就是廣告系統。
業界觀點
以上分析只是基於純粹技術和業務角度的簡單分析,結束軍閥割據,一統天下似乎是人民的殷殷期盼,然而,這個「人民」似乎只有你我這種站在「上帝視角」的人們。前面提到,之前在微博上,一眾從業者集體討論過這個問題[2][3],討論總結為:
- 幾乎所有人都覺得這個提法是意料之中,也承認三者有統一的概念基礎,對此亦有共識;
- 僅有少數公司(豆瓣)有成功的統一案例,並沒有人提出業界還有類似案例;
- 少數前輩(@清風運文,@張棟_機器學習) 三個系統都經歷過,認為實際上困難重重,困難不在框架上,在細節上,各自優化需求差別很大;
- 還有一些人調侃說來自人的困難大於技術上的困難,這個自己體會不一樣,沒法寫論文。
總之,從這篇微博看到的討論來說,幾乎都持悲觀態度。
我的看法
基於以上的討論觀點及事實,雖然業界很悲觀,但並不是毫無希望,總結幾點:
1. 三者有統一的可能性,而且不低;
2. 在已經被割據的公司里,再重新一統天下非常困難,投入產出比會很低;
如果要統一,從0就開始,所以更適合創業公司或中小公司,可能這也是為什麼豆瓣有成功案例的原因;
3. 由於人的因素很重,所以從一開始就應該把三者劃歸一個團隊來統一規劃,人員配置上:技術上統一,業務上分開。
4. 必須用數據證明統一之後比統一之前好,而不是工程師自己「感覺不錯」,這個「好」可以體現在實際上的業務指標提升,也可以體現在開發效率提升。
參考文獻
[1] Information Seeking: Convergence of Search, Recommendations and Advertising
[2] http://ml.memect.com/remix/3783095167238447.html
[3] 看了Hector Molina在Recsys"14上提的Search... 來自Arber
[4] 劉鐵岩:在微軟大學的三次華麗轉型
本文作者:
陳開江@刑無刀,資深推薦系統從業者,更多交流可加他個人微信【kaijiang_chen】。添加時請註明:來自ResysChina。
關注 ResysChina 微信公眾號,查看更多推薦系統相關內容。
推薦閱讀: