多場景多任務(wù)統(tǒng)一建模在網(wǎng)易云音樂的算法實(shí)踐
一、背景介紹
多場景建模是一項(xiàng)與業(yè)務(wù)緊密結(jié)合的算法優(yōu)化工作,其核心在于思考如何處理多個(gè)業(yè)務(wù)場景之間的差異性和共性。
1. 云音樂推薦場景介紹
云音樂的核心場景包括每日推薦,每天更新 30 首歌曲,以列表形式呈現(xiàn);還有流式推薦、實(shí)時(shí)更新,和每日推薦一樣都是直接為用戶推薦歌曲;此外還有歌單推薦,包括首頁推薦歌單以及 MGC 歌單。
2. 主推薦場景差異化
這些場景特點(diǎn)各異,旨在滿足用戶不同的個(gè)性化推薦需求??梢钥吹?,在過去一段時(shí)間,這些場景一直由專人專項(xiàng)持續(xù)優(yōu)化。這樣做的優(yōu)點(diǎn)是能使模型更貼合業(yè)務(wù)場景和特點(diǎn),充分發(fā)揮模型效果,提升場景忠實(shí)用戶的體驗(yàn)。
這種做法也存在弊端。其一,長期專人專項(xiàng)優(yōu)化可能導(dǎo)致技術(shù)棧出現(xiàn)較大差異;其二,技術(shù)共享和共建節(jié)奏會(huì)被拖慢。
3. 新增場景愈多
我們面臨的挑戰(zhàn)不僅是要承接越來越多新的場景,滿足更多用戶個(gè)性化音樂訴求并帶來增量,同時(shí)還要思考如何更好地承接和持續(xù)優(yōu)化這些新場景。
4. 建模目標(biāo)
開展多場景工作的目標(biāo)主要有兩個(gè):一是用一個(gè)模型服務(wù)所有推薦場景,取得更好的效果,聯(lián)合建模用戶在任意場景消費(fèi)后產(chǎn)生的數(shù)據(jù),精準(zhǔn)建模用戶真正感興趣的底層興趣表征;二是用一個(gè)模型服務(wù)所有場景,有效降低機(jī)器成本和人力成本,提升研發(fā)效率,促進(jìn)技術(shù)共建達(dá)到更高水平。
5. 建模難點(diǎn)
第一個(gè)難點(diǎn)是雙蹺蹺板問題,由多任務(wù)蹺蹺板和多場景蹺蹺板構(gòu)成,兩者耦合時(shí)平衡難度加大。另一個(gè)難點(diǎn),可用西方故事“格力婭如何戰(zhàn)勝大衛(wèi)”來描述,即如何用一個(gè)通用的大模型打敗每個(gè)場景專有的小模型,其中難點(diǎn)眾多,將在后續(xù)介紹中詳細(xì)闡述。
二、整體框架
1. 系統(tǒng)框架
此次雖主要談及算法層面的多場景建模,但更重要的是,在算法層面之外,我們對從數(shù)據(jù)層到場景層再到頂層任務(wù)的整個(gè)系統(tǒng)框架進(jìn)行了統(tǒng)一構(gòu)建,摒棄了原先零散、不統(tǒng)一、不規(guī)范的技術(shù)及相應(yīng)數(shù)據(jù)等,在此基礎(chǔ)上構(gòu)建了統(tǒng)一的模型架構(gòu)。
2. 模型架構(gòu)
此架構(gòu)與業(yè)界現(xiàn)有的多場景建模整體架構(gòu)差異不大,但其中融入了音樂場景特有的業(yè)務(wù)特點(diǎn)以及我們的思考。例如,針對音樂推薦中老歌持續(xù)被消費(fèi)這一強(qiáng)業(yè)務(wù)特點(diǎn),我們做了很多長期多興趣的表征,并與即時(shí)性交叉且進(jìn)行動(dòng)態(tài)更新。同時(shí),我們希望將業(yè)務(wù)背后沉淀的音樂、公寓知識(shí)傳遞到更頂層,服務(wù)于水面之上的多個(gè)業(yè)務(wù)場景。
3. 整體概述
整體架構(gòu)可以概述為三個(gè)關(guān)鍵詞:自底向上、求同存異和去偽存真。求同存異是此次分享中最想強(qiáng)調(diào)的點(diǎn),因?yàn)槎鄨鼍肮ぷ鞲嗍侨绾我宰钚〈鷥r(jià)固化沉淀真正有價(jià)值的共性部分,同時(shí)以快速敏捷的方式保留差異部分,兩者有機(jī)結(jié)合才能完成多場景統(tǒng)一大模型的建設(shè)。
三、關(guān)鍵模塊
1. 統(tǒng)一模型建模
在參考了業(yè)界眾多已有的多場景建模工作后,我們完成了整體架構(gòu)的設(shè)計(jì)。對重要區(qū)域進(jìn)行了分色塊標(biāo)記,方便理解。例如,底層有藍(lán)色和黃色色塊,總體遵循公私域分離設(shè)計(jì)結(jié)構(gòu)。在公域部分,抽取多個(gè)場景共享的特征和表達(dá),黃色部分則更多是場景特有的東西??梢钥吹綀D中有多個(gè)紫塔并聯(lián),每個(gè)紫塔代表一個(gè)場景特有的知識(shí)。在其之上是常見的 MMOE 架構(gòu),用于多個(gè)場景不同目標(biāo)的多任務(wù)學(xué)習(xí)輔助。
2. 公域網(wǎng)絡(luò)設(shè)計(jì)
公域更多表達(dá)的是業(yè)務(wù)場景共有的特性、用戶公共的興趣或其長短期興趣中不變的部分。那么求同如何實(shí)現(xiàn)?這更多考驗(yàn)算法工程師面對零散業(yè)務(wù)特性和不同邏輯時(shí),如何提取公約數(shù)。這里分享四個(gè)要點(diǎn):一是通用的輸入結(jié)構(gòu);二是特征的最大公約數(shù);三是共享共建;四是輕量高效。共享共建和輕量高效可能基于團(tuán)隊(duì)文化,強(qiáng)制要求做到更好以服務(wù)大模型。在算法層面,更強(qiáng)調(diào)保留公共核心特征。這里也列舉了一些核心點(diǎn),比如通過消融實(shí)驗(yàn)找出并保留必要核心特征,能砍則砍,盡量減輕構(gòu)建大模型前的負(fù)擔(dān)。
3. 多場景效果分析
基于此思考,我們進(jìn)行了多次迭代,并及時(shí)基于 AB 測試分析以驗(yàn)證公域架構(gòu)設(shè)計(jì)的有效性。將用戶按活躍等級分為 0 - 10 級共 11 個(gè)檔次,0 級用戶最不活躍,10 級最活躍。從圖中可以看出,橫軸是各人群對應(yīng)的提升幅度,0 - 3 級提升幅度明顯最大。此數(shù)據(jù)旨在論證,通過良好的公域結(jié)構(gòu)設(shè)計(jì),能有效表達(dá)并沉淀用戶特征,使低活用戶受益更多。
4. 私域網(wǎng)絡(luò)設(shè)計(jì)
公域工作相對基礎(chǔ),而私域則較為復(fù)雜。私域的核心點(diǎn)在于保留每個(gè)場景最特殊、最有價(jià)值的部分特征,強(qiáng)調(diào)參數(shù)隔離、梯度隔離,每個(gè)塔相互不干擾,輸入特征完全不同。這些特征來源于每個(gè)場景特有的特性挖掘,例如某業(yè)務(wù)場景的封面特征或流式場景基于用戶實(shí)時(shí)反饋產(chǎn)生的信號等。
5. 場景私有網(wǎng)絡(luò) SEN
為應(yīng)對私有場景差異大的問題,設(shè)計(jì)了 SEN 場景私有網(wǎng)絡(luò)這一通用邏輯,便于接入新場景和合并老場景時(shí)提高復(fù)用率和整體迭代效率。求同存異中的求同主要是針對公域網(wǎng)絡(luò)設(shè)計(jì),而存異則是針對私域網(wǎng)絡(luò)設(shè)計(jì),主要體現(xiàn)在:一是私有場景的私有特征是不對齊的;二是某些私有特征很重要但易過擬合;三是存在分布漂移問題。我們參考了 Transformer 類的一些設(shè)計(jì),進(jìn)行組合,來解決這些問題。
6. 跨域多任務(wù)模型
接著是雙蹺蹺板問題中的多任務(wù)蹺蹺板,下圖中列舉了幾個(gè)核心場景及其面臨的任務(wù)。
基于場景特有任務(wù),我們設(shè)計(jì)了 task master 邏輯。對于有任務(wù)的場景保留梯度,對于無任務(wù)的場景通過 subgradient 方式停止梯度,避免影響對應(yīng) SEN 網(wǎng)絡(luò)的學(xué)習(xí)。這保證了多場景、多梯度之間,場景與場景、任務(wù)與任務(wù)以及場景對應(yīng)特有任務(wù)之間盡可能隔離。
7. 模型輕量化設(shè)計(jì)
在音樂推薦場景中,用戶行為序列特別是長期行為序列非常重要,引入 LSTM 加 session 切分提取用戶長期興趣特征曾帶來顯著提升,但此特征和對應(yīng)的網(wǎng)絡(luò)結(jié)構(gòu)對模型消耗大。在迭代多場景、多任務(wù)統(tǒng)一大模型時(shí),我們找到了一個(gè)相對更輕量化的方式,即層次 attention 網(wǎng)絡(luò)。
從數(shù)據(jù)對比來看,雖然層次 attention 在某個(gè)核心指標(biāo)上有輕微負(fù)向,但從全局來看是一種權(quán)衡,犧牲局部小收益換取未來全局更大的收益,提升了整體的迭代效率。
四、應(yīng)用效果
模型上線后效果顯著,核心推薦場景紅心率提升 10% 以上,眾多小場景核心指標(biāo)提升 15% 以上,直接帶動(dòng)次留相對提升 1%。模型還落地到網(wǎng)易集團(tuán)其他業(yè)務(wù),新客絕對值提升 0.2%,次留絕對值提升 0.2%。同時(shí),模型上線后替換了原有的零散和不統(tǒng)一的技術(shù)棧,整體效率也有所提升,并節(jié)省了資源消耗。
五、展望
在現(xiàn)有整體模型統(tǒng)一的基礎(chǔ)上,我們希望將模型進(jìn)一步復(fù)雜化,服務(wù)于網(wǎng)易云音樂更多業(yè)務(wù)線,不僅限于音樂推薦,還包括播客、直播等,以各種合作的形式發(fā)揮模型最大效果。
六、問答環(huán)節(jié)
Q1:新模型可以加入新的域和任務(wù)嗎?
A1:可以,場景的私域網(wǎng)絡(luò) SEN 中,一個(gè)網(wǎng)絡(luò)對應(yīng)一個(gè)場景,新增場景只需在私有網(wǎng)絡(luò)增加對應(yīng)的塔,較為靈活。
Q2:里面迭代 5 次是指一周推選 5 次嗎?
A2:并非如此,是指離線完整訓(xùn)練模型嘗試新方向,離線訓(xùn)練效率提升使得迭代速度加快。
Q3:統(tǒng)一模型較大,多人在模型上迭代是否會(huì)有沖突或效率降低?
A3:目前的做法是預(yù)先區(qū)分好迭代方向,不同同學(xué)負(fù)責(zé)重疊度最低的方向,且因同學(xué)負(fù)責(zé)業(yè)務(wù)不同,重疊性進(jìn)一步降低。雖干擾減少,但也存在問題,如因他人工作提升加入新點(diǎn),個(gè)人收益可能不如單獨(dú) AB 時(shí)多。此時(shí)強(qiáng)調(diào)增量 AB,大量 DIFF 比較。這是當(dāng)前實(shí)踐,仍在思考提升合作效率的方法。
Q4:拆分私域特征的必要性如何看待?
A4:私域特征復(fù)用度低,多為場景特有且重要,建議不混用到公域側(cè),實(shí)踐中混用效果不理想。
Q5:多場景樣本是否復(fù)用?
A5:是的,所有場景樣本合在一起訓(xùn)練,若不優(yōu)化離線訓(xùn)練效率,訓(xùn)練耗時(shí)會(huì)大幅增加。
Q6:層次 attention 是將長短序融合再和短序融合嗎?
A6:是的,先對長序做 attention,再和短序做 attention。
Q7:公域特征為何對不活躍用戶提升大?
A7:音樂場景眾多,但用戶通常只用一兩個(gè)功能,多場景建模能覆蓋全推薦域樣本,改變用戶底層表達(dá),對類似用戶冷啟更好,不再只適配單點(diǎn)場景特性。
Q8:新場景私域增量,私域訓(xùn)練后公域那塊的場景綜合所有的,如果新場景上來是直接全量訓(xùn)練還是增量訓(xùn)練?
A8:新場景上來直接全量訓(xùn)練,因補(bǔ)充新樣本存在差異性,直接增量訓(xùn)練可能不穩(wěn)定。
Q9:全量樣本更新是全冷啟還是熱啟?
A9:做全量更新。
Q10:上了一個(gè)私域塔,公域塔上層模型都得微調(diào),如何影響對其他任務(wù)的評估?
A10:上了新私域塔通常直接做 AB,當(dāng)前推薦域用一個(gè)實(shí)驗(yàn)評估,新增私域塔未觀測到對其他場景的負(fù)向影響,因新增多為小場景,核心場景通常非新增量帶來。
Q11:對于私域特征混用不好的效果如何看待?
A11:因差異性大,如同豬飼料給牛吃會(huì)生病。
Q12:不同場景正負(fù)樣本的定義是否有差異?
A12:有差異,樣本分布差異大,做實(shí)驗(yàn)時(shí)觀測到部分場景樣本量大會(huì)對其他場景產(chǎn)生負(fù)向影響,通過離線多次采樣迭代找出較好混合比例以表征全場景用戶。
Q13:不同場景量級差異大嗎?
A13:較大,做采樣會(huì)有信息丟失,但會(huì)保留能共同建模且對整體有收益的部分。
Q14:Loss 上有什么考慮?
A14:多任務(wù)層因 task master 設(shè)計(jì)影響較小,多場景層通過獨(dú)立每個(gè)場景的子塔設(shè)計(jì)保證樣本隔離。
Q15:對于 list、wise、pointwise 這些不同樣本的 loss 設(shè)計(jì),這種框架怎么設(shè)計(jì)?
A15:目前主要是 pointwise 框架,listwise 邏輯更傾向于在 pointwise 基礎(chǔ)上做二次偏序校正,用于多任務(wù)層的偏序表達(dá)。
Q16:跨場景建模后,各場景的推薦會(huì)趨同嗎?
A16:目前未出現(xiàn)此現(xiàn)象,底層召回有差異,且不同場景激活的子塔參數(shù)分布差異大。
Q17:不同場景的樣本反饋延遲會(huì)不同嗎?
A17:會(huì),實(shí)時(shí)場景較快,日更場景較慢,統(tǒng)一做統(tǒng)一時(shí)間的批量處理。
Q18:上層和輸出塔有分場景設(shè)計(jì)的必要嗎?
A18:視業(yè)務(wù)而定,若業(yè)務(wù)中某場景某任務(wù)非常重要且對其他場景影響可控,可單獨(dú)設(shè)計(jì)輸出塔,目前無統(tǒng)一方法論。
Q19:有歌曲和視頻,能做多長期建模嗎?
A19:目前主要在歌曲域做多場景建模,歌曲和視頻差異大,跨域建模方案更復(fù)雜。
Q20:長層次 attention 只是處理短序列嗎?
A20:不是,長短序列一起處理,短序列可視為 target,長序列視為序列。
Q21:提到統(tǒng)一實(shí)驗(yàn),如果兩個(gè)體量相當(dāng)?shù)乃接蛞粋€(gè)漲一個(gè)跌,如何評估?
A21:先看總量,再看私域場景漲跌情況,總量最重要。
Q22:Task mask 如何解決場景和任務(wù)之間的耦合?
A22:A 場景有 A 任務(wù),B 場景無 A 任務(wù),構(gòu)建樣本時(shí)混合 A、B 場景樣本,訓(xùn)練 B 場景時(shí) mask 掉 A 任務(wù)的梯度。
Q23:長序列和短序列多長?
A23:長序列有上萬的長期序列和幾百的中長期興趣序列。
Q24:層次 attention 可以再講解一下嗎?
A24:短序列做 target attention 的 target,長序列做序列。
Q25:如果場景量級不同,采樣大場景會(huì)丟失信息嗎?如何平衡?
A25:會(huì)丟失部分信息,取決于丟失部分對整體的影響,保留能共同建模且有益的部分。
Q26:上層網(wǎng)絡(luò)的分場景設(shè)計(jì)的思路
A26:受前輩 star 工作影響,設(shè)計(jì)理念相同,分公域和私域?qū)<?,私域?yàn)閳鼍八接芯W(wǎng)絡(luò) SEN,每個(gè)場景有獨(dú)有網(wǎng)絡(luò),公域設(shè)計(jì)基于用戶層面的共同興趣表達(dá),而非場景層面。
Q27:關(guān)于任務(wù)在不同場景中轉(zhuǎn)化率分布不同,用同一輸出塔可能導(dǎo)致問題,是否有必要為每個(gè)場景的任務(wù)分別拆出輸出。
A27:通過私域場景獨(dú)立塔保持信息偏置,保證小場景 COPC 穩(wěn)定,且梯度隔離可保證 COPC 準(zhǔn)確,公域梯度回傳基于用戶公共興趣不受場景轉(zhuǎn)化率影響。