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