国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種基于深度學(xué)習(xí)的電影推薦算法

2019-10-08 06:43李浩然劉光遠(yuǎn)張樂(lè)瑩
軟件 2019年5期
關(guān)鍵詞:協(xié)同過(guò)濾卷積神經(jīng)網(wǎng)絡(luò)

李浩然 劉光遠(yuǎn) 張樂(lè)瑩

摘 ?要: 隨著互聯(lián)網(wǎng)的發(fā)展,人們的娛樂(lè)方式趨于多樣化,但人們總想可以直接定位根據(jù)自己口味的電影而不是通過(guò)自己的搜索和朋友的推薦。然而目前已有的推薦系統(tǒng)機(jī)制過(guò)于簡(jiǎn)單,往往是根據(jù)網(wǎng)友對(duì)電影的的綜合評(píng)分,可根據(jù)關(guān)鍵字,類別等具體搜索,久而久之的搜索痕跡來(lái)證明用戶的喜好。這種基于協(xié)同過(guò)濾的推薦系統(tǒng)在遇到冷啟動(dòng)問(wèn)題時(shí)會(huì)產(chǎn)生較大的偏差。本文利用卷積神經(jīng)網(wǎng)絡(luò)結(jié)合協(xié)同過(guò)濾系統(tǒng)設(shè)計(jì)出了一款基于神經(jīng)網(wǎng)絡(luò)的電影推薦系統(tǒng),利用MBGD(小批量梯度下降法)對(duì)模型進(jìn)行優(yōu)化,并在有限的數(shù)據(jù)集下進(jìn)行了該系統(tǒng)的實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果表明該系統(tǒng)比傳統(tǒng)推薦方法具有更高的準(zhǔn)確性。

關(guān)鍵詞: 卷積神經(jīng)網(wǎng)絡(luò)(CNN)、協(xié)同過(guò)濾、文本卷積網(wǎng)絡(luò)、迭代次數(shù)、小批量梯度下降法(MBGD)

中圖分類號(hào): TP183 ? ?文獻(xiàn)標(biāo)識(shí)碼: A ? ?DOI:10.3969/j.issn.1003-6970.2019.05.036

本文著錄格式:李浩然,劉光遠(yuǎn),張樂(lè)瑩. 一種基于深度學(xué)習(xí)的電影推薦算法[J]. 軟件,2019,40(5):185189

【Abstract】: With the development of the Internet, people's entertainment methods tend to be diversified, but people always want to be able to directly locate movies according to their own tastes rather than through their own search and friends' recommendations. However, the existing recommendation system mechanism is too simple, and it is often based on the comprehensive rating of the users on the movie, and the user's preferences can be proved according to the specific search of keywords, categories, and the like. This collaborative filtering-based recommendation system can cause large deviations when it encounters a cold start problem. In this paper, a convolutional neural network combined with collaborative filtering system is used to design a movie recommendation system based on neural network. The model is optimized by MBGD (small batch gradient descent method), and the experiment of the system is carried out under a limited data set. Experimental results show that the system has higher accuracy than the traditional recommended method.

【Key words】: Convolutional neural network(CNN); Collaborative filtering; Text convolutional network; Iteration number; Small batch gradient descent method (MBGD)

0 ?引言

