如果說存在這樣一個應(yīng)用挽荡,在構(gòu)建這個應(yīng)用的時候需要應(yīng)用到大規(guī)模數(shù)據(jù)處理、數(shù)據(jù)挖掘即供、信息檢索定拟、預(yù)測理論、人工智能逗嫡、認知科學(xué)青自、統(tǒng)計學(xué)株依、營銷學(xué)、人機交互延窜、AB 試驗恋腕、微服務(wù)、高可用逆瑞、高并發(fā)等相關(guān)技術(shù)(任何我見過的名詞)荠藤,那么這個應(yīng)用一定非推薦廣告系統(tǒng)莫屬。作為提供個性化服務(wù)能力的推薦廣告系統(tǒng)已經(jīng)滲透到我們生活的方方面面获高,比如當(dāng)你打開某寶哈肖、某東、某信谋减、某團牡彻、某條扫沼、某音出爹、某乎、某 Hub 時缎除,甚至你剛刪掉的一條垃圾短信严就、拒掉的一個推銷電話、忽略掉的一個垃圾推送器罐。你看似不經(jīng)意的一個操作帶來對應(yīng)交互呈現(xiàn)的背后梢为,是幾十個系統(tǒng)背后拼了老命計算協(xié)調(diào)后的結(jié)果,也是無數(shù)個心酸碼農(nóng)透支身體后留下的血與汗轰坊。
推薦系統(tǒng)這個名詞想來大家都不陌生铸董,大部分技術(shù)人員聽到推薦系統(tǒng)這個名詞腦海里的第一反應(yīng)應(yīng)該是“不就是協(xié)同過濾那一套算法模型么”,然而算法模型只是推薦系統(tǒng)中的冰山一角肴沫,雖然由其重要粟害,但重要性卻不及其它因素,如果一定要這些因素排個優(yōu)先級的話颤芬, 那么我想它一定在 UI/UE悲幅、數(shù)據(jù)、領(lǐng)域知識之后站蝠。UI/UE 決定了用戶對一個產(chǎn)品/系統(tǒng)的第一印象汰具,只有當(dāng)用戶愿意留下來才有算法模型發(fā)揮的余地,特別是對看臉協(xié)會的高級會員來講尤其重要菱魔,一個系統(tǒng)的“顏值”決定了我要不要停下來欣賞它的靈魂留荔,所以 UI/UE 解決的是活下來的問題;其次得積累那么一些數(shù)據(jù)澜倦,巧婦難為無米之炊聚蝶,有了米才能烹飪出美好的佳肴吸引更多的食客拔疚,所以數(shù)據(jù)解決的是讓應(yīng)用動起來的問題;接著是領(lǐng)域知識既荚,算法模型樸素來講是一個優(yōu)化系統(tǒng)的工具稚失,在優(yōu)化系統(tǒng)之前得先理解優(yōu)化的方向,定義量化評估優(yōu)化的結(jié)果的方式恰聘,而不同的領(lǐng)域句各,優(yōu)化方向和評估指標是不同的,比如富媒體新聞資訊類在意的是實時性晴叨,要快凿宾;電商類普通用戶在意的是價格而不是興趣,要準兼蕊;流媒體類是想讓用戶停留時間更長初厚,要久。領(lǐng)域知識能給算法模型快速指引一個方向孙技,避免南轅北轍产禾,做很多的無用功。
雖然算法模型的重要性不是那么高牵啦,但是現(xiàn)在普遍評估一個大廠推薦系統(tǒng)做的的好壞都是拿算法模型來說事亚情,比如當(dāng)系統(tǒng)恰好切中你的“要害”時,你的第一反應(yīng)是哈雏,**楞件,為什么這么準,用的什么算法裳瘪,而不是土浸,誒,這個界面好好看彭羹,手感不錯黄伊,這個系統(tǒng)好健壯好穩(wěn)定,這是為什么呢皆怕?難道真的是好看的皮囊下真的要有一個有趣的靈魂么毅舆。其實主要原因還是現(xiàn)階段推薦系統(tǒng)的其它通用型模塊已經(jīng)相對比較成熟,已經(jīng)沒有太多優(yōu)化的空間了愈腾,各大有實力的廠商幾乎都抄來抄去挖來挖去都一個樣憋活,即使系統(tǒng)的復(fù)雜度高又怎樣,現(xiàn)代互聯(lián)網(wǎng)的技術(shù)體系下什么高復(fù)雜性的問題解決不了虱黄?但是針對大量不同的業(yè)務(wù)場景悦即、不同的人群,以及隨時可能發(fā)生的興趣變化這種不確定因素往往不是那種靠邏輯構(gòu)建的應(yīng)用系統(tǒng)能夠捕捉的,所以算法模型站在前輩們的肩膀上在解決這些問題的時候自然而然的就顯得格外亮眼辜梳。所以我們今天要聊的主題也是和推薦算法模型相關(guān)的個性化推薦技術(shù)粱甫,而不是工程技術(shù),雖然其很有研究價值作瞄。好了茶宵,又習(xí)慣性的將了一大堆廢話,下面介入正題宗挥。
作為個性化時代互聯(lián)網(wǎng)的核心應(yīng)用技術(shù)乌庶,推薦、搜索和廣告一直是工業(yè)界技術(shù)研發(fā)和創(chuàng)新的主戰(zhàn)場契耿。這些領(lǐng)域由于非線性復(fù)雜度高瞒大,容易收集到大量數(shù)據(jù)的特性,天然適合于數(shù)據(jù)驅(qū)動創(chuàng)新的方法搪桂。在 2015 年左右透敌,隨深度學(xué)習(xí)的技術(shù)浪潮席卷而來,引爆整個領(lǐng)域的全面技術(shù)變革踢械。深度學(xué)習(xí)除了在計算機視覺廊酣、語音坐搔、自然語言處理領(lǐng)域混的風(fēng)聲水起以外豹障,其實很早的就已經(jīng)被引入并應(yīng)用到推薦憔购、搜索、廣告領(lǐng)域德绿。只不過早期學(xué)術(shù)界研究、發(fā)表的大量復(fù)雜算法模型往往只是停留在實驗室階段退渗,很難被工業(yè)界大規(guī)模應(yīng)用移稳,一方面是因為模型的假設(shè)太過苛刻,和實際情況相差較遠会油,效果難以保證个粱,另一方面,工業(yè)界計算規(guī)模巨大翻翩,除了準確性以外都许,人們越來越關(guān)注實時性,工程挑戰(zhàn)大嫂冻。所以隨著深度學(xué)習(xí)技術(shù)的一步步沉淀胶征,我們可以清晰的看到,現(xiàn)在在推薦桨仿、搜索睛低、廣告這類技術(shù)領(lǐng)域,核心模型算法的創(chuàng)新已經(jīng)逐漸演變成由工業(yè)界主導(dǎo)、以工業(yè)實踐和領(lǐng)域應(yīng)用驅(qū)動為主的模型钱雷,這些領(lǐng)先的算法模型往往來自頭部公司的頂尖團隊骂铁,不再由學(xué)術(shù)界專門做研究的機器學(xué)習(xí)實驗室基于假想的問題或者理論發(fā)展而創(chuàng)造。由此罩抗,接下來準備分享一些自己在推薦拉庵、廣告領(lǐng)域關(guān)于深度學(xué)習(xí)在工業(yè)界應(yīng)用場景的心得體會,與諸君共勉套蒂。當(dāng)然在走進深度學(xué)習(xí)之前名段,我們先來看看傳統(tǒng)推薦系統(tǒng)模型是如何進化的。兩年前寫過一篇介紹推薦系統(tǒng)傳統(tǒng)模型的文章泣懊,在逐漸了解到深度學(xué)習(xí)在推薦廣告領(lǐng)域的應(yīng)用之后伸辟,回來再看這些傳統(tǒng)經(jīng)典的模型,會有別樣風(fēng)味馍刮,下面一一道來信夫。
傳統(tǒng)推薦模型進化之路
推薦系統(tǒng)模型的發(fā)展可謂是一日千里,從 2010 年前千篇一律的協(xié)同過濾卡啰、邏輯回歸進化到因子分解機静稻、梯度提升樹,再到 2015 年后深度學(xué)習(xí)在各個領(lǐng)域的百花齊放匈辱,各種模型架構(gòu)層出不窮振湾。推薦系統(tǒng)的主流模型經(jīng)歷了從單一模型到組合模型,從經(jīng)典框架到深度學(xué)習(xí)亡脸、強化學(xué)習(xí)的發(fā)展過程押搪。不得不說,深度學(xué)習(xí)推薦模型已經(jīng)成為搜索浅碾、推薦大州、廣告領(lǐng)域的主流。在工業(yè)界垂谢,當(dāng)我們在享受深度學(xué)習(xí)技術(shù)紅利的時候厦画,認真的回顧前深度學(xué)習(xí)時代的推薦模型是很有必要的,因為即使在深度學(xué)習(xí)空前流行的今天滥朱,協(xié)同過濾根暑、邏輯回歸、因子分解機等傳統(tǒng)模型仍然憑借其高度可解釋性徙邻、環(huán)境要求低排嫌、易訓(xùn)練、易部署等不可替代的優(yōu)勢鹃栽,擁有大量適用的場景躏率。我們在選擇應(yīng)用模型時躯畴,不應(yīng)該有新舊、高低貴賤之分薇芝,了解每個模型的優(yōu)缺點蓬抄、核心思想,能靈活運行和改進不同的算法模型是每一位從事推薦領(lǐng)域算法工程師夯到、開發(fā)工程師的標配嚷缭。其次傳統(tǒng)推薦模型是深度學(xué)習(xí)推薦模型的基礎(chǔ),比如在工業(yè)界很有影響力的基于因子分解機的神經(jīng)網(wǎng)絡(luò)(FNN)耍贾、深度因子分解機(DeepFM)阅爽、神經(jīng)網(wǎng)絡(luò)因子分解機(NFM)等深度學(xué)習(xí)模型與傳統(tǒng)的 FM 模型有著千絲萬縷的關(guān)系,同時在傳統(tǒng)推薦模型中廣泛使用的梯度下降等訓(xùn)練方式荐开,更是沿用到了深度學(xué)習(xí)時代付翁,所以打好傳統(tǒng)推薦模型的基本功,能讓我們在推薦晃听、廣告領(lǐng)域走的越來越遠百侧,越來越穩(wěn)。
傳統(tǒng)推薦系統(tǒng)模型的演進主要由下圖所示能扒,傳統(tǒng)推薦系統(tǒng)模型的發(fā)展脈絡(luò)主要包含這幾個部分:
- 協(xié)同過濾算法簇
- 邏輯回歸模型簇
- 因子分解機模型簇
- 組合模型
經(jīng)典的協(xié)同過濾推薦算法
經(jīng)典的協(xié)同過濾算法曾經(jīng)是推薦系統(tǒng)的首選模型佣渴,協(xié)同過濾算法從物品相似度和用戶相似度角度出發(fā),衍生出基于物品的協(xié)同過濾(ItemCF)和基于用戶的協(xié)同過濾(UserCF)兩種算法初斑,這兩種算法的核心在于如何度量用戶或者物品的相似度辛润,在實施落地的時候,通常需要先構(gòu)建用戶物品共現(xiàn)矩陣见秤,然后根據(jù)余弦相似度(Cosine Similarity)砂竖、修正的余弦相似度(Adjust Cosine Similarity:主要使用用戶平均分或者物品平均分來減少用戶、物品的偏置秦叛,因為每人評分標準不同)晦溪、皮爾遜相關(guān)系數(shù)(Person Coefficient)來計算用戶或者物品的相似性,然后再根據(jù)用戶的歷史行為進行相似用戶挣跋、相似物品的計算,最后加權(quán)輸出排序結(jié)果進行推薦狞换。
基于用戶的協(xié)同過濾和基于物品的協(xié)同過濾各自有不同的優(yōu)缺點避咆,適用于不同的業(yè)務(wù)場景,比如在大多數(shù)互聯(lián)網(wǎng)應(yīng)用場景下修噪,用戶數(shù)往往大于物品數(shù)查库,如果通過計算用戶相似度方式的話,存儲用戶相似矩陣的開銷會特別大黄琼,而且很難跟上用戶快速增長的速度樊销,所以大廠在早期的時候很少使用 UserCF 算法,而是選用 ItemCF 算法實現(xiàn)其最初的推薦系統(tǒng),因為 Item 相對 User 來說比較穩(wěn)定一些围苫,那 UserCF 那不就沒什么用啦裤园?其實不然,UserCF 是基于用戶的相似度進行推薦的剂府,所以其本身具備很強的社交特性拧揽,用戶能快速知道與自己興趣相似的人最近都在關(guān)注些什么,這樣的特點使其非常適用于新聞推薦場景腺占,因為新聞本身的興趣點往往是分散的淤袜,新聞的及時性、熱點性往往是更重要的衰伯,所以 UserCF 適用于發(fā)現(xiàn)熱點铡羡,以及跟蹤熱點的趨勢。而 ItemCF 更適用于興趣變化較為穩(wěn)定的應(yīng)用意鲸。
無論是 ItemCF烦周,還是 UserCF,其實使用他們的條件是比較苛刻的临扮,一方面這類算法主要適用于評分類型的數(shù)據(jù)论矾,這類數(shù)據(jù)的收集代價其實是非常高的,因為評分杆勇、點贊行為處于用戶行為軌跡的最后一個環(huán)節(jié)上贪壳,用戶往往還沒有走到這步就流失掉了;其次用戶和物品之間的交互行為其實是特別少的蚜退,比如一個用戶最多可能只會和成千上百萬個物品中的幾十個物品有交集闰靴,所以當(dāng)我們構(gòu)建用戶物品共現(xiàn)矩陣時,會出現(xiàn)大量的稀疏矩陣問題钻注,導(dǎo)致計算的相似度不準確蚂且。為了解決稀疏共現(xiàn)矩陣問題,增強模型的泛化能力幅恋,從協(xié)同過濾衍生出矩陣分解模型(Matrix Factorization杏死,MF),并發(fā)展出矩陣分解的各分支版本捆交。
由于矩陣分解還是基于用戶物品共現(xiàn)矩陣淑翼,所以矩陣分解還是屬于協(xié)同過濾算法,業(yè)界有另外一個名字 Model Based CF品追,而之前的 UserCF玄括、ItemCF 被統(tǒng)一稱為 Memory Based CF。其實當(dāng)推薦系統(tǒng)走到了矩陣分解模型這個階段肉瓦,才漸漸有了一點機器學(xué)習(xí)的味道遭京,之前 Memory Based CF 相關(guān)的算法只是從統(tǒng)計的角度計算相似度而已胃惜,并不能算是入了機器學(xué)習(xí)的門檻,但是憑借其解釋性高哪雕、算法簡單船殉、速度快等特性至今仍然被廣泛的應(yīng)用在現(xiàn)代推薦系統(tǒng)的召回階段,而 Model Based CF 相關(guān)的算法在成百上千億級數(shù)據(jù)量和實時性的要求下在工業(yè)界很少被使用热监,但其解決問題的思想已經(jīng)影響了后續(xù)的很多模型捺弦,依然值得我們回味。
Memory Based CF 相關(guān)的算法還有一個缺陷孝扛,就是對熱門的物品具有很強的頭部效應(yīng)列吼,容易和大量物品產(chǎn)生相似性,而尾部物品由于特征向量稀疏苦始,很少和其它物品產(chǎn)生相似性寞钥,所以很難被推薦,泛化能力比較弱陌选,矩陣分解加入了隱向量的概念(這一點和深度學(xué)習(xí)中的 Embedding 向量是完全類似的)在一定程度上彌補了 Memory Based CF 模型處理稀疏矩陣不足的問題理郑。在矩陣分解算法框架下,用戶物品共現(xiàn)矩陣被分解為 k 維的用戶咨油、物品隱向量您炉,我們之后可以將用戶、物品隱向量進行內(nèi)積得到用戶對物品的感興趣程度役电,從而進行推薦赚爵。k 的大小決定了隱向量表達能力的強弱,k 取值越小法瑟,隱向量包含的信息越少冀膝,模型的泛化程度越高,反之霎挟,k 越大窝剖,隱向量的表達能力越強,但方法能力程度相對降低酥夭。
進行矩陣分解主要方法有幾種:
- 特征值分解(Eigen Decomposition)
- 基于梯度下降(Gradient Descent)的奇異值分解(Singular Value Decomposition
- 基于最小二乘反復(fù)迭代的 ALS(Alternating Least Square)
特征值分解方法要求必須是方陣赐纱,只適用于數(shù)學(xué)老師留的那種一解就是兩三頁的課后作業(yè),顯然不適用于分解用戶物品矩陣熬北。
原始的奇異值分解方法要求原始的共現(xiàn)矩陣是稠密的千所,需要對缺失值進行填充,很依賴經(jīng)驗值蒜埋,而且計算復(fù)雜度高到了 的級別,不適用于解決大規(guī)模稀疏矩陣的矩陣分解問題最楷。因此后面提出的 Funk-SVD 以及后續(xù)算法主要把梯度下降法作為進行矩陣分解的主要方法整份,先隨機初始化用戶矩陣 q 和物品矩陣 p待错,然后將兩矩陣相乘并與真實共現(xiàn)矩陣作差得到損失函數(shù),然后分別對 q 和 p 求偏導(dǎo)烈评,再更新用戶矩陣和物品矩陣直到收斂為止火俄。
ALS 和梯度下降的方式類似,不過每次迭代只對 q 或者 p 求偏導(dǎo)進行更新讲冠,比如先固定 q 得到誤差后對 p 求偏導(dǎo)進行更新瓜客,在下一次迭代的時候再固定 p 對 q 求偏導(dǎo)進行更新,從而達到“交替”的效果(想想這個和 GAN 的訓(xùn)練方式類似竿开,你品谱仪,你細品),比較適合稀疏的場景否彩,所以與 SVD 相比疯攒,ALS 能有效的解決過擬合問題,而且可拓展性也高于 SVD列荔,同時速度比梯度下降的方式快敬尺,并行度高,ALS-WR 還能處理用戶對物品的隱式反饋贴浙,這也是為什么很多分布式機器學(xué)習(xí)框架比如 Spark Mllib 關(guān)于協(xié)同過濾的算法只有 ALS 的原因之一砂吞。
上面介紹到的矩陣分解方法只用到了用戶對物品的評分信息,由于用戶評分標準的差異性以及物品本身不同的特點崎溃,模型存在很多偏置信息蜻直,后續(xù)基于矩陣分解的改進模型也主要是關(guān)注在如何減少這部分偏置信息上,比如引進用戶的平均分笨奠、物品平均分袭蝗、整體平均分甚至增加歷史行為、考慮時間因素等般婆,比如 SVD++等系列的算法到腥。
但無論怎么改進,矩陣分解的方法受到了很多限制因素導(dǎo)致至今很少被使用蔚袍,除了前面提到的用于分解的數(shù)據(jù)獲取代價大之外乡范,矩陣分解只能使用這部分局部的信息,很難加入用戶啤咽、物品晋辆、上下文等相關(guān)特征,導(dǎo)致大量信息的丟失宇整,同時在缺乏用戶歷史行為時瓶佳,無法進行有效的推薦,也就是冷啟動問題鳞青。為了解決這些問題霸饲,邏輯回歸模型及其后續(xù)發(fā)展的因子分解機模型为朋,憑借其天然融合不同特征的能力,逐漸在推薦系統(tǒng)領(lǐng)域得到更廣泛的應(yīng)用厚脉。
在步入邏輯回歸算法簇之前习寸,需要額外補充一點,基于相似度推薦的方法除了協(xié)同過濾算法簇以外傻工,還在基于內(nèi)容的推薦算法上特別盛行霞溪,基于內(nèi)容的推薦算法邏輯和 Memory Based CF 的邏輯幾乎一致,主要的區(qū)別在于使用的數(shù)據(jù)不同中捆,Memory Based CF 只使用用戶和物品的交互數(shù)據(jù)鸯匹,當(dāng)企業(yè)發(fā)展到一定階段之后自然而然的就積累了這些數(shù)據(jù),使用起來也特別方便轨香。而基于內(nèi)容的推薦使用的是用戶或者物品的描述性數(shù)據(jù)忽你,大部分情況下直接依賴于用戶畫像或者物品畫像,雖然基于內(nèi)容的推薦在數(shù)據(jù)獲取上非常方便臂容,但從采集到的的原始數(shù)據(jù)到可以直接使用的畫像數(shù)據(jù)這個過程需要大量的數(shù)據(jù)處理工作科雳,比如為了構(gòu)建用戶或者物品畫像,除了一些基本屬性之外脓杉,我們需要利用自然語言處理技術(shù)甚至計算機視覺處理相關(guān)技術(shù)從評論糟秘、圖片、視頻內(nèi)容中抽取中關(guān)鍵信息球散,為用戶或者物品打上標簽尿赚。這部分數(shù)據(jù)在后續(xù)的大部分模型中都可以被用到,甚至起了關(guān)鍵性的作用蕉堰,畢竟數(shù)據(jù)是機器學(xué)習(xí)模型的天花板凌净,模型只是無限逼近這個天花板而已。所以工業(yè)界的同行們花費了大量的精力在用戶屋讶、物品內(nèi)容提取上冰寻,從而構(gòu)建成千上百萬的標簽體系,構(gòu)造千億維的訓(xùn)練數(shù)據(jù)皿渗。拋開生成的畫像數(shù)據(jù)來講斩芭,基于內(nèi)容的推薦和 Memory Based CF 一樣,目前被廣泛的引用在推薦系統(tǒng)的召回階段乐疆。
融合多種特征的邏輯回歸模型
前面提到相比協(xié)同過濾模型僅僅利用用戶物品共現(xiàn)矩陣進行推薦划乖,邏輯回歸可以綜合利用用戶、物品挤土、上下文等多種不同的特征琴庵,訓(xùn)練更為全面的模型。在深度學(xué)習(xí)模型流行之前,能夠進行多特征融合的邏輯回歸模型曾在很長一段時間里是推薦系統(tǒng)细卧、計算廣告界的主要選擇之一尉桩,憑借其強大的數(shù)學(xué)含義支撐、高度可解釋性贪庙、模型簡單、易于并行化翰苫、訓(xùn)練開銷小等優(yōu)勢止邮,至今被廣泛用在離線排序和在線服務(wù)上。
邏輯回歸不同于協(xié)同過濾預(yù)測用戶對物品的喜好程度奏窑,而是將推薦問題看成一個分類問題导披,通過預(yù)測正樣本的概率值,從而對物品排序埃唯,再進行推薦撩匕,預(yù)測用戶是否會對某個物品進行點擊,所以將推薦問題轉(zhuǎn)換為一個點擊率預(yù)估問題墨叛。
邏輯回歸常用的訓(xùn)練方法主要有梯度下降法止毕、牛頓法、擬牛頓法等漠趁,其中梯度下降法用的最廣泛扁凛。邏輯回歸作為廣義線性模型的一種,它假設(shè)應(yīng)變量 y 服從伯努利分布闯传。
從而由似然估計原理得到邏輯歸回的目標函數(shù)谨朝,再通過求對數(shù)將一個求最大值的問題轉(zhuǎn)換為求極小值的問題。
接著通過對每個參數(shù)求偏導(dǎo)甥绿,得到梯度方向字币,從而進行模型參數(shù)的更新」猜疲可以看到整個計算過程體現(xiàn)了最優(yōu)化理論最樸素的思想洗出。
模型訓(xùn)練后的參數(shù)分別代表了各特征對最終點擊與否結(jié)果所占的權(quán)重,從而使模型具有極強的可解釋性骄呼,算法工程師可以輕易地根據(jù)權(quán)重的不同共苛,解釋哪些特征更重要,在預(yù)測結(jié)果有偏差時準確定位出哪些因素影響了最后的結(jié)果蜓萄,特別是在和市場運營同時合作時隅茎,能大大降低溝通成本。
邏輯回歸作為一個基礎(chǔ)模型嫉沽,有簡單辟犀、直觀、易用的優(yōu)良特性绸硕,但是其表達能力不強堂竟,也沒辦法進行特征交叉魂毁、特征篩選等一系列高級的操作,從而導(dǎo)致某些有效信息的損失出嘹,甚至有時不只是信息損失的問題席楚,還可能出現(xiàn)辛普森悖論的現(xiàn)象。早期解決這個問題的方法税稼,主要還是通過算法工程師先手工組合特征烦秩,再通過各種分析手段篩選出重要特征的方法(類似咱們 Inception 中常用到的先發(fā)散再收斂的方法)來增加邏輯回歸的擬合能力,這種方法的效率非常低郎仆,而且非常依賴工程師的經(jīng)驗只祠,通常無法找到最優(yōu)的特征組合。
自動特征交叉的探索
因此后面提出的 PLOY2 模型企圖通過兩兩特征“暴力”組合的方式進行特征的組合扰肌。
想象很美好抛寝,但現(xiàn)實很骨感。計算廣告領(lǐng)域的數(shù)據(jù)和計算機視覺曙旭、語音盗舰、自然語言處理有一個很大的區(qū)別在于數(shù)據(jù)的稀疏性,因為在處理互聯(lián)網(wǎng)數(shù)據(jù)時夷狰,我們通常會先采用 one-hot 的編碼方式處理類別型的數(shù)據(jù)岭皂,PLOY2 的特征組合方式無疑近一步的增加了數(shù)據(jù)稀疏性,從而導(dǎo)致大量的權(quán)重由于樣本缺失無法進行有效的訓(xùn)練沼头,比如數(shù)據(jù)的稀疏導(dǎo)致大量的為 0爷绘,所以等于 0 的概率會跟大,導(dǎo)致沒有足夠的樣本來支持的更新进倍,無法收斂土至。其次權(quán)重參數(shù)的數(shù)量也由 n 變成了,增加了訓(xùn)練復(fù)雜度猾昆,種種缺陷表明 POLY2 這種方法就只能出現(xiàn)在學(xué)術(shù)論文上陶因,在工業(yè)界根本無法使用。
為了解決 POLY2 模型的缺陷問題垂蜗,Rendle 提出了 FM 模型楷扬。既然 POLY2 的參數(shù)太多了,模型太復(fù)雜了贴见,那就降低模型的復(fù)雜性烘苹,將級別的權(quán)重參數(shù)數(shù)量降低到級別,極大的降低了訓(xùn)練開銷片部;既然數(shù)據(jù)會遇到稀疏性的問題镣衡,那么就換種方法來取代權(quán)重,比如使用兩個向量內(nèi)積的方式替代權(quán)重;同時參考矩陣分解中為每個用戶廊鸥、物品學(xué)習(xí)一個隱因子向量的方式望浩,F(xiàn)M 模型為每個特征學(xué)習(xí)了一個隱權(quán)重向量,在特征交叉的時候惰说,直接使用兩個特征向量的內(nèi)積作為交叉特征的權(quán)重磨德。
相比于 POLY2,雖然 FM 雖然參數(shù)減少了助被,學(xué)習(xí)能力減弱了剖张,但是泛化能力大大提高了,也解決了之前需要人工組合特征的困擾揩环。而且在工程方面,F(xiàn)M 模型同樣可以用梯度下降法進行學(xué)習(xí)幅虑,不失實時性和靈活性丰滑,即使是在現(xiàn)在,也有很多將深度神經(jīng)網(wǎng)絡(luò)和 FM 結(jié)合起來作為線上排序模型的應(yīng)用(比如 DeepFM倒庵,XDeepFM 等)褒墨,由此可以看到 FM 模型帶來的影響有多遙遠,可以說從 2012 到 2014 年前后擎宝,F(xiàn)M 模型代替邏輯回歸成為了最主流的模型郁妈。
既然 FM 模型的學(xué)習(xí)能力有限,那為什么不想辦法提升一下呢绍申,于是 2015 年出廠的 FFM 模型在 FM 的基礎(chǔ)上引入了特征域感知(field-aware)概念噩咪,加強模型的表達能力。
FFM 和 FM 的區(qū)別在于特征的隱向量不再是唯一的一個隱向量极阅,而是一組隱向量胃碾。比如,當(dāng)特征與特征進行特征交叉時筋搏,F(xiàn)M 模型會直接對兩個特征的隱向量進行內(nèi)積仆百,而 FFM 模型會從特征的隱向量組中挑選出與特征的域對應(yīng)的隱向量進行交叉,同理特征也會用與特征的域對應(yīng)的隱向量進行交叉奔脐。
這里提到的域代表特征域俄周,域內(nèi)的特征一般是采用 one-hot 編碼方式形成的 one-hot 特征向量,比如說性別髓迎,品牌等峦朗。相比于 FM,F(xiàn)FM 引入了特征域的概念竖般,因為引入更多有價值的信息甚垦,所以模型的表達能力更強,但并不能說 FFM 一定就比 FM 好,F(xiàn)FM 在提高學(xué)習(xí)能力的同時也增加了計算復(fù)雜度艰亮,所以在實際工程應(yīng)用中闭翩,需要在模型效果和工程投入之間進行權(quán)衡,比如也有人結(jié)合 FM 和 FFM 的特點提出了雙向 FFM(Bilinear-FFM)迄埃,計算復(fù)雜度和參數(shù)量介于 FM 和 FFM 之間疗韵,而核心思想也比較簡單,既然 FFM 相對于 FM 來講參數(shù)量上升了一個等級侄非,那就降低參數(shù)量嘛蕉汪,怎么降低呢,共享參數(shù)就是一個很好的思路(從全連接網(wǎng)絡(luò)到卷積神經(jīng)網(wǎng)絡(luò)不也是這個套路么)逞怨,即將替換為的方式達到降低參數(shù)減少復(fù)雜度的目的者疤。
理論上,F(xiàn)M 模型簇可以利用特征交叉的思想進行三階叠赦、四階甚至更高階的特征交叉驹马,但是受到組合爆炸問題的限制,實際工程中很難實現(xiàn)更高階的特征交叉除秀,現(xiàn)代計算機很難大面積的支撐這么高的計算復(fù)雜度糯累,所以 FM 的思想存在特征交叉的瓶頸。貌似 FM 的思想就已經(jīng)走到盡頭了册踩,有沒有什么其它方法可以解決這個問題泳姐?比如我們可不可以用多個模型組合達到高階特征組合篩選的效果呢?答案是肯定的暂吉,F(xiàn)acebook 提出的利用 GBDT 自動進行特征篩選和組合胖秒,生成離散特征向量,作為 LR 模型輸入的思想可謂是打開了計算廣告領(lǐng)域的另一扇窗借笙,我們可以看到當(dāng)今很多主流模型都采用了這種思想扒怖,比如既然 GBDT 可以和 LR 組合,那我也可以把 DNN 和 LR 組合啊业稼,于是家喻戶曉的 Deep & Wide 就產(chǎn)生了盗痒;既然前面提供 FM 的效果比 LR 好,那我也可以將 DNN 和 FM/FFM 組合啊低散,于是 DeepFM 系列的算法就誕生了俯邓,而且組合的方式還被大家玩出了新花樣,可以并行組合熔号、串行組合稽鞭、交叉組合,甚至把可以將樹模型里面的每一個節(jié)點替換為 DNN引镊,可以看到模型組合的思想一旦被打開了缺口就一發(fā)不可收拾朦蕴,當(dāng)然模型組合這門手藝也不是什么新技術(shù)篮条,都是在其它領(lǐng)域玩爛的手法。
GBDT 是由多棵決策樹組成的樹林吩抓,和隨機森林中每棵樹相互獨立不同涉茧,GBDT 中的后一棵樹以前面樹林的結(jié)果與真實結(jié)果的殘差為擬合目標,多層節(jié)點的結(jié)構(gòu)對特征進行了有效的自動組合疹娶,非常高效地解決了過去棘手的特征選擇和特征組合的問題伴栓。在特征轉(zhuǎn)換過程中,一個訓(xùn)練樣本在輸入 GBDT 的某一顆子樹后雨饺,會根據(jù)節(jié)點的規(guī)則落在某一個葉子節(jié)點上钳垮,那么這個葉子節(jié)點的輸出值為 1,其它葉子節(jié)點的輸出值為 0额港,所有子樹葉子節(jié)點的輸出值作為 LR 的輸入向量饺窿。每棵樹的深度決定了特征交叉的階數(shù),比如決策樹的深度為 4移斩,那么就會經(jīng)過 3 次分裂短荐,最終葉子節(jié)點的輸出向量就是三階特征組合的結(jié)果,這個組合能力不是 FM 系的模型所具備的叹哭,但也不能說 GBDT+LR 一定比 FM 好,因為 GBDT 容易過擬合痕貌,而且 GBDT 的組合方式實際上丟失了大量特征的數(shù)值信息风罩,所以在模型選擇調(diào)試上,需要綜合多種因素考慮舵稠。
值得一提的是 GBDT+LR 組合模型的提出超升,意味著特征工程可以完全交給獨立的模型來完成,不必在特征工程上投入過多的精力哺徊,實現(xiàn)真正的端到端訓(xùn)練室琢,這個思想也是現(xiàn)在 AutoML 特征工程的一個主流實現(xiàn)思想,同時組合模型可以分階段更新落追,比如大部分公司在引用 GBDT+LR 時盈滴,可以以天級別更新 GBDT,實時更新 LR轿钠。
在步入深度學(xué)習(xí)模型之前巢钓,除了上面提到的模型以外,還有一個由阿里提出的影響力比較大的傳統(tǒng)的大規(guī)模分段線性模型(Large Scale Piece-wise Linear Model)值得一提疗垛,LS-PLM 又稱 MLR(Mixed Logistic Regression)症汹,它在邏輯回歸的基礎(chǔ)上采用分治的思路,先對樣本進行分片贷腕,然后再對樣本分片中應(yīng)用邏輯回歸進行 CTR 預(yù)估背镇,也就是在邏輯回歸的基礎(chǔ)上加上了聚類的思想咬展,也算是一種廣義的組合模型。這個模型的靈感來自對廣告推薦領(lǐng)域樣本特點的觀察瞒斩,比如在預(yù)測女性是否點擊女裝廣告時破婆,男性用戶點擊體育類廣告的樣本數(shù)據(jù)和女性購買女裝的廣告場景毫無相關(guān)性,甚至還會在模型訓(xùn)練過程中干擾相關(guān)特征的權(quán)重济瓢。所以為了讓 CTR 模型對不同用戶群體荠割、不同使用場景有針對性,可以先對全量樣本進行聚類旺矾,再用邏輯回歸對每個分類進行預(yù)估蔑鹦。
上述公式中超參數(shù)(分片數(shù))m 可以較好的平衡模型的推廣和擬合能力,當(dāng) m=1 時箕宙,其實就是標準的邏輯回歸嚎朽,m 越大,模型的擬合能力越強柬帕。在真實實踐中哟忍,阿里根據(jù)自己的數(shù)據(jù)給 m 的推薦經(jīng)驗值為 12。
LS-PLM 雖然在 2017 年才被公之于眾陷寝,但實際上早在 2012 年的時候就已經(jīng)成為阿里用于推薦的主流模型了激挪,也就是在深度學(xué)習(xí)才開始逐漸爆發(fā)的時候奏黑。值得一提的是 LS-PLM 的結(jié)構(gòu)與三層神經(jīng)網(wǎng)絡(luò)極其相似,已經(jīng)有一點深度學(xué)習(xí)的味道了,LS-PLR 通過樣本分片的能力吆倦,能挖掘出數(shù)據(jù)中蘊藏的非線性模式疆偿,與神經(jīng)網(wǎng)絡(luò)通過非線性激活函數(shù)鄙皇,SVM 通過核函數(shù)將一個非線性問題通過轉(zhuǎn)換空間的形式達到線性可分的效果相似播玖,大家的目的一致,只是各自的手段不同而已咖耘。同時 LS-PLM 在建模時引入了 L1 范數(shù)翘簇,從而使最終訓(xùn)練出來的模型具有較高的稀疏性,使模型的部署更加輕量級儿倒,在模型服務(wù)過程中只需要使用權(quán)重非零特征版保,大大的提升了模型推理的效率。
LS-PLM 的影響力如此之大的另外一個因素在于如果我們從深度學(xué)習(xí)的思路回頭去看 LS-PLM 模型义桂,可以把它看成是一個加了注意力(Attention)機制的三層神經(jīng)網(wǎng)絡(luò)模型找筝,樣本特征向量作為輸入層,中間層是由 m 個神經(jīng)元組成的隱藏層慷吊,以及用于 CTR 預(yù)估的單一神經(jīng)元組成的輸出層袖裕,在隱藏層和輸出層之間,神經(jīng)元的權(quán)重是由分片函數(shù)算出的注意力得分來確定的溉瓶,即樣本屬于哪個分片的概率急鳄。當(dāng)然在具體的實現(xiàn)上還是和經(jīng)典的深度學(xué)習(xí)模型有有所區(qū)別谤民,但這種注意力機制在阿里后續(xù)提出的模型中幾乎成了標配,比如 DIN疾宏、DIEN张足、ESMM 等。
最后我們簡單總結(jié)一下傳統(tǒng)推薦模型的演進史坎藐,雖然他們被冠以傳統(tǒng)之名为牍,但仍然在現(xiàn)階段的推薦系統(tǒng)架構(gòu)中發(fā)光發(fā)熱,比如現(xiàn)在推薦系統(tǒng)的召回階段需要采用一些簡單快速的模型從海量的候選集中召回一部分候選集岩馍,對模型的計算性能要求比較高碉咆,精度要求低,非常適合這些這些傳統(tǒng)的推薦模型蛀恩。
模型名稱 | 基本原理 | 特點 | 局限性 |
---|---|---|---|
協(xié)同過濾 | 根據(jù)用戶的歷史行為構(gòu)造用戶-物品貢獻矩陣疫铜,再計算以及利用用戶、物品相似度進行推薦 | 原理簡單双谆、直接壳咕,應(yīng)用廣泛 | 泛化能力差,處理稀疏矩陣能力差顽馋,頭部效應(yīng)明顯谓厘,容易越推越窄 |
矩陣分解 | 將協(xié)同過濾中的共現(xiàn)矩陣分解為用戶矩陣和物品矩陣,利用用戶和物品隱向量的內(nèi)積進行排序推薦 | 相比協(xié)同過濾泛化能力和對稀疏性矩陣的處理能力有所加強 | 只能使用用戶歷史數(shù)據(jù)寸谜,比較難以利用用戶庞呕、物品的特征屬性數(shù)據(jù)和一些上下文特征信息 |
邏輯回歸 | 將推薦問題轉(zhuǎn)化為類似 CTR 預(yù)估的二分類問題,將用戶程帕、物品、上下文信息輸入邏輯回歸模型后得到 CTR地啰,根據(jù) CTR 預(yù)估進行排序推薦 | 模型簡單愁拭、直觀、易用亏吝、解釋能力強 | 不具備自動特征組合能力岭埠,需要人工構(gòu)造特征,代價大蔚鸥,表達能力比較差 |
FM | 在邏輯回歸的基礎(chǔ)上加入了二階特征交叉部分惜论,為每一維特征訓(xùn)練一個隱向量,通過特征間隱向量的呢川籍運行得到交叉特征的權(quán)重 | 相比邏輯回歸具備了二階特征交叉組合能力止喷,表達能力變強 | 受組合爆照問題的限制馆类,沒法做到三階甚至更高階的特征組合 |
FFM | 在 FM 的基礎(chǔ)上,加入特征域的概念弹谁,每個特征在于不同域特征交叉組合時采用不同的隱向量 | 相比 FM乾巧,進一步加強了特征交叉的能力 | 模型訓(xùn)練的開銷達到了級別句喜,訓(xùn)練開銷大 |
GBDT+LR | 利用 GBDT 自動化的特征組合,將原始特征向量進行多階組合后的離散特征向量輸入邏輯回歸得到最終的 CTR 分數(shù)沟于,再進行排序推薦 | 特征工程模塊化咳胃,是模型具備了更高階特征組合的能力 | GBDT 沒法進行完全的并行訓(xùn)練,訓(xùn)練時間比較長 |
LS-PLM | 先對樣本分片旷太,然后在每個分片上構(gòu)建邏輯回歸模型展懈,最后將樣本每個分片的概率和邏輯回歸的得分進行加權(quán)平均,再根據(jù)加權(quán)平均數(shù)排序推薦 | 模型結(jié)構(gòu)類似三層神經(jīng)網(wǎng)絡(luò)供璧,具備較強的表達能力 | 相對于深度學(xué)習(xí)模型還比較簡單存崖,還有很大的提升空間 |
我們再回頭來看看,在深度學(xué)習(xí)正式應(yīng)用到推薦模型之前嗜傅,傳統(tǒng)推薦模型的演進旅程金句。矩陣分解的技術(shù)在 2006 年成功的運用在推薦系統(tǒng)領(lǐng)域,其隱向量的思想與深度學(xué)習(xí)中的 Embedding 技術(shù)的思路一脈相承吕嘀;2010 年提出的 FM 將特征交叉引入到推薦系統(tǒng)中违寞,其特征交叉的核心思想被深度學(xué)習(xí)模型發(fā)揚光大;阿里在 2012 大規(guī)模使用的 LS-PLM 在結(jié)構(gòu)上已經(jīng)非常接近三層神經(jīng)網(wǎng)絡(luò)了偶房;Facebook 在 2014 年提出的 GBDT 自動化特征工程趁曼,揭開了特征工程模型化的篇章,這些概念延續(xù)到深度學(xué)習(xí)中棕洋,直到 2016 年挡闰,隨著 Deep & Wide、FNN掰盘、Deep Crossing 等一大批優(yōu)秀的深度學(xué)習(xí)推薦模型的提出摄悯,深度學(xué)習(xí)模型席卷推薦廣告領(lǐng)域,成為新一代推薦模型的核心愧捕,我們會在后續(xù)的文章中帶來更多的探討奢驯。
參考閱讀: