在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<s id="cmphk"><label id="cmphk"></label></s>
    <span id="cmphk"><var id="cmphk"></var></span>
    <dfn id="cmphk"><var id="cmphk"></var></dfn>
    <menu id="cmphk"><thead id="cmphk"></thead></menu>

    <address id="cmphk"></address>

      <dfn id="cmphk"></dfn>
      
      
      <span id="cmphk"></span>

      <object id="cmphk"><tt id="cmphk"></tt></object>
      1. 博客專欄

        EEPW首頁 > 博客 > 2W字長文 | 漫談工業(yè)界圖神經(jīng)網(wǎng)絡(luò)推薦系統(tǒng)(3)

        2W字長文 | 漫談工業(yè)界圖神經(jīng)網(wǎng)絡(luò)推薦系統(tǒng)(3)

        發(fā)布人:數(shù)據(jù)派THU 時間:2021-12-18 來源:工程師 發(fā)布文章

        2. 論文總結(jié)

        該章節(jié)對選取的工業(yè)界的文章的共性部分進行總結(jié),除了有人比較喜歡用來水論文的模型結(jié)構(gòu)也涉及了圖的構(gòu)建,特征使用,采樣方法,結(jié)合方式等部分??梢钥吹?,對GNN的應(yīng)用基本遵循著這套框架。

        2.1 應(yīng)用階段

        推薦系統(tǒng)不同階段的特點影響著我們對某項技術(shù)的使用,召回階段可以說是樣本的藝術(shù),而排序階段可以說是特征的藝術(shù)。其中向量召回是一類常用的個性化召回方法,一般在離線訓練時存下User和Item的Embedding,線上推斷時通過LSH等方法從海量候選集中快速選出用戶可能感興趣的Items。以下總結(jié)了召回階段常見的幾個特點:

        召回模型一般不會使用太多復雜的特征,以ID特征為主;排序模型會上很多特征盡可能描述用戶,物品及行為過程。

        召回模型一般使用PairWise Loss,排序模型一般使用PointWise Loss。個人理解一方面是因為召回階段的目標是篩選出用戶可能感興趣的Item,至于感興趣的程度是多少那是排序模型的職責,因此只需要使用PairWise Loss將正負樣本盡可能區(qū)分開即可。另一方面是因為召回階段的負樣本不一定表示用戶不感興趣,只是沒有曝光而已,如果用PointWise Loss建模會導致模型受噪聲的干擾。

        召回模型一般要從全庫隨機選取負樣本,排序模型一般將曝光未點擊作為負樣本。在訓練召回模型時時將曝光未點擊作為負樣本存在兩個問題,一是線下線上的不一致,線上召回時面對的是全庫的候選集;二是在上一輪能夠得到曝光的物品已經(jīng)屬于用戶比較感興趣的,只不過同時曝光的還有更符合用戶需要的選項,將這些樣本直接作為召回模型的負樣本不太合適。這里的“全庫”也會根據(jù)場景變化,例如在搜索場景,由于Query的相關(guān)性限制,所以會在同類目下采樣負樣本。

        GNN由于其構(gòu)圖,采樣和計算的復雜性,更多被應(yīng)用在召回階段做向量召回。常見的一種方式是將Item推薦建模為User結(jié)點與Item結(jié)點的鏈接預測任務(wù),同樣在離線存下訓練好的User和Item Embedding用于線上召回。不過在建模鏈接預測任務(wù)時,很容易產(chǎn)生信息泄露的問題,即在做消息傳遞時,沒有將待預測的邊從圖中去掉,例如預測user a對item a是否感興趣,沒有去掉圖中兩者之間的邊,user a和item a作為鄰居直接融合了彼此的Embedding,導致模型難以學習到有效的信息。在復現(xiàn)一些論文的代碼時,我發(fā)現(xiàn)這個問題還挺常見的。當然在召回階段我們也可以結(jié)合目標任務(wù)端到端地訓練。GNN也可以應(yīng)用在排序階段[36][37][38][39][40][41][42][43],此時存在兩種結(jié)合方式,一種是先預訓練[42],得到的Embedding以特征初始化或Concat的方式輔助排序模型的訓練,另一種是GNN模塊與排序模型整體一起做端到端地訓練,不過這樣需要考慮到線上打分時的效率,特別是GNN采樣以及聚合帶來的開銷。當然我們可以將GNN模塊作為Embedding Layer的一部分,在離線訓練時得到包含了圖信息的Embedding,在線上打分時直接使用該Embedding而無需調(diào)用GNN模塊。

        2.2 圖的構(gòu)建

        “Garbage in, garbage out”,圖數(shù)據(jù)構(gòu)建不好,GNN魔改得再花哨也難奏效。對于構(gòu)建圖的數(shù)據(jù),從數(shù)據(jù)來源來看,分為行為數(shù)據(jù),屬性數(shù)據(jù)和社交數(shù)據(jù);從時間跨度來看,分為短期數(shù)據(jù)和長期數(shù)據(jù);從用戶粒度來看,分為單個用戶和群體用戶;不同種類的數(shù)據(jù)構(gòu)建的圖蘊含著不同的特點,下面一一介紹。

        行為數(shù)據(jù):行為數(shù)據(jù)是搜推廣場景最常見也最重要的一類數(shù)據(jù),應(yīng)用很廣的行為序列建模就是建立在該數(shù)據(jù)上,詳情可以參考之前寫的一篇文章:沒什么大不了:淺談行為序列建模。該數(shù)據(jù)可以構(gòu)建兩種類型的圖:

        二分圖:最常見的方式是使用行為數(shù)據(jù)直接構(gòu)建User-Item二分圖,在user和其行為過的Item之間構(gòu)建邊,不過二分圖的1階鄰居往往非常稀疏,因此有工作通過二分圖的2階鄰居分別導出User-User和Item-Item同構(gòu)子圖[39],一方面通過2階鄰居的豐富性緩解了1階鄰居的稀疏性,另一方面也避免了對異構(gòu)圖的復雜建模,可以直接在子圖上使用同構(gòu)GNN。User-Item二分圖的另一個缺點是難以及時反映用戶的新的行為(即需要考慮圖的動態(tài)性)。

        共現(xiàn)圖:共現(xiàn)關(guān)系表達了物品之間的關(guān)聯(lián),一方面可以在行為序列相鄰的Item之間構(gòu)建共現(xiàn)鄰居關(guān)系[36],前后行為的Item一般比較相關(guān);另一方面對于部分場景例如搜索場景,可以在某個Query下點擊過的Item之間構(gòu)建共現(xiàn)鄰居關(guān)系,這些Item一般也比較相關(guān)。在這一過程中我們還可以統(tǒng)計共現(xiàn)頻數(shù)[44],共現(xiàn)頻數(shù)一方面可以用來去噪,共現(xiàn)頻數(shù)較低的兩個Item相關(guān)程度也低;另一方面可以用來計算權(quán)重分布用于Node-Wise采樣,相比GraphSage隨機采樣,可以最大程度保留有效信息;對于計算的權(quán)重分布還可以用于指導對鄰居的聚合過程。值得注意的是,在由User-Item二分圖導出User-User或Item-Item子圖時也可以統(tǒng)計類似的共現(xiàn)頻數(shù)。

        屬性數(shù)據(jù):行為數(shù)據(jù)構(gòu)建的圖往往是比較稀疏的,因此可以引入屬性數(shù)據(jù)構(gòu)建屬性關(guān)系[45]。例如,Item a和Item b都具有屬性Brand a,即兩個商品都是同一個品牌的,這是我們可以引入Entity結(jié)點Brand,然后在Item a,b與Brand a之間構(gòu)建屬性鄰居關(guān)系。這里讓人不禁疑問為什么不直接將Brand作為Item的特征呢(Feature concat)?在上文討論圖神經(jīng)網(wǎng)絡(luò)的優(yōu)點時已經(jīng)提到,將Brand作為圖的一部分可以用多層GNN學習高階的屬性關(guān)聯(lián)信息。此外,當我們用屬性數(shù)據(jù)與行為數(shù)據(jù)共同構(gòu)建一張更復雜的異構(gòu)圖,此時還可以用GNN學習到異構(gòu)的復合關(guān)聯(lián)信息。

        社交數(shù)據(jù):我們還以用社交網(wǎng)絡(luò)進一步豐富User之間的鄰居關(guān)系,不過對于盲目使用社交數(shù)據(jù)的有效性我是存疑的。具有社交關(guān)系的人真的存在相似的偏好嗎?首先,不同的社交關(guān)系含義不同,例如,親戚關(guān)系更多表示血緣上的聯(lián)系,不足以表達偏好上的關(guān)聯(lián)。其次,社交關(guān)系表達的關(guān)聯(lián)真的適用于我的場景嗎?例如,朋友關(guān)系表達的更多是觀點或思想上的關(guān)聯(lián),在電商場景下一對朋友不一定對商品擁有相似的偏好,但是在內(nèi)容場景下例如抖音上,我和朋友確實都喜歡刷貓貓狗狗的視頻。

        短期數(shù)據(jù) & 長期數(shù)據(jù):對于行為數(shù)據(jù),我們可以用第T-1的數(shù)據(jù)構(gòu)建圖用于第T天,也可以用連續(xù)N天的數(shù)據(jù)構(gòu)建圖用于第T天。短期數(shù)據(jù)更容易保留最近的流行趨勢,例如,這兩天人們搶著買壓縮餅干啥的,但是構(gòu)建的圖會非常稀疏;長期數(shù)據(jù)更容易保留穩(wěn)定的一般規(guī)律,例如,人們買完手機過陣子又買手機殼鋼化膜啥的。

        單個用戶 & 群體用戶:單個用戶的行為數(shù)據(jù)構(gòu)建的圖更具個性化[43],所謂“一人一圖”,但是同樣會存在稀疏問題;群體用戶的行為數(shù)據(jù)構(gòu)建的圖更具泛化性,并且可以緩解某些長尾物品的冷啟動問題。

        以上幾種模式并不是孤立的,可以根據(jù)不同的場景進行組合。此外,還存在著其他一些圖模式。例如,GMCM[38]構(gòu)建的圖的結(jié)點是各種微觀行為,邊是它們的轉(zhuǎn)移過程,權(quán)重是其轉(zhuǎn)移概率,并且將CVR預測建模為了圖分類任務(wù)。

        2.3 特征使用

        毫無疑問,ID特征是最重要的,但是利用其他特征諸如Item的Shop,Brand,Category等可以增強我們模型的泛化能力。對于這些泛化特征,一方面,我們可以直接使用Feature Concat的方式統(tǒng)一作為結(jié)點的特征,另一方面,也可以把這些特征建模為Entity結(jié)點從而學習高階的屬性關(guān)聯(lián)信息。利用它們的難點在于特征維度和語義空間的對齊(異構(gòu)性),可以從圖的構(gòu)建或模型結(jié)構(gòu)方面加以解決。

        2.4 采樣方法

        在第一部分已經(jīng)介紹了三種常用的采樣方法,搜推中用的比較多的是Node-Wise Sampling,在這里我們進一步完善討論下該方法。必須強調(diào)的是只有當圖的規(guī)模比較大時才需要采樣,對于像UaG[43]中用單個用戶行為數(shù)據(jù)構(gòu)建的圖(一人一圖)就不需要采樣。我們可以將Node-Wise Sampling抽象為兩個步驟:Root結(jié)點的采樣和鄰居結(jié)點的采樣。

        Root結(jié)點的采樣:Root結(jié)點是我們在訓練或推斷時需要直接用到的結(jié)點,例如,使用User和Item之間的鏈接預測任務(wù)建模Item推薦時,首先需要采樣一個Batch的待預測的邊,這些邊兩端的User和Item作為Root結(jié)點;或者我們想用圖信息豐富用戶行為序列中Item的表征,則行為數(shù)據(jù)中的Item作為Root結(jié)點[36]。

        鄰居結(jié)點的采樣:這一步為每個Root結(jié)點采樣其鄰居結(jié)點,都是以迭代的方式采樣1-K階鄰居(包括Random Walk)。

        全采樣:即保留所有1-K階鄰居,鄰居數(shù)量會非常龐大,適用于離線“預訓練”的方式,即線上只用到訓練好的Embedding,不然單采樣帶來的開銷就無法承受。

        均勻分布采樣:即GraphSage中的采樣方式,每個鄰居結(jié)點被采樣到的概率相同。

        概率分布采樣:區(qū)別于GraphSage的均勻分布采樣,例如上文提到的在構(gòu)建圖時統(tǒng)計的共現(xiàn)頻數(shù),歸一化后可以作為采樣的概率分布,這樣更容易采樣到重要的鄰居。

        Meta-Path采樣[41]:按照預定義的Meta-Path去采樣鄰居,實際上相當于在異構(gòu)圖中采樣高階鄰居,例如,按照Meta-Path User-Item-User采樣User的User鄰居。

        Random Walk采樣[46]:使用Random Walk方法采樣鄰居,本質(zhì)上也是一種概率分布采樣,每個鄰居被采用的概率由度數(shù)計算。我們可以使用不同的Random Walk策略,例如個性化PageRank。

        2.5 模型結(jié)構(gòu)

        在第一部分已經(jīng)介紹了一些常用的GNN模型,這里我們進一步將GNN抽象為兩個步驟:鄰居聚合和表征融合。在應(yīng)用GNN到推薦系統(tǒng)時,主要從異構(gòu)建模和特征交互兩個角度改進模型,Attention機制和Layer Aggregation貫穿其中。

        鄰居聚合:顧名思義,即聚合鄰居結(jié)點的信息,得到中心結(jié)點的鄰域的表征。GCN是在每一層對每個結(jié)點聚合1階鄰居,則第K層的輸出則包含了K-Hop范圍的鄰居信息,但是它需要操作全圖無法擴展到大規(guī)模圖數(shù)據(jù)。這里我們討論Node-Wise Samling下鄰居聚合的過程。

        迭代聚合:Node-Wise Sampling實際上圍繞中心結(jié)點構(gòu)造了一個1-K階的層次鄰域結(jié)構(gòu),因此可以迭代地聚合K-1階的鄰居直到中心結(jié)點,這也是GraphSage采用的方式,它的一個缺點是計算是串行的,計算完第i階才能繼續(xù)第i-1階的計算,如果線上需要用到該過程會導致RT過高。

        并行聚合:我們可以直接并行地聚合1,2,...,K階鄰居,然后再融合它們得到最終的鄰域表征,避免了串行計算帶來的高時間開銷。

        28.png

        Parallel-GCNs

        表征融合:經(jīng)過鄰居聚合得到鄰域表征后,我們還需要將它與自身表征融合。常用的幾種方式是:Add[11],Concat[5],Attention。Attention主要是考慮到自身與鄰域表征的重要性差異。

        異構(gòu)建模:第一部分提到真實場景中的圖數(shù)據(jù)大多是異構(gòu)的,在使用GNN時需要考慮到結(jié)點與邊類型的差異性??紤]異構(gòu)性后我們可以將上述過程擴展為三個步驟:鄰居聚合,鄰域融合,自身融合。在模型結(jié)構(gòu)上基本都遵循著第一部分提到的Node or Edge Type-Specific Transformation+Attention的框架。

        鄰居聚合:鄰居結(jié)點存在不同的類型,因此一般按類型分別聚合鄰居。一種比較特殊的方式是將原來的異構(gòu)圖轉(zhuǎn)化為一系列的同構(gòu)子圖,在這些子圖上可以直接使用同構(gòu)GNN。

        鄰域融合:融合上一步驟得到的不同類型的鄰域表征

        自身融合:最后再融合自身表征

        特征交互:部分工作認為GNN缺少對鄰居之間的交互[47][48],鄰域之間的交互[48][49],鄰域與自身的交互[50]的建模,因此引入元素積,self-Attention,co-attenive等方式增強特征交互。

        Attention機制:Attention可以說是萬金油技術(shù)了,這里主要被用來建模鄰居之間的重要性差異,鄰域之間的重要性差異,自身與鄰域的重要性差異。

        Layer Aggregation[51]:在Deeper GNN部分提到過,第K層輸出包含了K-Hop鄰居信息,Layer Aggregation即組合不同范圍的鄰居信息。

        *博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。



        關(guān)鍵詞: AI

        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