隨著互聯(lián)網(wǎng)的發(fā)展,人們的娛樂(lè)方式趨于多樣化,但人們總想可以直接定位根據(jù)自己口味的電影而不是通過(guò)自己的搜索和朋友的推薦,同時(shí),各大觀影平臺(tái)和電影評(píng)分網(wǎng)站也希望可以通過(guò)對(duì)用戶已公開(kāi)的數(shù)據(jù)進(jìn)行分析從而推薦出用戶可能喜歡的電影以增加用戶粘性,例如全美最大收費(fèi)視頻平臺(tái)Netflix曾舉辦競(jìng)賽[1]來(lái)獲得最佳算法以改進(jìn)其推薦系統(tǒng)。傳統(tǒng)的點(diǎn)評(píng)和推薦的機(jī)制較為簡(jiǎn)單,往往是根據(jù)網(wǎng)友對(duì)電影的的綜合評(píng)分,可根據(jù)關(guān)鍵字,類別等具體搜索,久而久之的搜索痕跡來(lái)證明用戶的喜好。然而電影的偏好所涉及的因素多種多樣。例如傳統(tǒng)的基于電影評(píng)分的單一系統(tǒng)無(wú)法考慮到部分影片存在用戶惡意低評(píng)或者批量好評(píng)提升評(píng)分的現(xiàn)象,所以僅根據(jù)電影評(píng)分進(jìn)行推薦會(huì)導(dǎo)致推薦混亂。若是用戶僅根據(jù)電影類別進(jìn)行搜索,搜索結(jié)果也只是將電影進(jìn)行歸類,這些結(jié)果并沒(méi)有經(jīng)過(guò)篩選,所以電影口碑參差不齊的搜索結(jié)果也會(huì)在一定程度上影響用戶對(duì)電影和電影人的評(píng)價(jià)。因此當(dāng)今亟需一個(gè)綜合更多維度的有效推薦系統(tǒng)。

基于此,本文使用MovieLen數(shù)據(jù)集[2],提取其中電影名稱和電影ID并與電影類型綜合使用解決問(wèn)題,主體使用卷積神經(jīng)網(wǎng)絡(luò)[3],附加通過(guò)文本卷積神經(jīng)網(wǎng)絡(luò)[4]結(jié)合協(xié)同過(guò)濾技術(shù)[5]增加算法可靠性。為了驗(yàn)證模型的有效性本文采用相關(guān)數(shù)據(jù)進(jìn)行測(cè) ?試對(duì)比,實(shí)驗(yàn)結(jié)果表明本文的模型和方法有較好的效果。

1 ?相關(guān)工作

傳統(tǒng)對(duì)情感分析的方法是利用情感字典將各類詞匯根據(jù)經(jīng)驗(yàn)進(jìn)行分類,之后將分類的結(jié)果作為依據(jù)對(duì)情感進(jìn)行分析。將不好看,無(wú)聊等消極的詞匯自動(dòng)歸為差評(píng),將好看,經(jīng)典等詞匯歸為好評(píng),這樣雖然能成功的根據(jù)電影的影評(píng)來(lái)對(duì)電影進(jìn)行自動(dòng)評(píng)分,但是有些生僻或者莫能兩可的詞匯卻會(huì)對(duì)評(píng)分產(chǎn)生干擾甚至是錯(cuò)評(píng),具有較低的精度,并且情感字典需要極其大量的數(shù)據(jù)和人為經(jīng)驗(yàn)的預(yù)先規(guī)定和輸入,在沒(méi)有相關(guān)語(yǔ)言背景的條件下幾乎無(wú)法實(shí)現(xiàn)。之后也利用機(jī)器學(xué)習(xí)來(lái)對(duì)情感進(jìn)行分析預(yù)測(cè),但是對(duì)機(jī)器訓(xùn)練的過(guò)程中需要極其大量的數(shù)據(jù)作為支柱來(lái)提高結(jié)果的精確性,這種方法也不便于執(zhí)行。

同時(shí)傳統(tǒng)的推薦系統(tǒng)使用的協(xié)同過(guò)濾技術(shù)過(guò)于單一,往往只綜合評(píng)分和同樣用戶的觀看記錄,然而在本模型中我們使用了文本卷積網(wǎng)絡(luò)處理電影名稱同時(shí)作為推薦的另外一個(gè)評(píng)判標(biāo)準(zhǔn)。

本文未實(shí)用深層神經(jīng)網(wǎng)絡(luò)主要有以下兩個(gè)考慮原因,首先DNN結(jié)構(gòu)的神經(jīng)元層數(shù)較多,訓(xùn)練的結(jié)果極易受極值的影響,影評(píng)中的極端評(píng)價(jià)則有極大可能使模型陷入局部極值。其次較深層次的網(wǎng)絡(luò)需要十分大量的數(shù)據(jù)進(jìn)行訓(xùn)練,不足量的數(shù)據(jù)可能導(dǎo)致自底層只能接收到小量的數(shù)據(jù)甚至無(wú)法接收到數(shù)據(jù),從而在擬合時(shí)出現(xiàn)偏差。

