版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
圖神經(jīng)協(xié)同網(wǎng)絡(luò)算法設(shè)計(jì)與實(shí)現(xiàn)案例分析目錄TOC\o"1-3"\h\u27600圖神經(jīng)協(xié)同網(wǎng)絡(luò)算法設(shè)計(jì)與實(shí)現(xiàn)案例分析 11940(一)數(shù)據(jù)集描述 117391(二)實(shí)驗(yàn)的衡量指標(biāo) 159771.召回率 175132.折損累計(jì)增益 2321383.歸一化折損累計(jì)增益 228056(三)對(duì)照組算法 230206(四)超參數(shù)設(shè)置 229643(五)實(shí)驗(yàn)環(huán)境 34951(六)實(shí)驗(yàn)代碼實(shí)現(xiàn) 341031.用戶交互接口 4218662.數(shù)據(jù)處理模塊 4109083.網(wǎng)絡(luò)定義模塊 4296714.訓(xùn)練主體程序 5211325.測(cè)試模塊 519176.Main模塊 5134997.程序架構(gòu)圖 619650(七)訓(xùn)練結(jié)果對(duì)比 622943(八)模型收斂速度對(duì)比 722433(九)總結(jié) 7(一)數(shù)據(jù)集描述實(shí)驗(yàn)數(shù)據(jù)集為現(xiàn)實(shí)世界中的常用推薦數(shù)據(jù)集Gowalla[23]和amazon-book,數(shù)據(jù)如下:表5-1數(shù)據(jù)集統(tǒng)計(jì)數(shù)據(jù)數(shù)據(jù)集用戶數(shù)物品數(shù)User-Item稠密度Gowalla298584098110273700.00084AmazonBook526439159929841080.00062在測(cè)試的過程中,將用戶沒有交互歷史的項(xiàng)目看作負(fù)面項(xiàng)目,算法的最后將會(huì)輸出用戶對(duì)于所有未直接交互的物品(訓(xùn)練集為直接交互)的評(píng)分。因?yàn)闇y(cè)試集是從真實(shí)數(shù)據(jù)中隨機(jī)選出的,所以可以作為參考來計(jì)算所有用戶的召回率和折損累計(jì)增益。因?yàn)轭A(yù)測(cè)結(jié)果將會(huì)賦予每個(gè)物品預(yù)測(cè)值,因此需要排序選擇部分結(jié)果進(jìn)行檢測(cè)。實(shí)驗(yàn)中將會(huì)篩選前10和前20的物品來進(jìn)行計(jì)算。(二)實(shí)驗(yàn)的衡量指標(biāo)1.召回率作為評(píng)估預(yù)測(cè)準(zhǔn)確度中用到的鈣奶呢,在實(shí)驗(yàn)中用到的兩個(gè)數(shù)據(jù)集中預(yù)測(cè)TOPK物品推薦準(zhǔn)確度。召回率又稱為查全率,是推薦出的項(xiàng)目在該項(xiàng)目系統(tǒng)中于所查詢關(guān)鍵字相同物品的比率,換句話說就是推薦篩選出的用戶的預(yù)測(cè)topK感興趣的物品和用戶所有感興趣項(xiàng)目的比值。Re2.折損累計(jì)增益累計(jì)增益(CG)是的搜索結(jié)果相關(guān)性分?jǐn)?shù)的總和,代表著推薦出的K個(gè)項(xiàng)目和事實(shí)相比的得分加和,但是計(jì)算的時(shí)候只考慮其中的項(xiàng)目而不考慮項(xiàng)目之間的順序。因此,在此基礎(chǔ)上,提出了折損累計(jì)增益(DCG),在每個(gè)項(xiàng)目相關(guān)的粉上附加一個(gè)折損值,目的是為了排名更靠前的結(jié)果更能影響結(jié)果所以添加入折損項(xiàng)1/log(i+1)因此,DCG評(píng)分計(jì)算公式為:r?3.歸一化折損累計(jì)增益顧名思義,歸一化折損累計(jì)增益是針對(duì)不同推薦對(duì)象的返回興趣對(duì)象不同二提出的。因?yàn)槔塾?jì)增益的計(jì)算方式是使用加和計(jì)算,因此興趣廣泛的對(duì)象和興趣專一的對(duì)象的得分是不一致的,沒有辦法對(duì)兩個(gè)不同的搜索結(jié)果來進(jìn)行比較,因此需要進(jìn)行歸一化處理。nDC分母IDCG指的是當(dāng)前用戶的所有興趣項(xiàng)的最大DCG值。(三)對(duì)照組算法為了對(duì)比出前文中的網(wǎng)絡(luò)的有效性,將本文中提出的圖神經(jīng)神經(jīng)網(wǎng)絡(luò)與其他算法進(jìn)行對(duì)比。對(duì)比對(duì)象為BPRMF和LightGCN[19]。BPRMF就是經(jīng)過貝葉斯個(gè)性化排序的矩陣分解算法。LightGCN的作者認(rèn)為,對(duì)于協(xié)同過濾而言非線性激活函數(shù)和特征嵌入化表示前的特征變換矩陣沒有很大的用途,理由是輸入的數(shù)據(jù)僅僅為ID的嵌入表示,沒有節(jié)點(diǎn)自帶的特征信息,所以沒有計(jì)算提取對(duì)應(yīng)非線性特征的必要。(四)超參數(shù)設(shè)置1.對(duì)于輸入數(shù)據(jù)的嵌入層大小統(tǒng)一設(shè)置為64,優(yōu)化器函數(shù)選擇Adam,對(duì)于節(jié)點(diǎn)Dropout和學(xué)習(xí)率通過在驗(yàn)證集上進(jìn)行網(wǎng)格搜索確定為0.1和0.001.2.整個(gè)模型的參數(shù)初始化不使用完全隨機(jī)初始化二十使用Xavier初始化器[24]3.嵌入信息傳播層L通過驗(yàn)證集搜索最終確定三層擬合程度合適,在四層時(shí)前期擬合程度類似但是在訓(xùn)練次數(shù)多的情況下會(huì)出現(xiàn)過擬合導(dǎo)致的泛化能力下降,因此在訓(xùn)練集上訓(xùn)練時(shí)使用L=3。表5-2嵌入信息傳播層層數(shù)L對(duì)比GowallaAmazonBookRecall10Ndcg10Recall10Ndcg10L=20.1540260.1301120.0330150.024134L=30.1568720.1327470.0337150.025409L=40.1570170.1327460.0344010.026230因?yàn)樵贚為1的時(shí)候相當(dāng)于僅僅交互自己的一階鄰居而不會(huì)傳播圖的協(xié)同信息(五)實(shí)驗(yàn)環(huán)境實(shí)驗(yàn)使用Python進(jìn)行實(shí)現(xiàn),用Pytorch進(jìn)行訓(xùn)練,相對(duì)于Tensorflow,Pytorch可以自定義圖,不需要完整定義網(wǎng)絡(luò)去運(yùn)行,方便調(diào)試。在Pytorch中變量使用張量Tensor來表示,運(yùn)行機(jī)制類似于Numpy并且定義了多種數(shù)學(xué)操作和自動(dòng)求導(dǎo)操作,更符合實(shí)驗(yàn)自定義網(wǎng)絡(luò)的需求。本次實(shí)驗(yàn)的硬件配置如下:表5-3實(shí)驗(yàn)環(huán)境硬件配置配置名稱配置參數(shù)CPUIntel(R)Xeon(R)CPUE5-2678v3內(nèi)存64GGPUNVIDIAGeForceRTX2080*2操作系統(tǒng)Ubuntu20Python版本3.8.3Pytorch版本1.5.0(六)實(shí)驗(yàn)代碼實(shí)現(xiàn)實(shí)驗(yàn)項(xiàng)目將各個(gè)功能進(jìn)行模塊化設(shè)計(jì),降低每個(gè)模塊之間的耦合度從而最大程度上保證代碼的穩(wěn)定性。下面來說明具體的程序?qū)崿F(xiàn)細(xì)節(jié)。1.用戶交互接口因?yàn)橛?xùn)練程序運(yùn)行在服務(wù)器命令行界面上,所以在訓(xùn)練程序上提供命令行參數(shù)接口非常必要,可以通過結(jié)合bash腳本快速實(shí)現(xiàn)對(duì)于超參數(shù)的網(wǎng)格化搜索以及對(duì)不同超參數(shù)的快捷設(shè)置。此功能使用argparse開源庫(kù)來進(jìn)行實(shí)現(xiàn),其中包含對(duì)數(shù)據(jù)集,學(xué)習(xí)率,損失函數(shù),batchsize,dropout,運(yùn)行模式切換(測(cè)試,訓(xùn)練,預(yù)測(cè))以及多進(jìn)程處理數(shù)據(jù)等相關(guān)參數(shù)的傳遞,并將其封裝為包進(jìn)行調(diào)用。if__name__=='__main__':args=parse_args()2.數(shù)據(jù)處理模塊數(shù)據(jù)集(gowalla,amazonbook)初始為txt數(shù)據(jù)文件,通過逐行讀入后構(gòu)建交互矩陣并通過pickle包進(jìn)行序列化存儲(chǔ),這樣就不需要再次進(jìn)行文件讀入操作而是直接加載成為numpy向量。#在主程序調(diào)用此模塊將會(huì)傳入多核加載變量來通過torch.utils.data.DataLoader函數(shù)進(jìn)行快速加載.3.網(wǎng)絡(luò)定義模塊網(wǎng)絡(luò)定義模塊中使用pytorch來編寫圖神經(jīng)協(xié)同網(wǎng)絡(luò)類,主要分為初始化部分,網(wǎng)絡(luò)結(jié)構(gòu)定義部分,網(wǎng)絡(luò)操作函數(shù)等。初始化部分分為結(jié)構(gòu)定義和整體網(wǎng)絡(luò)初始化。因?yàn)榍度胄畔鞑邮亲约憾x的網(wǎng)絡(luò)結(jié)構(gòu),包含消息聚合和消息構(gòu)建操作,需要繼承torch中的nn.Module來自行實(shí)現(xiàn)。嵌入信息傳播層實(shí)現(xiàn)分為結(jié)構(gòu)定義和正向傳播兩個(gè)部分,雖然在訓(xùn)練的過程中需要進(jìn)行反向傳播,但是torch框架有著自動(dòng)求導(dǎo)的特性,因此反向傳播相關(guān)操作會(huì)依靠正向傳播的相關(guān)操作進(jìn)行自動(dòng)生成。根據(jù)傳播層的定義,首先需要構(gòu)建網(wǎng)絡(luò)來實(shí)現(xiàn)兩個(gè)矩陣對(duì)用戶嵌入特征向量和物品嵌入向量進(jìn)行乘積,這里使用torch.nn中的Liner方法來實(shí)現(xiàn),并且添加torch.nn中的drop模塊和LeakyReLU。最終對(duì)這些模塊中的所有參數(shù)進(jìn)行初始化。因?yàn)椴煌膮?shù)初始化方法對(duì)于網(wǎng)絡(luò)的收斂速度有很大的影響,所以使用xavier初始化方法[24]。在這之后按照順序定義實(shí)現(xiàn)正向傳播部分,這一部分就是定義該部分網(wǎng)絡(luò)的運(yùn)行順序,首先實(shí)現(xiàn)兩個(gè)部分的矩陣相乘再相加,最后經(jīng)過dropout返回處理過后的Embedding。圖神經(jīng)網(wǎng)絡(luò)協(xié)同算法整體網(wǎng)絡(luò)定義在類的初始化模塊中接受外層傳入的參數(shù)例如層數(shù),batchsize,dropout,交互矩陣等。然后按照傳入的矩陣規(guī)格和嵌入層維數(shù)K設(shè)置Embedding層作為整體網(wǎng)絡(luò)的輸入部分,這里使用torch.nn中已經(jīng)定義好的模塊。之后定義上面自行實(shí)現(xiàn)的嵌入信息傳播層,通過nn.ModuleList進(jìn)行堆疊來實(shí)現(xiàn)多層網(wǎng)絡(luò)疊加,在疊加之后需要對(duì)不同維度的embedding進(jìn)行組合并進(jìn)行歸一化處理,最終再次使用xavier初始化方法。然后自按照順序定義forward函數(shù),不同的是,返回值將用戶embedding和物品embedding進(jìn)行展平連接。4.訓(xùn)練主體程序訓(xùn)練主體程序中采用工廠模式,通過外層傳入的網(wǎng)絡(luò)來進(jìn)行訓(xùn)練,首先對(duì)于網(wǎng)絡(luò)進(jìn)行梯度清零和損失值清零,然后運(yùn)行forward函數(shù)來進(jìn)行計(jì)算,計(jì)算出預(yù)測(cè)的相似度高的用戶,然后清空梯度進(jìn)行反向傳播,進(jìn)行更新,對(duì)于一個(gè)epoch中的所有樣本都進(jìn)行相同的操作來完成一次訓(xùn)練。5.測(cè)試模塊測(cè)試模塊在運(yùn)行前需要開啟評(píng)估模式(torch.nn.Module自帶),因?yàn)閚dcg和召回率都是需要所有數(shù)據(jù)進(jìn)行計(jì)算而不能采樣,所以需要進(jìn)行矩陣相乘得到評(píng)分矩陣來進(jìn)行計(jì)算。評(píng)分?jǐn)?shù)據(jù)集使用之前劃分的測(cè)試集即20%的總體數(shù)據(jù),在傳入之后只用zip方法來生成迭代器逐個(gè)進(jìn)行運(yùn)算測(cè)試。因?yàn)閿?shù)據(jù)是在cpu哪進(jìn)行運(yùn)算的,所以在這里通過Mp.pool開啟進(jìn)程池來進(jìn)行并行計(jì)算。在計(jì)算中首先需要在隨機(jī)抽取的用戶u中獲取topK的物品下標(biāo),然后計(jì)算召回率和ndcg進(jìn)行返回。對(duì)于測(cè)試集中的所有結(jié)果做平均后返回作為當(dāng)前測(cè)試結(jié)果。6.Main模塊Main模塊負(fù)責(zé)將以上各個(gè)模塊進(jìn)行組合來運(yùn)行,首先調(diào)用用戶交互結(jié)構(gòu)獲得用戶命令行數(shù)據(jù),之后調(diào)用數(shù)據(jù)處理模塊生成訓(xùn)練集、測(cè)試集numpy矩陣,在測(cè)試狀態(tài)下會(huì)生成小規(guī)模的測(cè)試矩陣(隨機(jī)選取并且會(huì)對(duì)序號(hào)進(jìn)行重新編碼),之后是數(shù)據(jù)加載模塊生成拉普拉斯矩陣并將上面所有變量通過調(diào)用.cuda()方法導(dǎo)入到gpu中,這里支持多gpu進(jìn)行運(yùn)算。之后就是初始化圖神經(jīng)協(xié)同網(wǎng)絡(luò)類并將其導(dǎo)入gpu中,作為參數(shù)運(yùn)行訓(xùn)練主體程序Session。之后定義epoch進(jìn)行訓(xùn)練。7.程序架構(gòu)圖(七)訓(xùn)練結(jié)果對(duì)比Gowalla數(shù)據(jù)集下的模型性能表現(xiàn)AmazonBook數(shù)據(jù)集下的性能表現(xiàn)(八)模型收斂速度對(duì)比(九)總結(jié)通過實(shí)驗(yàn)結(jié)果可以得知,采用圖神經(jīng)網(wǎng)絡(luò)算法的NGCF和LightGCN具有更好的特征提取能力,在召回率和折損累計(jì)增益方面具有更佳的表現(xiàn)。在采用圖神經(jīng)網(wǎng)絡(luò)的兩個(gè)算法中進(jìn)行對(duì)比去除在Gowalla數(shù)據(jù)集中NGCF在TOP10召回的表現(xiàn)優(yōu)于LightGCN,其余數(shù)據(jù)均低于LightGCN,說明在隱反饋數(shù)據(jù)集中,因?yàn)檩斎霐?shù)據(jù)中的節(jié)點(diǎn)沒有相關(guān)的特征導(dǎo)致預(yù)先設(shè)定的提取節(jié)點(diǎn)自身信息的特征提取矩陣和非線性激活函數(shù)在處理僅由節(jié)點(diǎn)編號(hào)表示的節(jié)點(diǎn)時(shí)沒有起到作用而僅僅減弱了有效信息的傳遞,因此在用單位矩陣處理的LightGCN中的效果更好。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026廣西玉林市遴選公務(wù)員28人備考考試試題及答案解析
- 2026年數(shù)據(jù)驅(qū)動(dòng)的商業(yè)決策能力考試題庫(kù)
- 2026上半年云南事業(yè)單位聯(lián)考師范大學(xué)實(shí)驗(yàn)中學(xué)招聘3人備考題庫(kù)及答案詳解(易錯(cuò)題)
- 2026年廈門市思明區(qū)湖濱中學(xué)關(guān)于非在編人員2名招聘?jìng)淇碱}庫(kù)(含答案詳解)
- 2026年環(huán)保技術(shù)實(shí)施與監(jiān)管措施標(biāo)準(zhǔn)化試題
- 產(chǎn)品質(zhì)量首要責(zé)任保證函(6篇)
- 2026山東青島黃海學(xué)院博士招聘?jìng)淇碱}庫(kù)及答案詳解參考
- 財(cái)務(wù)會(huì)計(jì)信息合規(guī)承諾書7篇范文
- 2026上半年安徽事業(yè)單位聯(lián)考合肥市廬江縣招聘36人備考考試試題及答案解析
- 2026年寧波市鎮(zhèn)海區(qū)公開招聘事業(yè)編制教師30人(第二批)考試備考試題及答案解析
- 復(fù)方蒲公英注射液對(duì)心血管系統(tǒng)作用研究
- 研學(xué)旅行概論 課件 第一章 研學(xué)旅行的起源與發(fā)展
- 2021-2022學(xué)年浙江省寧波市鎮(zhèn)海區(qū)蛟川書院八年級(jí)(上)期末數(shù)學(xué)試卷(附答案詳解)
- (新版)老年人能力評(píng)估師理論考試復(fù)習(xí)題庫(kù)(含答案)
- 光纖激光打標(biāo)機(jī)說明書
- 治理現(xiàn)代化下的高校合同管理
- 境外宗教滲透與云南邊疆民族地區(qū)意識(shí)形態(tài)安全研究
- GB/T 33365-2016鋼筋混凝土用鋼筋焊接網(wǎng)試驗(yàn)方法
- GB/T 28920-2012教學(xué)實(shí)驗(yàn)用危險(xiǎn)固體、液體的使用與保管
- ARDS患者的護(hù)理查房課件
- 人大企業(yè)經(jīng)濟(jì)學(xué)考研真題-802經(jīng)濟(jì)學(xué)綜合歷年真題重點(diǎn)
評(píng)論
0/150
提交評(píng)論