GNNs 推薦系統(tǒng)及應(yīng)用
一、GNNs 推薦系統(tǒng)的底層算力演化
近 20 年來,計(jì)算形態(tài)在不斷的演化。2010 年之前,云計(jì)算特別火,其他的計(jì)算形態(tài)比較微弱。隨著硬件算力突飛猛進(jìn)的發(fā)展,以及端側(cè)芯片的引進(jìn),邊緣計(jì)算也變得特別重要。當(dāng)前的兩大計(jì)算形態(tài)塑造了 AI 往兩個兩極化的方向發(fā)展,一方面在云計(jì)算的架構(gòu)下,我們可以利用超大規(guī)模集群能力訓(xùn)練大規(guī)模的AI模型,比如 Foundation Model 或者一些生成模型。另一方面,隨著邊緣計(jì)算的發(fā)展,我們也可以將 AI 模型部署到端側(cè),做更輕量化的服務(wù),比如在端側(cè)做各種各樣的識別任務(wù)。同時(shí),隨著元宇宙的發(fā)展,很多模型的計(jì)算都會放到端側(cè)。所以這兩種計(jì)算形態(tài),其內(nèi)核想調(diào)和的問題就是計(jì)算與傳輸?shù)木?,隨之而來的是人工智能的兩極化發(fā)展。
二、端側(cè) GNNs 推薦系統(tǒng)的個性化
這兩種計(jì)算形態(tài)給 GNNs 推薦系統(tǒng)帶來了哪些機(jī)遇?
端云的視角可以類比為全局圖與本地化子圖的一個視角,在 GNNs 的推薦系統(tǒng)中全局化子圖是由很多節(jié)點(diǎn)級別的子圖不斷地匯聚來構(gòu)建成的一個全局化的子圖,其優(yōu)勢在于數(shù)據(jù)完備,能夠提供比較全面的節(jié)點(diǎn)之間的關(guān)系,它的這種歸納偏置可能更加普適,它可能是總結(jié)了各種節(jié)點(diǎn)的規(guī)律,提取了歸納偏置,所以泛化能力強(qiáng)。對于本地化子圖來說不一定特別完備,它的優(yōu)勢在于能夠精確地描述這個人在這個子圖上演化的行為,能夠提供這種偏好性節(jié)點(diǎn)建立的關(guān)系,個性化好。所以云和端的關(guān)系就有點(diǎn)像全局化子圖和本地化子圖。云計(jì)算可以提供強(qiáng)大的中心化算力來做服務(wù),端可以提供一些數(shù)據(jù)個性化的服務(wù)。
我們可以結(jié)合全局圖和本地化子圖的優(yōu)勢來更好地提升模型的性能,今年發(fā)表在 WSDM2022 上的一篇研究對此做了探索。它提出了一個 Ada-GNN(Adapting to Local Patterns for improving Graph Neural Networks)模型,對于全局圖有一個整圖的建模,同時(shí)也會以 subgraph 構(gòu)建一些 local model 來做一些 adaptation。這樣的 adaptation 本質(zhì)是讓全局模型和 local model 組合起來的模型更加精細(xì)化地去感知局部圖的規(guī)律,提升個性化學(xué)習(xí)性能。
現(xiàn)在我們通過一個具體的例子來闡述為什么要關(guān)注子圖。在電商推薦系統(tǒng)中,有一個數(shù)碼愛好者群體,能夠刻畫出這種數(shù)碼產(chǎn)品,比如手機(jī)、Pad、相機(jī)和手機(jī)周邊產(chǎn)品的關(guān)聯(lián)關(guān)系。他一旦點(diǎn)擊了其中的一個相機(jī),就會誘導(dǎo)出歸納偏置。群體貢獻(xiàn)圖誘導(dǎo)出來的一個歸納偏置圖可能促進(jìn)我們?nèi)ネ扑]這種手機(jī),但是如果我們回歸到個體視角,如果他是一個攝影愛好者,特別關(guān)注聚焦于攝影類產(chǎn)品,這樣有時(shí)候就會產(chǎn)生下圖所示的悖論。群體貢獻(xiàn)圖誘導(dǎo)的歸納偏置是不是對這樣的某些群體過強(qiáng),尤其是這種尾部群體,這就是我們常說的馬太效應(yīng)。
總體來說,現(xiàn)有的這種兩極化計(jì)算形態(tài)其實(shí)可以讓我們對 GNNs 推薦系統(tǒng)的建模進(jìn)行重塑。傳統(tǒng)的推薦系統(tǒng)可以從候選池里面召回一些商品或者是物品進(jìn)行排序后推薦給用戶,它中間可以通過這種 GNNs 的建模來感知物體之間的關(guān)系。但是同時(shí)我們可以看到,因?yàn)檫吘売?jì)算的支持,我們可以在端側(cè)部署一定的個性化模型在子圖上面進(jìn)行學(xué)習(xí),去感知更細(xì)粒度的個性化。當(dāng)然這樣的一個新的端云協(xié)同的推薦系統(tǒng)的架構(gòu)是有一定的假設(shè),端設(shè)備的算力和功耗相對可行,但現(xiàn)實(shí)情況是小模型的算力開銷并不大,如果它能夠被壓縮到一兩兆,它的計(jì)算開銷放到現(xiàn)有的智能手機(jī)上面,其實(shí)并不一定比一個游戲 APP 消耗的算力和電能大。所以隨著邊緣計(jì)算的進(jìn)一步發(fā)展,以及端設(shè)備性能的提升,為在端側(cè)進(jìn)行進(jìn)一步的 GNNs 建模提供了更大的可能性。
如果我們想把 GNNs 模型放到端上,那么必然要考慮端側(cè)算力和存儲能力。前面我們也提到了模型壓縮,要想 GNNs 模型在端側(cè)做得更加有效,把一個相對比較大的 GNNs 模型放上去,一定要做模型壓縮。模型壓縮的傳統(tǒng)方法剪枝、量化都可以用到現(xiàn)有的 GNNs 模型上,但它們在推薦系統(tǒng)里面都會導(dǎo)致性能損失。在這種場景下,我們不可能為了搭建一個端側(cè)模型而去犧牲性能,所以剪枝和量化雖然有用,但是作用有限。
另外一個比較有用的模型壓縮方法是蒸餾,可能只能降數(shù)倍,但是開銷也差不多。最近有一篇發(fā)表在 KDD 上的工作是 GNNs 上進(jìn)行蒸餾,它在 GNNs 的這種圖示化數(shù)據(jù)建模的蒸餾的一個挑戰(zhàn)主要在于 logit space 距離度量很容易定義,但是在 latent feature space 的距離度量,尤其是 teacher GNNs 和 student GNNs 逐層之間的距離度量。對此,KDD 上的這篇工作提供了一個解決方案,通過對抗生成的方式來學(xué)習(xí)一個 metric 來實(shí)現(xiàn) learnable 設(shè)計(jì)。
除了上面提到的模型壓縮技術(shù),拆分部署是一個在 GNNs 推薦系統(tǒng)上特定且特別有用的技術(shù)。它跟 GNNs 推薦系統(tǒng)的模型架構(gòu)非常有關(guān)系,因?yàn)?GNNs 底層是一個商品的 Item Embedding,還要經(jīng)過幾層的 MLP 的非線性變換完之后,才會有這種 GNNs 的 aggregation 的策略進(jìn)來。
一旦一個模型訓(xùn)練好,就有一個天然的優(yōu)勢,基礎(chǔ)層的部分都是共享的,只有 GNNs 層可以做一些個性化。在這里的個性化我們就可以把模型一拆為二,把模型公共的部分放到云側(cè),因?yàn)樗懔Τ渥?,個性化的部分就可以放到端側(cè)進(jìn)行部署。這樣我們在端側(cè)只需要存儲中間內(nèi)核的 GNN。在實(shí)際的推薦系統(tǒng)中,能夠極大地節(jié)省整個模型的存儲開銷。我們在阿里的場景下實(shí)踐過,拆分部署之后的模型可能達(dá)到 KB 級別,然后做進(jìn)一步簡單的比特量化模型能夠做到特別小,放到端側(cè)基本沒有特別大的開銷。當(dāng)然這是一個經(jīng)驗(yàn)上的拆分,華為最近發(fā)表在 KDD 上的一個工作是做了模型的自動拆分,它會感知端設(shè)備的性能自動化對這種模型拆分。當(dāng)然如果應(yīng)用到 GNNs 上面,可能還是需要一些重塑。
在端側(cè)一些 distribution shift 嚴(yán)重的場景部署模型時(shí),我們的預(yù)訓(xùn)練好的模型在放到端上之前其實(shí)已經(jīng)比較老舊了,這是由于在實(shí)際中的圖數(shù)據(jù)回流到云端去訓(xùn)練的頻次比較緩慢,有時(shí)候會隔一周。
這里的主要瓶頸是資源約束,雖然在研究上面不一定會遇到這種瓶頸,但在實(shí)際中會遇到端側(cè)模型老舊的問題。隨著領(lǐng)域的改變,數(shù)據(jù)的改變,模型已經(jīng)不再適用,性能就會下降。這時(shí)候就需要 GNNs 模型的在線個性化,但是在端上做個性化,會面對端側(cè)算力和存儲開銷的挑戰(zhàn)。
還有一個挑戰(zhàn)就是數(shù)據(jù)稀疏,因?yàn)槎藬?shù)據(jù)只有個體節(jié)點(diǎn),所以其數(shù)據(jù)稀疏性也是一個很大的挑戰(zhàn)。最近的研究有一個比較高效的做法,就是 Parameter-Efficient Transfer,在層之間打一些模型的補(bǔ)丁,可以類比殘差網(wǎng)絡(luò),只是學(xué)習(xí)的時(shí)候?qū)W習(xí)一下補(bǔ)丁。通過一個 flag 機(jī)制,使用時(shí)開啟,不用即關(guān)掉,關(guān)掉就可以退化到原始的基礎(chǔ)模型,既安全又高效。
這是一個比較實(shí)際且高效的做法,發(fā)表在 KDD2021 上面,能夠?qū)崿F(xiàn) GNNs 模型的在線個性化。最重要的是我們從這樣的一個實(shí)踐中去發(fā)現(xiàn),通過感知這種本地模型的子圖信息,確實(shí)能夠使整體性能有一個穩(wěn)定的提升。同時(shí)也緩解了馬太效應(yīng)。
圖數(shù)據(jù)上的尾部用戶,在推薦系統(tǒng)的馬太效應(yīng)還是一個比較大的問題。但是如果我們通過分而治之的建模,對子圖進(jìn)一步個性化,能夠提升稀疏行為用戶的推薦體驗(yàn)。尤其是在尾部人群上面,性能的提升會更加明顯。
三、端云協(xié)同 GNNs 推薦系統(tǒng)的實(shí)現(xiàn)
在 GNNs 推薦系統(tǒng)里,一種是云側(cè)服務(wù)的 GNNs 模型,還有一種端側(cè)的 GNNs 的小模型。GNNs 推薦系統(tǒng)服務(wù)的實(shí)現(xiàn)形式有三種,第一種是 session recommendation,它是推薦系統(tǒng)中常見的為了節(jié)省開銷的批量會話推薦,即一次進(jìn)行批量的推薦,要求用戶瀏覽很多商品才會重新觸發(fā)推薦。第二種是極端的情況下一次只推薦一個。第三種是我們提到這種端側(cè)的個性化模型。這三種推薦系統(tǒng)方法各有優(yōu)勢,當(dāng)用戶興趣變化很緩慢的時(shí)候,我們只需要云側(cè)感知得很準(zhǔn),所以云側(cè)模型做 session recommendation 就足夠了。當(dāng)用戶興趣變化更加多樣時(shí),做端側(cè)的子圖的個性化推薦可以相對提升推薦性能。
當(dāng)用戶行為特別稀疏驟變的情況下,推薦更依賴于常識推理。要協(xié)調(diào)這三種推薦行為,可以構(gòu)建 Meta Controller - 元協(xié)調(diào)器,來協(xié)調(diào) GNNs 推薦系統(tǒng)。
構(gòu)造三路共存的端云協(xié)同式的推薦系統(tǒng)一個挑戰(zhàn)就是數(shù)據(jù)集的構(gòu)建,因?yàn)槲覀円膊恢涝趺垂芾磉@幾個模型,怎么做決策。所以這里只是通過一種反事實(shí)推理的機(jī)制,雖然我們沒有這種數(shù)據(jù)集,但是我們有單路的數(shù)據(jù)集,通過評估構(gòu)造一些代理模型去評估它們的因果效應(yīng)。如果因果效應(yīng)比較大,那么做這樣的一個決策的收益就比較大,可以構(gòu)建偽標(biāo)簽,即反事實(shí)數(shù)據(jù)集。具體步驟如下:
單路有三個模型 D0、D1、D2,通過學(xué)習(xí)一個代理的因果模型,估計(jì)它們的因果效應(yīng)去構(gòu)建一個決策標(biāo)簽,構(gòu)建一個反事實(shí)數(shù)據(jù)集去訓(xùn)練元協(xié)調(diào)器。最終我們可以證明這個元協(xié)調(diào)器相對于單路的各個模型都有一個性能的穩(wěn)定提升。相對于隨機(jī)試探的方式具有顯著的優(yōu)勢。我們可以通過這種方式來構(gòu)造端云協(xié)同的推薦系統(tǒng)。
四、端側(cè) GNNs 推薦系統(tǒng)安全問題
最后,探討一下端側(cè) GNNs 推薦系統(tǒng)的安全問題。一旦端云協(xié)同 GNNs 推薦系統(tǒng)放開之后,勢必面臨開放環(huán)境的問題。因?yàn)橐涯P蜕隙俗鰝€性化就要去學(xué)習(xí),就會有一些攻擊的風(fēng)險(xiǎn),比如逃逸攻擊、投毒攻擊、后門攻擊等,最終可能導(dǎo)致推薦系統(tǒng)存在巨大風(fēng)險(xiǎn)。
底層算力驅(qū)動了當(dāng)前端云協(xié)同 GNNs 推薦系統(tǒng)的方向,但還處于發(fā)展的初期,并存在一些潛在的問題,比如安全問題,同時(shí)在個性化的模型建模領(lǐng)域也依然存在很大的提升空間。
五、問答環(huán)節(jié)
Q1:在端上做圖模型,子圖的下發(fā)流量會不會太大?
A1:子圖不是下發(fā)的,它其實(shí)是匯聚式的。第一點(diǎn),子圖下發(fā)是伴隨式的。比如我們要做推薦商品的時(shí)候,它天然會攜帶商品的屬性信息。在這里伴隨式的下發(fā)是跟屬性同級別的開銷,其實(shí)開銷不是很大。因?yàn)樗皇前颜麄€大圖都下發(fā)下來,只是一些鄰居子圖,至多二階的鄰居子圖還是非常小的。第二點(diǎn),端上一部分子圖還是依賴于用戶行為的反饋?zhàn)鲆恍?co-occurrence 共點(diǎn)擊自動構(gòu)建的,所以它是一個雙端匯聚的形式,總體開銷不是特別大。