BP神經(jīng)網(wǎng)絡(luò)[6-9]和DNN存在相似的問(wèn)題,雖然其按誤差逆?zhèn)鞑ニ惴ㄟM(jìn)行模型訓(xùn)練,有著較高的容錯(cuò)性和泛化自適應(yīng)性,但是多層次的前饋網(wǎng)絡(luò)卻十分依賴于樣本,訓(xùn)練和預(yù)測(cè)能力的趨勢(shì)并不固定。并且需要合適的數(shù)據(jù)量進(jìn)行訓(xùn)練,否則會(huì)容易因訓(xùn)練的樣本過(guò)多或過(guò)少而導(dǎo)致過(guò)度擬合。

所以在此情況下,本文考慮使用的CNN卷積神經(jīng)網(wǎng)絡(luò)他不僅允許人為的規(guī)定訓(xùn)練的重心,通過(guò)逐層的特征提取來(lái)提升分類的準(zhǔn)確性[10],而且其局部連接,權(quán)值共享及采樣操作等特性可以有效的降低網(wǎng)絡(luò)的復(fù)雜度,減少訓(xùn)練參數(shù)的數(shù)目[11]。

2 ?相關(guān)模型和算法

2.1 ?文本卷積網(wǎng)絡(luò)

在進(jìn)行電影推薦時(shí),我們需要處理的數(shù)據(jù)類別包含了用戶的年齡、性別、喜好的電影類型、電影的評(píng)分以及電影的名稱。相對(duì)于前4個(gè)元素,我們對(duì)數(shù)據(jù)進(jìn)行了預(yù)處理,然而電影的名稱并不好轉(zhuǎn)化為數(shù)字,所以在對(duì)其進(jìn)行分析和建模時(shí)我們使用了文本卷積網(wǎng)絡(luò),網(wǎng)絡(luò)的具體樣式如圖1所示,其中,網(wǎng)絡(luò)的第一層為詞嵌入層,該層為多個(gè)嵌入矩陣,每個(gè)嵌入矩陣由多個(gè)嵌入向量組成,每個(gè)嵌入向量均表示一個(gè)單詞。第二層為多個(gè)不同尺寸的卷積核在詞嵌入層的矩陣上做卷積,尺寸大小表示了每次卷積計(jì)算覆蓋的單詞的多少。不同于對(duì)圖像的卷積,文本的卷積要覆蓋整個(gè)單詞的嵌入向量,所以其尺寸為單詞數(shù),每次卷積滑動(dòng)的長(zhǎng)度一般為4~5個(gè)單詞。第三層網(wǎng)絡(luò)是max pooling所得到的一個(gè)長(zhǎng)向量,最后通過(guò)deopout對(duì)結(jié)果進(jìn)行正則化,最終得到了電影名稱的特征值。

2.2 ?模型設(shè)計(jì)

本文所采用的算法CNN為一種深度神經(jīng)網(wǎng)絡(luò),其基本模型如圖2所示。

首先,本文在輸入層使用了嵌入層將數(shù)據(jù)進(jìn)行處理并得到模型訓(xùn)練所需的特征。在第一層嵌入層中,本文設(shè)置的維度分別為(n,32)和(n,16),然而由于有些電影存在多個(gè)類型,比如科幻動(dòng)作,所以,本文將電影類型的特征矩陣取出后進(jìn)行了求和,得到了一個(gè)(1,32)的向量。之后,將所有特征引出并將其接連傳輸?shù)絻蓚€(gè)全鏈接層中,最終分別得到大小為(1,200)的用戶特征和電影特征兩個(gè)特征向量。本文通過(guò)對(duì)這兩個(gè)特征向量做向量乘法,將真實(shí)測(cè)評(píng)與該結(jié)果做回歸分析,采用均方誤差對(duì)結(jié)果進(jìn)行優(yōu)化,最終得出了相較完美的電影推薦結(jié)果。

