機(jī)器學(xué)習(xí)是我們?cè)?Spotify 所做一切的核心所在。特別是在 Spotify 的主頁(yè)面上,它使我們能夠提供個(gè)性化的用戶體驗(yàn),并為數(shù)十億粉絲提供欣賞藝術(shù)家作品并從中獲得啟發(fā)的機(jī)會(huì)。這就是 Spotify 的獨(dú)到之處。
在我們的工程部門,我們正在努力聯(lián)合自主團(tuán)隊(duì),通過建立工具和方法上的最佳實(shí)踐來提升工作效率。我們最近采用的標(biāo)準(zhǔn)化機(jī)器學(xué)習(xí)基礎(chǔ)架構(gòu)為我們的工程師提供了能夠快速創(chuàng)建和迭代模型的環(huán)境和工具。我們稱其為 “鋪平道路” 方法,其中包括利用 TensorFlow,Kubeflow 和 Google Cloud Platform 的服務(wù)。
加入 Spotify 之前,我曾在 Netflix 從事個(gè)性化算法和主頁(yè)面內(nèi)容的工作。我以前的經(jīng)驗(yàn)與現(xiàn)在我在 Spotify 擔(dān)任工程副總裁兼機(jī)器學(xué)習(xí)負(fù)責(zé)人的工作非常相似。但是,個(gè)性化 Spotify 的主頁(yè)面會(huì)帶來一系列新的挑戰(zhàn),我將稍后分享。
機(jī)器學(xué)習(xí)使我們能夠推薦藝術(shù)家,歌單和播客,從而使用戶變得更佳活躍并更有可能長(zhǎng)期訂閱。理論上這些都很棒,但是怎樣能使我們比競(jìng)爭(zhēng)對(duì)手做得更好呢?畢竟,我們并不是唯一一家試圖構(gòu)建定制化著陸頁(yè),以其獨(dú)特價(jià)值吸引用戶的內(nèi)容流媒體平臺(tái)。
Spotify 的主頁(yè)面
答案:個(gè)性化的力量
與 Netflix 一樣,我們使用一系列的卡片和架子來組織主頁(yè)面。卡片是用來展示歌單,播客,專輯,藝術(shù)家頁(yè)面等內(nèi)容的方形圖像。架子是用來將這些卡片打包并排成一行。您可以將它想象為一個(gè)書櫥(Spotify 主頁(yè)面)在使用書架(架子)來保存和展示圖書(卡片)。
以此類推,每個(gè)人的書架都會(huì)根據(jù)他們的興趣和閱讀歷史來進(jìn)行特別的布置。但是,與實(shí)體書架不同,Spotify 使用機(jī)器學(xué)習(xí)根據(jù)用戶之前喜歡或可能喜歡的內(nèi)容來個(gè)性化架子和卡片,并向數(shù)百萬用戶個(gè)性化地展示。
我們將機(jī)器學(xué)習(xí)與用戶的數(shù)據(jù)相結(jié)合,包括他們的播放歷史、音樂口味、播放時(shí)長(zhǎng)以及他們對(duì)推薦內(nèi)容的喜好程度。這樣的結(jié)合使得我們擁有了高級(jí)別的個(gè)性化能力,能夠?qū)崟r(shí)創(chuàng)建個(gè)性化主頁(yè)面滿足多達(dá) 2.48 億月活躍用戶 (MAU, Monthly Active Users) 的需求。我們要說的是,并沒有“一個(gè)”真正的 Spotify。實(shí)質(zhì)上,該產(chǎn)品有 2.48 億個(gè)版本,每個(gè)用戶都在使用專屬于他們的獨(dú)特版本!
卡片和架子
參與度與基于研究的推薦
從機(jī)器學(xué)習(xí)的角度來看,我們使用 Multi-Armed Bandit 作為框架解決利用與探索的難題。在工程領(lǐng)域之外,“利用”可能具有負(fù)面含義。但是,在制造個(gè)性化內(nèi)容體驗(yàn)的推薦系統(tǒng)中,“利用”表示應(yīng)用程序會(huì)根據(jù)用戶先前選擇的音樂或播客提供推薦內(nèi)容。“探索”通過推薦未知內(nèi)容,根據(jù)用戶與推薦內(nèi)容的互動(dòng)反饋以進(jìn)一步了解用戶的喜好。“利用”與“探索”大不相同,后者基于不確定的用戶參與度,并且更多的被用作研究工具。這種平衡框架確保我們?cè)诿鎸?duì)無論是新用戶還是老用戶都能實(shí)現(xiàn)個(gè)性化設(shè)置。我們還采用反事實(shí)訓(xùn)練和推理來評(píng)估我們的算法,而無需 A/B 測(cè)試或隨機(jī)實(shí)驗(yàn)。
利用與探索
https://dl.acm.org/doi/10.1145/3240323.3240354
借助來自用戶的數(shù)據(jù),我們得以呈現(xiàn)您喜歡的內(nèi)容,這些數(shù)據(jù)包括最近播放的專輯,反復(fù)播放的曲目和訂閱的播客等。同時(shí),我們會(huì)根據(jù)收聽歷史記錄推薦新的曲目和藝術(shù)家。這些曲目打包成歌單的形式,例如歌單“更加喜歡”,“為您推薦”和“為您定制”。盡管主界面看起來自然且連續(xù),但是您看到的幾乎所有內(nèi)容都是由“利用與探索” (Exploitation and Exploration) 方法生成的。
當(dāng)然,只有在不間斷地使用大量數(shù)據(jù)進(jìn)行實(shí)驗(yàn)時(shí),此方法才有效。為了讓您直觀地感受到規(guī)模上的差別,我們?cè)俅螌?Spotify 主頁(yè)面與 Netflix 的主頁(yè)面進(jìn)行比較。兩個(gè)主頁(yè)面都有相似的設(shè)置和挑戰(zhàn),對(duì)嗎?不完全對(duì)。最大的區(qū)別在于用戶和內(nèi)容數(shù)據(jù)的規(guī)模大小,隨之而來的便是我們必須擴(kuò)展機(jī)器學(xué)習(xí)的規(guī)模以匹配如此大規(guī)模的需求。
數(shù)字說明了一切。Netflix 擁有約 1.58 億用戶,在 Spotify,我們有 2.48 億用戶。最重要的是,Netflix 在所有地區(qū)共計(jì)擁有約 5,800 部電影和節(jié)目,而 Spotify 卻擁有超過 5,000 萬首音樂曲目和 500,000 個(gè)播客電臺(tái)。
還要注意的是,單集 Netflix 的內(nèi)容的時(shí)長(zhǎng)是從半小時(shí)(類似于情景喜劇)到長(zhǎng)達(dá)幾個(gè)小時(shí)(電影)。而 Spotify 上面的一支曲目的典型時(shí)長(zhǎng)大概是三分半鐘。考慮到需要索引的內(nèi)容數(shù)據(jù)的頻率和數(shù)量,這會(huì)導(dǎo)致在規(guī)模上的巨大差異。
結(jié)果呢?就是我們需要一個(gè)高度可擴(kuò)展的環(huán)境,讓我們可以運(yùn)行大量、不間斷的實(shí)時(shí)實(shí)驗(yàn),從而使我們能夠更好地利用我們的數(shù)據(jù),為聽眾提供出色的體驗(yàn)。
從脆弱到牢不可破
在 Spotify 成立之初,我們編寫了許多自定義資料庫(kù)和 API,以推動(dòng)我們的個(gè)性化工作背后的機(jī)器學(xué)習(xí)算法。這向機(jī)器學(xué)習(xí)團(tuán)隊(duì)提出了一些挑戰(zhàn)。在嘗試擴(kuò)展我們的機(jī)器學(xué)習(xí)實(shí)踐時(shí),支持多個(gè)系統(tǒng)對(duì)于我們的工程師而言并不是理想的維護(hù)方式,并且與我們當(dāng)前為提高工程師生產(chǎn)力所做的努力不符。
例如,我們需要研究 Multi-Armed Bandit 框架下的不同學(xué)習(xí)模型,包括邏輯回歸,提升樹 (Boosted Tree) 和更復(fù)雜的模型,如最新的深度神經(jīng)網(wǎng)絡(luò)體系結(jié)構(gòu)。我們一直在不斷重寫代碼,以使系統(tǒng)的各部分保持一致。完成一項(xiàng)實(shí)驗(yàn)后,留給我們的是一個(gè)有隱患而脆弱的系統(tǒng),擴(kuò)展性也很差,還需要在快速的生產(chǎn)環(huán)境中支持多個(gè)框架。在這種環(huán)境下是很難進(jìn)行迭代和創(chuàng)新的。
這就是為什么我們轉(zhuǎn)向標(biāo)準(zhǔn)化機(jī)器學(xué)習(xí)基礎(chǔ)架構(gòu)如此寶貴和及時(shí)的原因。TensorFlow Estimators 和 Tensorflow Data Validation 幫助我們最大程度地減少許多以前需要人工自定義的工作量。借助 TensorFlow Estimators,我們可以比以前更快地訓(xùn)練和評(píng)估模型,從而大大加快了迭代過程。
此外,遷移到 Kubeflow 非常有價(jià)值,因?yàn)樗鼛椭覀兏玫毓芾砉ぷ髫?fù)載,并加快實(shí)驗(yàn)和產(chǎn)出 (Roll out) 的速度。現(xiàn)在,更快的自動(dòng)訓(xùn)練顯著加速了我們的機(jī)器學(xué)習(xí)算法的訓(xùn)練過程。
使用 Tensorflow Data Validation,我們無論在開發(fā)過程中還是在評(píng)估和產(chǎn)出期間均可以發(fā)現(xiàn)數(shù)據(jù)流水線和機(jī)器流水線中的錯(cuò)誤。現(xiàn)在,借助儀表板,我們可以快速觀察到流水線中存在的任何數(shù)據(jù)缺失或不一致之處,這要?dú)w功于儀表板所繪制的不同數(shù)據(jù)集上的要素和計(jì)數(shù)的分布圖。
在一種情況下,我們看到訓(xùn)練數(shù)據(jù)中缺少付費(fèi)會(huì)員的樣本,而評(píng)估流程中缺少了免費(fèi)用戶的數(shù)據(jù)樣本。從機(jī)器學(xué)習(xí)的角度來看,丟掉這些有價(jià)值的數(shù)據(jù)集是很可怕的,所幸我們可以用 TFDV 快速捕獲它。更棒的是,我們還可以配置儀表板針對(duì)特定閾值觸發(fā)警報(bào),因此我們的工程師不必?fù)?dān)心數(shù)據(jù)流水線的錯(cuò)誤會(huì)流入系統(tǒng)。
架構(gòu)升級(jí)帶飛研發(fā)
為用戶創(chuàng)建個(gè)性化主頁(yè)的體驗(yàn)代價(jià)不菲。以前,我們的工程師花費(fèi)大量時(shí)間來維護(hù)數(shù)據(jù)和后端系統(tǒng)。后來我們使用前文提到的工具(TensorFlow Extended、Kubeflow 和 Google Cloud Platform 生態(tài)系統(tǒng))對(duì)我們的 ML 基礎(chǔ)架構(gòu)進(jìn)行標(biāo)準(zhǔn)化。ML 架構(gòu)標(biāo)準(zhǔn)化讓我們?cè)诠こ虒?shí)踐和生產(chǎn)力方面有了更好的理解。我們新近建立的最佳實(shí)踐有一個(gè)顯著優(yōu)勢(shì),即它可以幫助我們?cè)诙唐趦?nèi)大大提高用戶滿意度(對(duì)比基于流行度的基線)。
話雖如此,我們的實(shí)踐只是初出茅廬。我們決定繼續(xù)研究如何掌控機(jī)器學(xué)習(xí)與 AI 的力量,為我們的用戶提供更加個(gè)性化的體驗(yàn)。
投資技術(shù)就是投資工程師
我們對(duì)這些技術(shù)的投資也是對(duì)機(jī)器學(xué)習(xí)工程師及其生產(chǎn)力的投資。我們希望我們的工程師專注于創(chuàng)新,并在 Spotify 推動(dòng)機(jī)器學(xué)習(xí)的發(fā)展,而不是參與耗時(shí)的基礎(chǔ)架構(gòu)維護(hù)工作。我們的工程文化圍繞著盡可能高產(chǎn)和高效的原則來幫助我們繼續(xù)擴(kuò)展平臺(tái),同時(shí)也為創(chuàng)作者和消費(fèi)者創(chuàng)造了良好的用戶體驗(yàn)。
定制 Spotify 主頁(yè)面只是 Spotify 個(gè)性化的冰山一角。機(jī)器學(xué)習(xí)是一個(gè)令人興奮的創(chuàng)新領(lǐng)域,我們?nèi)栽诓粩嗯鉀Q創(chuàng)建個(gè)性化體驗(yàn)方面的挑戰(zhàn)。如果您有興趣幫助我們解決機(jī)器學(xué)習(xí)工程方面的挑戰(zhàn),歡迎查看招聘職位并加入我們的團(tuán)隊(duì)。
責(zé)任編輯:lq
-
AI
+關(guān)注
關(guān)注
87文章
30805瀏覽量
268933 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8411瀏覽量
132592 -
Spotify
+關(guān)注
關(guān)注
0文章
26瀏覽量
2661
原文標(biāo)題:案例分享 | 悅耳為君:使用機(jī)器學(xué)習(xí)對(duì) Spotify 主頁(yè)面進(jìn)行個(gè)性化設(shè)置
文章出處:【微信號(hào):tensorflowers,微信公眾號(hào):Tensorflowers】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論