本發(fā)明屬于會(huì)話推薦系統(tǒng)領(lǐng)域,應(yīng)用圖神經(jīng)網(wǎng)絡(luò)和注意力機(jī)制實(shí)現(xiàn)用戶下一個(gè)購(gòu)買(mǎi)項(xiàng)目的預(yù)測(cè)方法。
背景技術(shù):
1、推薦系統(tǒng)作為緩解信息時(shí)代信息過(guò)載問(wèn)題的有效解決方案,近年來(lái)取得了重大進(jìn)展。傳統(tǒng)的推薦系統(tǒng)通常依賴于用戶現(xiàn)有的個(gè)人資料和長(zhǎng)期的互動(dòng)歷史。然而,在某些情況下,這些假設(shè)可能不再成立。例如,當(dāng)用戶沒(méi)有登錄或交互歷史不足時(shí),傳統(tǒng)推薦系統(tǒng)的有效性就會(huì)受到限制。此外,用戶的興趣和需求可能在不同的時(shí)間段內(nèi)發(fā)生重大變化。因此,需要更具適應(yīng)性的方法來(lái)處理這些快速變化的環(huán)境?;跁?huì)話的推薦(sbr)優(yōu)先考慮短期用戶交互序列,考慮用戶當(dāng)前的興趣,并提供更即時(shí)和個(gè)性化的推薦來(lái)應(yīng)對(duì)這些挑戰(zhàn)。
2、目前,學(xué)者們已經(jīng)提出了許多深度神經(jīng)網(wǎng)絡(luò)方法來(lái)解決sbr的挑戰(zhàn)。遞歸神經(jīng)網(wǎng)絡(luò)(rnn)可以捕獲序列的順序信息,在這個(gè)領(lǐng)域很受歡迎,但其也有一定的局限性,尤其是在處理長(zhǎng)期依賴關(guān)系和有效捕獲復(fù)雜用戶偏好方面。注意力機(jī)制是一個(gè)有價(jià)值的補(bǔ)充,增強(qiáng)了模型關(guān)注序列中相關(guān)信息的能力。圖神經(jīng)網(wǎng)絡(luò)(gnn)是目前的主流方法,提供了各種優(yōu)勢(shì),特別是在建模復(fù)雜的用戶-項(xiàng)目交互方面。gnn擅長(zhǎng)捕捉結(jié)構(gòu)信息、建模用戶偏好和提高推薦準(zhǔn)確性。然而,目前大多數(shù)方法主要集中在單個(gè)用戶行為上,忽略了會(huì)話中多個(gè)行為的影響。
3、在許多平臺(tái)中,直接利益往往與單個(gè)用戶的行為有關(guān),例如電子商務(wù)平臺(tái)中的購(gòu)買(mǎi)行為,但這種互動(dòng)的數(shù)量很少。僅依靠這種單一行為進(jìn)行推薦可能會(huì)導(dǎo)致嚴(yán)重的數(shù)據(jù)稀疏性問(wèn)題。然而,電子商務(wù)平臺(tái)中的點(diǎn)擊行為能為用戶提供額外的產(chǎn)品信息并幫助他們做出決策,可以有效緩解數(shù)據(jù)稀疏性的挑戰(zhàn)。通過(guò)結(jié)合多種類(lèi)型的用戶行為,推薦系統(tǒng)可以學(xué)習(xí)更全面、信息更豐富的用戶偏好,最終提高推薦的質(zhì)量和相關(guān)性。
技術(shù)實(shí)現(xiàn)思路
1、現(xiàn)有的會(huì)話推薦方法大多都只使用點(diǎn)擊序列來(lái)為用戶推薦下一個(gè)點(diǎn)擊項(xiàng)目,這樣忽視了平臺(tái)的收益問(wèn)題,部分學(xué)者提出利用購(gòu)買(mǎi)行為作為目標(biāo)行為,點(diǎn)擊行為作為輔助行為來(lái)為用戶做出下一個(gè)購(gòu)買(mǎi)項(xiàng)目的推薦,但是他們僅僅是分別處理這兩種行為,并在最后融合起來(lái),忽略了點(diǎn)擊行為和購(gòu)買(mǎi)行為之間的遞進(jìn)關(guān)系,為了捕獲兩種行為之間的關(guān)系,我們提出利用點(diǎn)擊行為學(xué)習(xí)到的嵌入表示作為輸入來(lái)強(qiáng)化購(gòu)買(mǎi)行為的學(xué)習(xí)過(guò)程。此外,他們還忽視了不同視角下的行為轉(zhuǎn)移模式,為此,我們提出額外的微觀表示學(xué)習(xí)模塊來(lái)學(xué)習(xí)不同視角的行為轉(zhuǎn)移模式??偟膩?lái)說(shuō),本發(fā)明提出了一種基于用戶行為的圖神經(jīng)網(wǎng)絡(luò)會(huì)話推薦的方法。
2、為實(shí)現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案為:一種基于用戶行為的圖神經(jīng)網(wǎng)絡(luò)會(huì)話推薦的方法,包括如下步驟:
3、步驟1,準(zhǔn)備會(huì)話推薦數(shù)據(jù)集并構(gòu)建有向圖。會(huì)話推薦數(shù)據(jù)集包含匿名用戶在一個(gè)會(huì)話期間的交互歷史,其中購(gòu)買(mǎi)行為被視為目標(biāo)行為,點(diǎn)擊行為被視為輔助行為。對(duì)于一個(gè)會(huì)話序列,將該序列劃分為四種類(lèi)型的序列,即點(diǎn)擊序列,購(gòu)買(mǎi)序列,項(xiàng)目序列,項(xiàng)目序列對(duì)應(yīng)的行為序列,并分別構(gòu)建有向圖。
4、所述步驟1中,我們使用三個(gè)會(huì)話推薦數(shù)據(jù)集,即yoochoose、tmall和cosmetics。對(duì)于數(shù)據(jù)集中的一個(gè)匿名序列,我們根據(jù)以下規(guī)則來(lái)劃分訓(xùn)練序列和標(biāo)簽:對(duì)于該序列中的購(gòu)買(mǎi)序列s(b)=[vb,1,vb,2,…,vb,s(b)|],我們將[vb,1,vb,2,…,vb,i-1]視為輸入序列,將vb,o視為標(biāo)簽。對(duì)于點(diǎn)擊序列s(c),我們只保留標(biāo)簽之前的序列,以防止數(shù)據(jù)泄露。我們?cè)O(shè)置每個(gè)序列的最大長(zhǎng)度l,如果序列長(zhǎng)度超過(guò)了l,那么只保留最后l項(xiàng)。然后按照時(shí)間順序來(lái)劃分訓(xùn)練集和測(cè)試集。以yoochoose數(shù)據(jù)集為例,其中包含24239個(gè)項(xiàng)目,訓(xùn)練集包含163005個(gè)序列,驗(yàn)證集包含12985個(gè)序列,測(cè)試集包含25971個(gè)序列。
5、對(duì)于一個(gè)輸入的會(huì)話序列s,將其構(gòu)建為有向圖其中表示該序列中的項(xiàng)目,表示為一條有向邊,即會(huì)話中的相鄰項(xiàng)目。該有向圖包含四種類(lèi)型的邊,即入邊、出邊、雙向邊以及自環(huán)邊。
6、步驟2,構(gòu)建圖注意力塊,其輸入為構(gòu)建的有向圖。對(duì)于輸入的有向圖,為圖中每個(gè)節(jié)點(diǎn)的鄰接節(jié)點(diǎn)進(jìn)行權(quán)重分配,從而確定它們對(duì)當(dāng)前節(jié)點(diǎn)的影響力,而后根據(jù)該影響力聚合鄰居節(jié)點(diǎn),完成信息聚合。然后堆疊多層圖神經(jīng)網(wǎng)絡(luò),捕獲多跳的鄰居信息,增強(qiáng)模型對(duì)復(fù)雜圖結(jié)構(gòu)的表征能力。
7、所述步驟2中,圖注意力塊的整體結(jié)構(gòu)如下:
8、v→圖注意力塊→v’
9、其中v為初始項(xiàng)目嵌入,v’為更新后的項(xiàng)目嵌入。對(duì)于構(gòu)建的有向圖,利用圖注意力網(wǎng)絡(luò)來(lái)更新節(jié)點(diǎn)嵌入??紤]到圖中不同的節(jié)點(diǎn)對(duì)當(dāng)前節(jié)點(diǎn)有著不同的重要性,首先計(jì)算注意力系數(shù):
10、
11、式子中pij表示節(jié)點(diǎn)j對(duì)節(jié)點(diǎn)i的重要程度,表示第l-1層的節(jié)點(diǎn)嵌入表示,表示四種類(lèi)型的邊的嵌入向量,⊙表示按元素相乘。這里使用leakyrelu作為激活函數(shù)。然后使用softmax函數(shù)來(lái)計(jì)算歸一化的注意力權(quán)重來(lái)使得該權(quán)重可比較:
12、
13、其中表示節(jié)點(diǎn)i的鄰居節(jié)點(diǎn)。最后根據(jù)該權(quán)重來(lái)計(jì)算更新后的第l層項(xiàng)目嵌入表示:
14、
15、通過(guò)圖注意力塊,可以堆疊多層圖神經(jīng)網(wǎng)絡(luò),捕獲多跳的鄰居信息,增強(qiáng)模型對(duì)復(fù)雜圖結(jié)構(gòu)的表征能力。
16、步驟3,構(gòu)建宏觀表示學(xué)習(xí)模塊。在宏觀視角中,用戶總是先有點(diǎn)擊行為,而后才有購(gòu)買(mǎi)行為。對(duì)于輸入的項(xiàng)目嵌入表示,首先使用點(diǎn)擊序列構(gòu)建的有向圖進(jìn)行圖注意力的信息傳遞,得到更新后的項(xiàng)目嵌入vc;然后使用購(gòu)買(mǎi)序列構(gòu)建的有向圖進(jìn)行信息聚合,得到項(xiàng)目表示vb,該圖注意力塊的輸入為vc。這樣該模塊就能夠捕獲行為之間的遞進(jìn)關(guān)系。
17、所述步驟3中,宏觀表示學(xué)習(xí)模塊的整體流程如下:
18、v→點(diǎn)擊圖注意力塊→vc→購(gòu)買(mǎi)圖注意力塊→vb
19、其中表示初始的項(xiàng)目嵌入矩陣,將v作為輸入矩陣,輸入到點(diǎn)擊圖注意力塊中,可以捕獲到點(diǎn)擊行為中的項(xiàng)目轉(zhuǎn)移模式,得到輸出其中是圖圖注意力塊的第l層輸出然后將vc作為輸入矩陣,輸入到購(gòu)買(mǎi)圖注意力塊中,得到輸出vb。從而能夠在學(xué)習(xí)到點(diǎn)擊行為的轉(zhuǎn)移模式的基礎(chǔ)上學(xué)習(xí)購(gòu)買(mǎi)行為的轉(zhuǎn)移模式,將點(diǎn)擊行為作為購(gòu)買(mǎi)行為的基礎(chǔ)來(lái)強(qiáng)化購(gòu)買(mǎi)行為的學(xué)習(xí)過(guò)程。
20、步驟4:構(gòu)建微觀表示學(xué)習(xí)模塊。在微觀視角中,用戶在一個(gè)會(huì)話中,總是會(huì)有行為的轉(zhuǎn)移。對(duì)于一個(gè)會(huì)話序列,將該會(huì)話序列轉(zhuǎn)換為項(xiàng)目序列和行為序列。利用圖注意力塊來(lái)完成項(xiàng)目序列的信息聚合,利用門(mén)控循環(huán)神經(jīng)網(wǎng)絡(luò)來(lái)捕獲行為的轉(zhuǎn)移模式,融合兩者得到微觀視角的項(xiàng)目嵌入表示。
21、所述步驟4中,微觀表示學(xué)習(xí)模塊的整體流程如下:
22、v,o→微觀表示學(xué)習(xí)→v’
23、其中代表與行為無(wú)關(guān)的項(xiàng)目序列,而o=[o1,o2,…,on]代表項(xiàng)目序列對(duì)應(yīng)的行為序列。為了捕獲微觀視角下的用戶行為偏好信息,微觀表示學(xué)習(xí)模塊輸入了對(duì)應(yīng)的兩種序列,并對(duì)這兩種序列采用不同的信息傳播機(jī)制。對(duì)于項(xiàng)目序列,采用圖注意力塊,因?yàn)樵跁?huì)話序列中,項(xiàng)目的傳播范式是復(fù)雜的,不僅前一個(gè)項(xiàng)目會(huì)影響當(dāng)前項(xiàng)目,后面的項(xiàng)目也會(huì)對(duì)當(dāng)前項(xiàng)目產(chǎn)生影響,因此,圖神經(jīng)網(wǎng)絡(luò)更能捕獲有效的信息。而對(duì)于行為序列,該模塊需要捕獲的信息為行為的遞進(jìn)關(guān)系,因此,采用門(mén)控循環(huán)神經(jīng)網(wǎng)絡(luò)更為合適。
24、對(duì)于門(mén)控循環(huán)神經(jīng)網(wǎng)絡(luò)模塊,輸入為項(xiàng)目序列的嵌入矩陣:
25、zi=σ(wzoi+uzhi-1)
26、ri=σ(wroi+urhi-1)
27、
28、式子中,zi為更新門(mén),ri為重置門(mén),w和u為可訓(xùn)練參數(shù),σ為sigmod激活函數(shù)。hi表示第i步的隱藏狀態(tài),初始化為即第一個(gè)行為的嵌入表示。經(jīng)過(guò)門(mén)控循環(huán)神經(jīng)網(wǎng)絡(luò),可以得到更新后的行為序列嵌入表示。最后將項(xiàng)目序列嵌入和行為序列嵌入聚合得到微觀表示學(xué)習(xí)模塊的輸出:
29、
30、式子中||表示拼接操作。通過(guò)使用上述方法,可以確保具有相同項(xiàng)的序列在其操作序列不同時(shí)可能具有不同的表示,這樣就能夠在微觀層面上識(shí)別和了解用戶偏好。
31、步驟5:構(gòu)建會(huì)話表示學(xué)習(xí)模塊,其輸入為更新后的項(xiàng)目表示。利用注意力機(jī)制,計(jì)算項(xiàng)目注意力權(quán)重,代表項(xiàng)目間的影響系數(shù),根據(jù)該系數(shù)進(jìn)行聚合,從而計(jì)算得到最終的會(huì)話表示,并給出預(yù)測(cè)結(jié)果。
32、所述步驟5中,會(huì)話表示學(xué)習(xí)模塊的整體流程如下:
33、v→會(huì)話表示學(xué)習(xí)→s
34、對(duì)于一個(gè)更新后的序列v=[x1,x1,…,xm],將其作為輸入序列輸入到會(huì)話表示學(xué)習(xí)模塊,可以得到對(duì)應(yīng)的會(huì)話表示。由于在序列中不同位置對(duì)用戶偏好有著不同的影響,越往后的交互項(xiàng)目對(duì)用戶偏好的影響越大。因此,該模塊在項(xiàng)目序列中融合上位置嵌入來(lái)學(xué)習(xí)這一特征:
35、ti=σ(w1[xi||pi]+b1)
36、式子中pi表示反向位置嵌入,和為可訓(xùn)練參數(shù),σ表示激活函數(shù),這里使用的是tanh。接下來(lái)使用注意力機(jī)制來(lái)計(jì)算得到該會(huì)話序列的嵌入表示。由于序列中的最后一個(gè)項(xiàng)目能夠表達(dá)出強(qiáng)烈的用戶的當(dāng)前偏好,因此在注意力的計(jì)算中使用該項(xiàng)目來(lái)引導(dǎo),具體來(lái)說(shuō),對(duì)于會(huì)話中的一個(gè)項(xiàng)目xt,注意力權(quán)重的計(jì)算如下:
37、
38、式子中xm為序列中的最后一個(gè)項(xiàng)目的嵌入表示,然后可以計(jì)算得到當(dāng)前會(huì)話序列的會(huì)話表示sv:
39、
40、通過(guò)會(huì)話表示學(xué)習(xí)模塊,可以得到一個(gè)會(huì)話序列的會(huì)話表示,在之前項(xiàng)目表示學(xué)習(xí)模塊中,我們從微觀視角和宏觀視角學(xué)習(xí)了不同的項(xiàng)目表示,得到兩種序列表示,因此,我們?nèi)诤线@兩種表示得到最終的會(huì)話表示s:
41、s=agg(smacro,smicro)=smacro+smicro
42、然后,通過(guò)內(nèi)積可以計(jì)算得到每個(gè)候選項(xiàng)目的概率,根據(jù)概率就可以為用戶做出推薦:
43、
44、即為候選項(xiàng)目xi的概率,最后,使用交叉熵?fù)p失函數(shù)來(lái)訓(xùn)練模型:
45、
46、通過(guò)以上步驟,可以根據(jù)用戶的匿名會(huì)話序列,為用戶推薦出下一個(gè)其可能購(gòu)買(mǎi)的物品。