3 ?實(shí)驗(yàn)

3.1 ?數(shù)據(jù)集

本文所用到的數(shù)據(jù)為MovieLens所提供的數(shù)據(jù)集。這其中包含了大約3,900部電影的1,000,209個(gè)匿名評(píng)級(jí),以及匿名用戶的部分身份信息。用戶數(shù)據(jù)中包括了用戶的年齡、性別、職業(yè)和郵編。為了更方便地使用數(shù)據(jù),我們對(duì)數(shù)據(jù)進(jìn)行了處理,將不需要的郵編數(shù)據(jù)進(jìn)行了舍棄,將性別修改成了0和1方便讀取,對(duì)不同的職業(yè)進(jìn)行了不同的編碼,并且將年齡按照不同的年齡段劃分為了0~6多個(gè)層級(jí),最終的數(shù)據(jù)內(nèi)容如圖3所示。電影數(shù)據(jù)中,則包含了電影的名稱和電影的類別,其中,一部電影的類別可能為很多種,考慮到后面訓(xùn)練模型時(shí)可能會(huì)遇到的問(wèn)題,本文對(duì)電影的類別數(shù)據(jù)通過(guò)了如上文中所述的文本卷積網(wǎng)絡(luò)進(jìn)行了處理。電影數(shù)據(jù)的內(nèi)容如圖4所示。本次所使用的數(shù)據(jù)集還有另外一個(gè)評(píng)級(jí)數(shù)據(jù)集,也就是本文在訓(xùn)練時(shí)設(shè)置的Target,其中包含了用戶的ID、電影的ID、電影的星級(jí)評(píng)價(jià)(滿分為5)以及評(píng)價(jià)時(shí)間,由于本次模型訓(xùn)練的Target為電影的評(píng)分,故我們?cè)谟?xùn)練時(shí)將評(píng)價(jià)時(shí)間舍棄,具體的數(shù)據(jù)內(nèi)容如圖5所示。

3.2 ?數(shù)據(jù)預(yù)處理

由于在數(shù)據(jù)集中,電影的類別和名稱都是文本的形式,本文將其轉(zhuǎn)化為了數(shù)字類型。首先將其轉(zhuǎn)化為字符串,并以數(shù)字的形式保存在字典類型當(dāng)中,之后,由于電影的類別包含多個(gè)參數(shù),電影的名稱包含多個(gè)字段,我們均將其轉(zhuǎn)換為了數(shù)字列表,同時(shí)去掉了電影名稱中的年份。最終結(jié)果如下圖6所示。

3.3 ?訓(xùn)練參數(shù)設(shè)置

本文在初次進(jìn)行卷積神經(jīng)網(wǎng)絡(luò)建模時(shí)產(chǎn)生了較大的誤差,為了保證算法的精確性,且由于實(shí)驗(yàn)使用的數(shù)據(jù)量較大,本文最終決定采用MBGD(小批量梯度下降法)對(duì)卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行優(yōu)化。但其在模型訓(xùn)練過(guò)程中需要使用大量的訓(xùn)練數(shù)據(jù)進(jìn)行長(zhǎng)時(shí)間的計(jì)算,其中,代價(jià)函數(shù)和激活函數(shù)的選擇對(duì)模型的訓(xùn)練效率有很大的影響[12]。優(yōu)化過(guò)程中,影響最大的參數(shù)主要有三個(gè):batch_size、學(xué)習(xí)率和迭代次數(shù)。本文為了探究不同參數(shù)影響下卷積神經(jīng)網(wǎng)絡(luò)的推薦結(jié)果,分別設(shè)置了三組不同的參數(shù)。其中,學(xué)習(xí)率我們?cè)O(shè)為0.0001。dropout我們?cè)O(shè)為0.5。batch_size和迭代次數(shù)分別設(shè)為了64和5、256和5、64和20這三組,并分別求出了不同情況下,train loss(訓(xùn)練缺損)和test loss(測(cè)試缺損)的統(tǒng)計(jì)圖,結(jié)果分別如圖7-9表示。

