總結(jié)、溫習(xí),這兩點(diǎn)讓人成長。而不是你走得有多快!
這句話我寫了半年了,這篇文章算是此話付諸實(shí)踐的開端吧。
本文是我對(duì)自己這幾年所接觸的技術(shù)的總結(jié),有些技術(shù)與工作直接相關(guān),有些則純屬個(gè)人興趣。具體說,本文分為兩部分,第一部分介紹佳緣用戶推薦系統(tǒng)的發(fā)展歷史。這部分的介紹很好地反映我們對(duì)這個(gè)問題的思考和理解過程。這期間我們走了很多彎路,但也正是這些彎路讓我們積累了很多婚戀交友推薦里獨(dú)特的實(shí)戰(zhàn)經(jīng)驗(yàn)。第二部分主要是羅列了一些我個(gè)人這幾年接觸的比較有代表性的技術(shù),這些技術(shù)很多偏學(xué)術(shù),只對(duì)實(shí)戰(zhàn)感興趣的同學(xué)可以忽略。
佳緣用戶推薦系統(tǒng)天真的算法年:2011-2013
2011年8月我加入世紀(jì)佳緣,開始時(shí)主要負(fù)責(zé)佳緣的交友推薦系統(tǒng)優(yōu)化,后來我這個(gè)團(tuán)隊(duì)也負(fù)責(zé)其他的機(jī)器學(xué)習(xí)事情,比如佳緣的網(wǎng)警系統(tǒng)(抓惡意用戶)。剛來時(shí)團(tuán)隊(duì)加上我只有3個(gè)人,做的事基本集中在推薦系統(tǒng),以及對(duì)業(yè)務(wù)部門新產(chǎn)品的接口支持。當(dāng)時(shí)我自己并沒有推薦系統(tǒng)應(yīng)用于工業(yè)界的實(shí)際經(jīng)驗(yàn),所以很想當(dāng)然地就從自己了解的推薦算法開始工作了。
2011年到2013年中這段時(shí)間,我們?cè)谒惴ǚ矫嬷饕隽藘蓚€(gè)方向的嘗試。第一個(gè)是嘗試item-based kNN算法。對(duì)這個(gè)算法的優(yōu)化嘗試體現(xiàn)在以下幾個(gè)方面:
離線計(jì)算效率的優(yōu)化:從開始的單機(jī)計(jì)算,到后來的Hadoop分布式計(jì)算。
離線計(jì)算效果的優(yōu)化:嘗試了不同的相似度計(jì)算方法,以及不同的預(yù)測(cè)產(chǎn)生方式,但效果并不明顯。
離線計(jì)算改為線上實(shí)時(shí)計(jì)算:離線的工作方式是先在線下計(jì)算好推薦結(jié)果,然后把結(jié)果存入緩存;線上需要推薦結(jié)果時(shí)直接從緩存中取即可。顯然這種方式對(duì)于緩存中沒有推薦結(jié)果的用戶無法產(chǎn)生推薦,而活躍的用戶又很容易把緩存中的所有結(jié)果都消費(fèi)完。為了解決這些問題,后來我們?cè)贒ubbo上構(gòu)建了實(shí)時(shí)的Java推薦服務(wù)。
Item-based kNN算法的嘗試最開始是基于最大化佳緣用戶發(fā)信量的業(yè)務(wù)理解,但后來我們發(fā)現(xiàn)這個(gè)理解跟業(yè)務(wù)部門的需求偏差很大。比如給男性展示美女,男性的發(fā)信就會(huì)暴漲,但這樣就會(huì)導(dǎo)致少量的女性收到大部分信,而大部分女性則沒信可收。這是業(yè)務(wù)部門不愿意看到的。雖然我們嘗試在item-based kNN基礎(chǔ)上做調(diào)整來平衡其他的業(yè)務(wù)指標(biāo)(如收信人數(shù),看信人數(shù)等),但效果不理想。
第二個(gè)嘗試是學(xué)術(shù)界的可逆(Reciprocal)推薦算法1,即在考慮用戶體驗(yàn)的同時(shí)也兼顧item(對(duì)佳緣來說也是人)的體驗(yàn)。這個(gè)嘗試基本是失敗的,學(xué)術(shù)界發(fā)明的那些算法基本都有各種前提假設(shè),真用起來都不太靠譜。
雖然到2013年我們團(tuán)隊(duì)人數(shù)上升到了六七人,但基本在推薦算法上做事的人還是只有兩個(gè)左右。
工程年:2014
從2013年底開始我逐漸意識(shí)自己對(duì)算法的理解過于學(xué)術(shù)而無法滿足業(yè)務(wù)部門的實(shí)際需求。所以從2013年底我開始從業(yè)務(wù)出發(fā)重新梳理推薦算法團(tuán)隊(duì)的工作方向。相對(duì)于給用戶推薦物品的場(chǎng)景,佳緣的在線交友推薦有以下幾個(gè)特點(diǎn):
可逆性:佳緣的物品是異性的人,他們也會(huì)有感受。所以在推薦時(shí)要考慮到雙方的感受。
資源獨(dú)占性:通常一個(gè)人在一段時(shí)間內(nèi)也就和一個(gè)人談戀愛。這與電商賣東西是差別很大的,一本相同的書可以賣幾十萬冊(cè)都可以,在佳緣這么干就不行。電商可以搞個(gè)暢銷榜讓用戶購買最暢銷的書,這其實(shí)也是很好的推薦。但對(duì)于佳緣這一招就很糟糕。
轉(zhuǎn)化鏈很長,反饋延遲:從展示到發(fā)信,再到看信和回信,過程很長,而且看信和回信又會(huì)有很長的時(shí)間延遲。另外,收益在轉(zhuǎn)化鏈的末端才能體現(xiàn)。公司的收益在看信后才能體現(xiàn)(佳緣的業(yè)務(wù)模式是收取用戶的看信費(fèi)用),而用戶的收益在回信后才能真正體現(xiàn)。
佳緣業(yè)務(wù)的高復(fù)雜性,加上團(tuán)隊(duì)在使用算法上經(jīng)驗(yàn)不夠,讓我決定把接下來的算法優(yōu)化方向放在特征工程上,而算法就限制在最簡單的邏輯回歸(Logistic Regression)。團(tuán)隊(duì)在處理特征的過程中可以積累對(duì)數(shù)據(jù)的處理經(jīng)驗(yàn),以及對(duì)業(yè)務(wù)的理解。邏輯回歸足夠簡單,解釋性好,也有很好的開源實(shí)現(xiàn)。從它開始也可以讓團(tuán)隊(duì)在算法使用上積累心得。這是“戰(zhàn)術(shù)”上的第一個(gè)選擇。我們把上圖中每一步轉(zhuǎn)化作為單獨(dú)的問題分別進(jìn)行優(yōu)化,這樣邏輯回歸就適用于每一步。這是“戰(zhàn)術(shù)”上的第二個(gè)選擇。
上面說的“戰(zhàn)術(shù)”,其實(shí)針對(duì)的只是推薦系統(tǒng)里的排序系統(tǒng)。當(dāng)時(shí)我對(duì)推薦系統(tǒng)整體的想法是把運(yùn)營需求和用戶需求分開,然后分別對(duì)他們進(jìn)行獨(dú)立優(yōu)化。具體說就是第一步以滿足運(yùn)營需求為目標(biāo)獲得候選集,而第二步是根據(jù)用戶(雙方)的喜好對(duì)候選集進(jìn)行排序,系統(tǒng)流程圖見下圖。這樣,在優(yōu)化用戶需求時(shí)就不需要考慮佳緣復(fù)雜的業(yè)務(wù)邏輯,可以極大地簡化問題。同樣,我們也可以比較獨(dú)立地優(yōu)化滿足運(yùn)營需求的候選系統(tǒng)。這可以認(rèn)為是推薦系統(tǒng)的“戰(zhàn)略”方向。
佳緣推薦系統(tǒng)流程圖(2014)
2014年無疑是工程年。
產(chǎn)品年:2015
2014年工程年的效果還是不錯(cuò)的,多個(gè)轉(zhuǎn)化模型的分別構(gòu)建和組合使用,使得業(yè)務(wù)上的各個(gè)指標(biāo)都有所提升,很多指標(biāo)的提升幅度都超過了50%。
現(xiàn)在看來,2014年的戰(zhàn)術(shù)是非常正確的?;艘荒陼r(shí)間在特征工程上,團(tuán)隊(duì)確實(shí)對(duì)業(yè)務(wù)數(shù)據(jù)的理解更深入了很多,也積累了模型優(yōu)化的一些經(jīng)驗(yàn)。戰(zhàn)略上雖然大方向沒錯(cuò),卻也存在一些問題。首先,運(yùn)營需求與用戶需求本來就是相關(guān)的,它們不可能完全獨(dú)立,我們?cè)趦?yōu)化一個(gè)指標(biāo)的同時(shí)很容易對(duì)另一個(gè)指標(biāo)產(chǎn)生副作用。
例如,按照上面的流程圖,第一步的候選系統(tǒng)通過考慮運(yùn)營需求來產(chǎn)生候選集,然后候選集由考慮用戶需求的排序系統(tǒng)進(jìn)行排序。如果產(chǎn)生的候選集很小,那排序系統(tǒng)的優(yōu)化空間就很小,作用自然也不會(huì)大;而如果候選集很大,那通過排序系統(tǒng)排序后獲得最終推薦結(jié)果的做法就會(huì)降低運(yùn)營需求的控制力度。
2014年底的時(shí)候我開始考慮2015年推薦系統(tǒng)團(tuán)隊(duì)的工作方向。那段時(shí)間我集中看了很多公司推薦相關(guān)的資料,其中幾年前百度大推薦部門(現(xiàn)在已經(jīng)解散)公開的一些演講資料對(duì)我啟發(fā)最大。很多公司講推薦的資料都注重講算法,或者數(shù)據(jù)和特征;而百度的這些資料主要偏向于從系統(tǒng)方向來講。這啟發(fā)我回到排序系統(tǒng)的本質(zhì)來看推薦系統(tǒng)。
搜索,廣告和推薦系統(tǒng),本質(zhì)都是大規(guī)模排序系統(tǒng)。它們都遵循“候選產(chǎn)生 –> 排序 –> 后處理”的一般流程(見下圖)。
再仔細(xì)說明下上面這個(gè)流程中的前兩步:
1)候選產(chǎn)生(檢索)系統(tǒng):找與用戶相關(guān)的候選集合。對(duì)于佳緣來說,這里的相關(guān)候選集合可以通過(互相)滿足擇偶條件來獲得,也可以通過算法如kNN,AR等來獲得。不管用什么方式,最終目的就是把用戶與候選集合聯(lián)系起來。
2)排序系統(tǒng):排序系統(tǒng)里的排序目的是最大化產(chǎn)品目標(biāo)。對(duì)佳緣來說,產(chǎn)品目標(biāo)包括了運(yùn)營目標(biāo)和用戶滿意度。
相對(duì)于2014年運(yùn)營需求與用戶需求獨(dú)立優(yōu)化的“戰(zhàn)略”,2015年的優(yōu)化思路有所調(diào)整:
- 分離出運(yùn)營需求中與用戶需求耦合小的部分,使用規(guī)則控制。這樣做的原因主要還是佳緣的業(yè)務(wù)邏輯太復(fù)雜,完全依靠算法達(dá)成產(chǎn)品目標(biāo)很困難,所以加入了一些規(guī)則進(jìn)行宏觀控制。
- 統(tǒng)一優(yōu)化無法分離的運(yùn)營需求與用戶需求。這種統(tǒng)一不僅體現(xiàn)在排序系統(tǒng)會(huì)同時(shí)考慮這兩方面的指標(biāo),也會(huì)以較弱的形式體現(xiàn)在候選產(chǎn)生系統(tǒng)里,畢竟從候選產(chǎn)生系統(tǒng)產(chǎn)生的候選集不可能是所有與用戶相關(guān)的物品(異性)。
那么,為什么把2015年叫做推薦系統(tǒng)的產(chǎn)品年?因?yàn)榻衲晖扑]系統(tǒng)的目標(biāo)是優(yōu)化產(chǎn)品目標(biāo)!
推薦系統(tǒng)是為產(chǎn)品服務(wù)的,而不是直接為用戶服務(wù)。
上面這句話聽起來很簡單,但其實(shí)很多時(shí)候我們會(huì)在不知不覺中認(rèn)為推薦系統(tǒng)是直接在為用戶服務(wù)的。我們?cè)谧钤绲臅r(shí)候就是犯了這個(gè)錯(cuò)誤。
本節(jié)的最后,匯總羅列下我這幾年做推薦的感想:
- 技術(shù)為產(chǎn)品服務(wù),而不是直接面向用戶
- 數(shù)據(jù)質(zhì)量是地基,保證好的質(zhì)量很不容易
- 如何制定正確的優(yōu)化指標(biāo)真的很難
- 業(yè)務(wù)理解 > 工程實(shí)現(xiàn)
- 數(shù)據(jù) > 系統(tǒng) > 算法
- 快速試錯(cuò)
一些技術(shù)嘗試
這節(jié)我只是簡單羅列下最近幾年自己接觸的比較有代表性的一些技術(shù),跟工作關(guān)系不大。
Dirichlet Process 和 Dirichlet Process Mixture模型
了解DP主要是因?yàn)楫?dāng)時(shí)在看Mahout源代碼的時(shí)候發(fā)現(xiàn)有個(gè)算法以前竟然沒接觸過,覺得挺有意思就仔細(xì)學(xué)了下。DP不太好理解,它被稱為分布的分布。從DP抽取出的每個(gè)樣本(一個(gè)函數(shù))都可以被認(rèn)為是一個(gè)離散隨機(jī)變量的分布函數(shù),這個(gè)隨機(jī)變量以非零概率值在可數(shù)無窮個(gè)離散點(diǎn)上取值。DPM是非參數(shù)貝葉斯聚類模型,聚類時(shí)可以讓模型自動(dòng)學(xué)習(xí)類數(shù)。雖然聽著好像很不錯(cuò),其實(shí)有很多槽點(diǎn),具體可見參考文獻(xiàn)2。
Latent Dirichlet Allocation (LDA)
LDA是文本處理里的利器,經(jīng)常被用于對(duì)文本進(jìn)行聚類,或者預(yù)處理。更詳細(xì)的理論介紹可見參考文獻(xiàn)3。當(dāng)時(shí)我嘗試把它用于佳緣的發(fā)信數(shù)據(jù),看看能不能找出一些有明顯特征的發(fā)信群體。聚類結(jié)果整體上基本不可解釋,但有一個(gè)類別意義很明顯,這類人主要給離婚異性發(fā)信。大家可以想想這類人是什么人。嘗試感想是LDA直接用于聚類未必靠譜,但是可以把它用于數(shù)據(jù)的預(yù)處理,比如降維什么的。
Alternating Direction Method of Multipliers (ADMM)
ADMM是個(gè)優(yōu)化算法框架,它把一個(gè)大問題分成可分布式同時(shí)求解的多個(gè)小問題。理論上,ADMM的框架可以解決大部分實(shí)際中的大尺度問題。槽點(diǎn)很多,謹(jǐn)慎使用!更詳細(xì)的介紹可見參考文獻(xiàn)4。
Deep Learning
前段時(shí)間,我利用佳緣的用戶頭像數(shù)據(jù),嘗試了DL里的一些常用算法。為了看算法的效果,我把用戶的性別作為預(yù)測(cè)目標(biāo)。這種預(yù)測(cè)對(duì)于佳緣的業(yè)務(wù)直接意義不大,因?yàn)橛脩粼谧?cè)時(shí)就被要求填寫其性別。
算法預(yù)測(cè)的效果還是不錯(cuò)的,準(zhǔn)確度達(dá)到了87%。這還是在很小訓(xùn)練集上訓(xùn)練后獲得的精度。DL麻煩是訓(xùn)練時(shí)需要調(diào)整的超參數(shù)實(shí)在是太多了,改一次超參數(shù)就要重跑一次,真的是很耗時(shí)。沒有好的計(jì)算資源的話,建議別考慮DL。
利用GBDT模型構(gòu)造新特征
實(shí)在想不出更多的有用特征?嘗試下Facebook提出的利用GBDT來構(gòu)造新特征的方法吧。我們的使用經(jīng)驗(yàn)表明確實(shí)還是挺靠譜的,只要你效率能扛得住。具體介紹可見參考文獻(xiàn)5。
特征哈希(Feature Hashing)
很多個(gè)性化特征?特征數(shù)量太多?試試特征哈希的方法吧。此方法我們目前也沒使用過,歡迎有經(jīng)驗(yàn)的人發(fā)表意見。具體介紹可見參考文獻(xiàn)5。
不平衡數(shù)據(jù)的抽樣方法
正負(fù)樣本數(shù)量差異太大?訓(xùn)練樣本太多機(jī)器跑不動(dòng)?嘗試下參考文獻(xiàn)7中的抽樣方法吧。我們之前的嘗試表明還是有點(diǎn)作用的。不過如果你的數(shù)據(jù)不是大得跑不動(dòng),那嘗試的必要性就不太大了
- 蜜度索驥:以跨模態(tài)檢索技術(shù)助力“企宣”向上生長
- GitLab將告別中國區(qū)用戶:是時(shí)候選擇新的“極狐”或保護(hù)賬號(hào)了
- 蘋果明年推至少22款新品,阿里非洲首站啟動(dòng),科技新品盛宴拉開帷幕
- SUSE預(yù)測(cè):未來私有AI平臺(tái)崛起,讓我們共同見證AI的未來
- AI伴侶“小奇”:奇富科技重塑金融服務(wù)體驗(yàn)的探索之作
- 揭秘軟銀孫正義神秘芯片計(jì)劃:打造超越NVIDIA的未來科技新星
- 大模型創(chuàng)企星辰資本獲數(shù)億融資,騰訊啟明等巨頭入局,人工智能新篇章開啟
- 大模型獨(dú)角獸階躍星辰融資新動(dòng)態(tài):數(shù)億美金B(yǎng)輪,揭秘星辰未來之路
- 哪吒汽車創(chuàng)始人資金遭凍結(jié),1986萬元股權(quán)風(fēng)波引關(guān)注
- 本田與日產(chǎn)醞釀合并:明年6月敲定協(xié)議,新公司社長待本田推薦
- 金融大模型新突破:百川智能Baichuan4-Finance引領(lǐng)行業(yè),準(zhǔn)確率領(lǐng)先GPT-4近20%,變革金融業(yè)未來
免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。