圖7和圖8為在迭代次數(shù)同為5的情況下,分別將batch_size設(shè)置為64和256兩個(gè)不同數(shù)值時(shí),模型的訓(xùn)練缺損和測(cè)試缺損的統(tǒng)計(jì)分布,從圖中可以看出,當(dāng)batch_sieze被設(shè)置為256時(shí),明顯其訓(xùn)練缺損由最初的0.48~0.85降低到了最終的0.41~ 0.7,其測(cè)試缺損由最初的0.6~1.1降低到了0.53~ 0.93,說(shuō)明訓(xùn)練和測(cè)試的缺損經(jīng)過(guò)多次迭代后有所降低。然而,其整個(gè)訓(xùn)練過(guò)程并不穩(wěn)定,說(shuō)明迭代次數(shù)過(guò)少。當(dāng)batch_size被設(shè)置為64時(shí),可明顯看出相較于先前設(shè)置的參數(shù)而言,訓(xùn)練缺損明顯有所降低。其訓(xùn)練缺損由最初的0.48~0.82降低到了0.42~0.7,其測(cè)試缺損由最初的0.6~1.1降低到了0.52~0.91。同于batch_size被設(shè)為256的情況,訓(xùn)練和測(cè)試的缺損,經(jīng)過(guò)多次迭代后有所降低,但是其整個(gè)訓(xùn)練過(guò)程依然并不穩(wěn)定。通過(guò)對(duì)batch_size的數(shù)值進(jìn)行修改,本文發(fā)現(xiàn),當(dāng)對(duì)一定大小的數(shù)據(jù)集進(jìn)行訓(xùn)練時(shí),適當(dāng)?shù)目s小batch_size可以有效的降低訓(xùn)練缺損。

圖8和圖9為在batch_size同為64的情況下,分別將迭代次數(shù)設(shè)置為5和20兩個(gè)不同的數(shù)值時(shí),模型的訓(xùn)練缺損和測(cè)試缺損的統(tǒng)計(jì)分布。從圖中可以明顯的看出,當(dāng)?shù)螖?shù)被設(shè)置為20次時(shí),訓(xùn)練缺損和測(cè)試缺損并未出現(xiàn)5次迭代實(shí)驗(yàn)時(shí)的大幅波動(dòng),其呈現(xiàn)出了更加穩(wěn)定的狀態(tài)。而在結(jié)果上,迭代次數(shù)為20的這次訓(xùn)練和測(cè)試與迭代次數(shù)為5時(shí)完全相同,故本文認(rèn)為,當(dāng)batch_size為確定值時(shí),增加迭代次數(shù)可以使訓(xùn)練和測(cè)試結(jié)果更加穩(wěn)定,然而增加迭代次數(shù)會(huì)使訓(xùn)練時(shí)間更長(zhǎng),應(yīng)當(dāng)適量的增加迭代次數(shù)。

3.4 ?實(shí)驗(yàn)結(jié)果

通過(guò)上述步驟,本文最終將參數(shù)設(shè)定為batch_size設(shè)置為64、迭代次數(shù)為20次、學(xué)習(xí)率為0.0001、dropout設(shè)置為0.5。通過(guò)用戶特征向量與電影特征矩陣計(jì)算所有電影的評(píng)分,取評(píng)分最高的top_k個(gè)來(lái)實(shí)現(xiàn)給用戶推薦其可能喜歡的電影。具體實(shí)現(xiàn)的結(jié)果如圖10所示。通過(guò)本文輸入的電影,系統(tǒng)最終給出了符合相同類別的最佳評(píng)分的5個(gè)電影,可以認(rèn)為,本文的這種電影推薦算法表現(xiàn)出了十分良好的性能。

4 ?總結(jié)

本文利用文本卷積網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)(CNN)對(duì)電影數(shù)據(jù)進(jìn)行分析和建模,通過(guò)多次實(shí)驗(yàn)對(duì)CNN的參數(shù)進(jìn)行了調(diào)整和校對(duì)并確認(rèn)了最優(yōu)的卷積神經(jīng)網(wǎng)絡(luò)參數(shù),最終成功地實(shí)現(xiàn)了電影推薦系統(tǒng),該系統(tǒng)綜合了多種維度并依然保持著很高的推薦精確度,明顯優(yōu)于傳統(tǒng)的電影推薦系統(tǒng)。目前該系統(tǒng)存在的問(wèn)題是缺少最新的電影數(shù)據(jù)進(jìn)行測(cè)評(píng),故還需要更多的實(shí)驗(yàn)來(lái)進(jìn)行該系統(tǒng)的完善。

參考文獻(xiàn)

[1] Netflix Prize https://www.netflixprize.com/index.html.

[2] F. Maxwell Harper and Joseph A. Konstan. 2015. The MovieLens Datasets: Historyand Context. ACM Transactions on Interactive Intelligent Systems (TiiS) 5, 4,Article 19 (December 2015), 19 pages. DOI=http://dx.doi.org/10.1145/ 2827872.

[3] LeCun Y, Bottou L, Bengio Y, et al. Gradient-based learning applied to document recognition[J]. Proceedings of the IEEE, 1998, 86(11): 2278-2324.

[4] Kim Y. Convolutional neural networks for sentence classification[J]. arXiv preprint arXiv:1408.5882, 2014.

[5] Sarwar B M, Karypis G, Konstan J A, et al. Item-based collaborative filtering recommendation algorithms[J]. Www, 2001, 1: 285-295.

[6] Pineda F J. Generalization of back-propagation to recurrent neural networks[J]. Physical review letters, 1987, 59(19): 2229.

[7] 安大海, 蔣硯軍. 基于BP神經(jīng)網(wǎng)絡(luò)的人臉識(shí)別系統(tǒng)[J]. 軟件, 2015, 36(12): 76-79.

[8] 王宏濤, 孫劍偉. 基于BP神經(jīng)網(wǎng)絡(luò)和SVM 的分類方法研究[J]. 軟件, 2015, 36(11): 96-99.

[9] 吳亞熙, 岑峰. 基于卷積神經(jīng)網(wǎng)絡(luò)的多層級(jí)目標(biāo)檢測(cè)方法[J]. 軟件, 2018, 39(4): 164-169.

[10] 張敏, 徐啟華. 基于改進(jìn)BP的神經(jīng)網(wǎng)絡(luò)模型參考自適應(yīng)控制[J]. 軟件, 2015, 36(7): 118-123.

[11] 劉健袁, 謙吳, 廣喻曉. 卷積神經(jīng)網(wǎng)絡(luò)綜述. TP183.

[12] 趙宏, 郭萬(wàn)鵬. 深度神經(jīng)網(wǎng)絡(luò)代價(jià)函數(shù)選擇與性能評(píng)測(cè)研究[J]. 軟件, 2018, 39(01): 14-20.

猜你喜歡
協(xié)同過(guò)濾卷積神經(jīng)網(wǎng)絡(luò)
基于深度卷積神經(jīng)網(wǎng)絡(luò)的物體識(shí)別算法
乾安县| 仪陇县| 汶川县| 岚皋县| 兴化市| 泽普县| 建阳市| 西乌珠穆沁旗| 黄浦区| 怀集县| 马关县| 安国市| 平和县| 泾源县| 孝感市| 北流市| 新晃| 彩票| 巴马| 子长县| 曲靖市| 安泽县| 长治市| 江达县| 金川县| 奉化市| 类乌齐县| 普定县| 安图县| 固安县| 阳山县| 娱乐| 衡阳县| 阿尔山市| 苍梧县| 丁青县| 天气| 廊坊市| 葵青区| 麟游县| 彭泽县|