梁肇敏,梁婷婷
(南寧學(xué)院 人工智能學(xué)院,南寧 530200)
隨著計(jì)算機(jī)與網(wǎng)絡(luò)技術(shù)的長(zhǎng)足發(fā)展,數(shù)字化的管理方式也逐漸融入社會(huì)各個(gè)行業(yè)中。數(shù)據(jù)的海量增長(zhǎng)是管理方式數(shù)字化后的必然結(jié)果,而在其中也蘊(yùn)含著對(duì)用戶而言各類有價(jià)值的信息。研究可知,推薦系統(tǒng)通過(guò)某類特定方式讓用戶和物品連接起來(lái),不但可以幫助用戶發(fā)現(xiàn)有用信息,還能將信息展現(xiàn)給感興趣的用戶,從而為用戶決策提供有益參考。目前,很多領(lǐng)域都開(kāi)始引入個(gè)性化推薦系統(tǒng),將大量數(shù)據(jù)轉(zhuǎn)化成為有價(jià)值信息就顯得尤為重要。
而隨著互聯(lián)網(wǎng)上產(chǎn)生的數(shù)據(jù)規(guī)模日趨龐大,以協(xié)同過(guò)濾算法為代表的傳統(tǒng)推薦由于無(wú)法充分挖掘海量數(shù)據(jù)特征、對(duì)稀疏數(shù)據(jù)處理并不理想等缺點(diǎn),使得傳統(tǒng)推薦已無(wú)法適用于現(xiàn)代大數(shù)據(jù)背景下的推薦場(chǎng)景。考慮到深度學(xué)習(xí)具有表達(dá)能力強(qiáng),能在海量數(shù)據(jù)挖掘深層次、有價(jià)值關(guān)系的優(yōu)點(diǎn),越來(lái)越多推薦業(yè)務(wù)場(chǎng)景用上了深度學(xué)習(xí)技術(shù),而深度學(xué)習(xí)的推薦系統(tǒng)相比于傳統(tǒng)推薦系統(tǒng)的架構(gòu)設(shè)計(jì)在實(shí)現(xiàn)上又有較大差異。綜合前文論述后進(jìn)一步探討指出,本文擬選在電影推薦場(chǎng)景下展開(kāi)對(duì)深度學(xué)習(xí)推薦系統(tǒng)的研究論述。
傳統(tǒng)推薦系統(tǒng)中使用的以協(xié)同過(guò)濾為代表的推薦系統(tǒng)模型,因?yàn)殡y以解決數(shù)據(jù)稀疏性、冷啟動(dòng)等問(wèn)題使得推薦效果并不令人滿意,特別是對(duì)目前產(chǎn)生的巨量數(shù)據(jù)處理上已然處于劣勢(shì)。在大數(shù)據(jù)背景下,有關(guān)推薦系統(tǒng)核心模型設(shè)計(jì)上,現(xiàn)已越來(lái)越多地引入深度學(xué)習(xí)技術(shù),電影推薦系統(tǒng)亦是如此。推薦系統(tǒng)中,通過(guò)利用深度神經(jīng)網(wǎng)絡(luò)構(gòu)建了一個(gè)深度學(xué)習(xí)的電影推薦模型,模型以大數(shù)據(jù)為基礎(chǔ),使用用戶特征和電影特征來(lái)學(xué)習(xí)用戶和電影之間的隱藏特征,深度挖掘用戶和電影之間的相互作用關(guān)系,從而使推薦性能得以提高。
模型框架如圖1所示。由圖1可見(jiàn),在特征表示層通過(guò)神經(jīng)網(wǎng)絡(luò)將用戶和電影進(jìn)行嵌入式(Embedding)表示,得到用戶和電影的嵌入式向量,然后分別對(duì)用戶和電影的嵌入式向量特征進(jìn)行特征融合,得到能分別表示用戶和電影的特征。接下來(lái),再通過(guò)多層神經(jīng)網(wǎng)絡(luò)對(duì)用戶特征和電影特征進(jìn)行充分融合,組合學(xué)習(xí)不同特征實(shí)現(xiàn)融合解析,充分挖掘多特征的組合,深度挖掘用戶與電影交互關(guān)系。
圖1 深度神經(jīng)網(wǎng)絡(luò)電影推薦模型總體框架圖Fig.1 Overall framework of deep neural network movie recommendation model
網(wǎng)絡(luò)特征主要用到數(shù)據(jù)中用戶特征的4個(gè)屬性,分別是用戶ID、性別、職業(yè)和年齡,而電影特征用到的3個(gè)屬性,分別是電影ID、電影類型和電影名稱。深度神經(jīng)網(wǎng)絡(luò)輸入的數(shù)據(jù)有別于傳統(tǒng)模型,一般情況下是將數(shù)值型的數(shù)據(jù)輸入到神經(jīng)網(wǎng)絡(luò)模型中。所以用戶的特征屬性和電影的特征屬性需要做數(shù)值化的嵌入式(Embedding)向量表示處理。
Embedding是一個(gè)嵌入層,將輸入的非負(fù)整數(shù)矩陣中的每個(gè)數(shù)值,轉(zhuǎn)換為具有固定長(zhǎng)度的向量。在NLP任務(wù)中,多是把輸入文本映射成向量表示,以利于神經(jīng)網(wǎng)絡(luò)的處理。嵌入層Embedding可以完成數(shù)字到向量的映射。
1.2.1 用戶嵌入式向量表示
用戶特征屬性需要將用戶的ID、用戶性別、用戶職業(yè)和用戶年齡分別經(jīng)過(guò)嵌入層映射成高維度向量,再利用全連接層得到屬性特征,而后將這些屬性特征進(jìn)行拼接和全連接后得到用戶特征。
1.2.2 電影嵌入式向量表示
電影特征屬性需要將電影ID、電影類型、電影名稱這些數(shù)據(jù)分別經(jīng)過(guò)嵌入層映射成高維度向量,其中的電影名稱常常蘊(yùn)含有豐富的文本信息,所以可以用文本卷積神經(jīng)網(wǎng)絡(luò)來(lái)進(jìn)行特征提取,并經(jīng)過(guò)全連接層得到屬性特征。將這些屬性特征進(jìn)行拼接和全連接后得到電影特征。
在提取了用戶特征和電影特征后,就可以將用戶特征和電影特征進(jìn)行融合,這里是將用戶特征和電影特征先進(jìn)行融合,具體就是采用向量拼接的方式融合成多層神經(jīng)網(wǎng)絡(luò)輸入需要的向量,此處需用到的數(shù)學(xué)公式為:
其中,函數(shù)表示將用戶特征u和電影的特征m進(jìn)行拼接,x表示輸入到網(wǎng)絡(luò)中的向量。輸入多層神經(jīng)網(wǎng)絡(luò)中,到第一個(gè)隱藏的輸出值表達(dá)式為:
其中,表示激活函數(shù),這里使用了函數(shù)作為隱藏層的激活函數(shù);表示輸入層和第一個(gè)隱藏層之間的權(quán)重矩陣;表示偏置向量。輸出層的函數(shù)公式為:
其中,使用函數(shù)作為輸出層激活函數(shù),函數(shù)為交叉熵?fù)p失函數(shù),推得的數(shù)學(xué)公式可表示為:
在模型訓(xùn)練上,使用作為優(yōu)化函數(shù),根據(jù)梯度值、下降振蕩情況,設(shè)置學(xué)習(xí)率為0.001。模型訓(xùn)練后,就可以根據(jù)模型預(yù)測(cè)觀看電影的概率大小來(lái)實(shí)現(xiàn)模型對(duì)用戶的電影推薦。
本系統(tǒng)具體架構(gòu)如圖2所示。由圖2可知,系統(tǒng)整體架構(gòu)分為數(shù)據(jù)處理層、模型層、前端視圖層。對(duì)此可做研究分述如下。
圖2 電影推薦系統(tǒng)總體架構(gòu)圖Fig.2 Overall architecture of movie recommendation system
在數(shù)據(jù)處理層中,系統(tǒng)使用Spark批量對(duì)離線的用戶特征和電影特征進(jìn)行特征處理,使用Flink對(duì)客戶端的實(shí)時(shí)在線特征數(shù)據(jù)進(jìn)行特征處理。系統(tǒng)經(jīng)過(guò)數(shù)據(jù)處理和特征工程得到的用戶和電影特征存在如相關(guān)Redis等數(shù)據(jù)庫(kù)中以備使用。
在模型層中,系統(tǒng)使用Spark MLib中的相關(guān)Embedding推薦和協(xié)同過(guò)濾等多種傳統(tǒng)推薦算法進(jìn)行快速召回,篩選出推薦用的候選集。TensorFlow訓(xùn)練深度學(xué)習(xí)推薦模型后,利用TensorFlow Serving研發(fā)部署在線推薦用戶電影列表。
前端視圖層使用Html、Css和JavaScript等前端技術(shù),展示系統(tǒng)推薦出來(lái)的電影推薦信息。
基于深度學(xué)習(xí)的電影推薦系統(tǒng)在功能設(shè)計(jì)上總體包含4個(gè)功能模塊,分別是:用戶登錄注冊(cè)、電影搜索查找模塊、個(gè)人中心模塊、推薦模塊。具體如圖3所示。這里將對(duì)此進(jìn)行闡釋表述如下。
圖3 電影推薦系統(tǒng)功能模塊圖Fig.3 Functional module diagram of movie recommendation system
(1)用戶登錄注冊(cè)模塊。包括用戶登錄和用戶注冊(cè)功能,實(shí)現(xiàn)對(duì)用戶的身份進(jìn)行驗(yàn)證,輸入賬號(hào)如沒(méi)有注冊(cè),則會(huì)跳轉(zhuǎn)到注冊(cè)界面。在注冊(cè)界面用戶填寫相關(guān)注冊(cè)信息,如注冊(cè)賬號(hào)已經(jīng)存在,則該賬號(hào)不能注冊(cè)。
(2)個(gè)人信息維護(hù)模塊。包括個(gè)人信息維護(hù)和興趣標(biāo)簽維護(hù)功能,實(shí)現(xiàn)對(duì)用戶個(gè)人信息的存儲(chǔ)維護(hù),用于收集用戶的偏好和個(gè)人信息。系統(tǒng)可以提取用戶特征提供用戶數(shù)據(jù)。
(3)電影搜索查找模塊。包括電影搜索功能,為用戶提供電影的相關(guān)影片信息搜索。
(4)電影推薦模塊。包括相似電影推薦和個(gè)性化電影推薦兩個(gè)功能。其中,相似電影推薦是用戶點(diǎn)擊瀏覽某部電影后,系統(tǒng)根據(jù)與該電影相似的電影進(jìn)行推薦。而用戶個(gè)性化推薦是系統(tǒng)根據(jù)用戶的瀏覽歷史行為,分析出用戶對(duì)電影的偏好,從而進(jìn)行有針對(duì)性的推薦。
2.3.1 ER圖設(shè)計(jì)
系統(tǒng)的主要實(shí)體是用戶和電影。用戶可以查看相關(guān)電影信息,若點(diǎn)擊一部電影,系統(tǒng)將會(huì)推薦與這部電影相似的其他電影。用戶登錄后,系統(tǒng)還會(huì)根據(jù)用戶歷史行為數(shù)據(jù),為用戶推薦可能喜歡的電影。文中對(duì)此將做設(shè)計(jì)剖析如下。
(1)用戶實(shí)體。是系統(tǒng)對(duì)用戶的信息進(jìn)行描述,用戶實(shí)體的屬性包括用戶編號(hào)、用戶名稱、用戶密碼、用戶性別、用戶年齡、用戶職業(yè)。研究中給出的用戶ER圖如圖4所示。
圖4 用戶ER圖Fig.4 User ER diagram
(2)電影實(shí)體。是系統(tǒng)對(duì)電影的信息進(jìn)行描述,電影實(shí)體的屬性包括:電影編號(hào),電影名稱、用戶密碼、用戶性別、用戶年齡、用戶職業(yè)。研究給出的電影ER圖如圖5所示。
圖5 電影ER圖Fig.5 Movie ER diagram
(3)用戶評(píng)分實(shí)體。是用戶對(duì)電影評(píng)分的描述,用戶評(píng)分實(shí)體的屬性包括了用戶編號(hào)、電影編號(hào)、用戶評(píng)分值和評(píng)分時(shí)間等信息,研究給出的用戶評(píng)分ER圖如圖6所示。
圖6 用戶評(píng)分ER圖Fig.6 User rating ER diagram
(4)電影標(biāo)簽實(shí)體。是用戶給電影指定的標(biāo)簽數(shù)據(jù)的描述,電影標(biāo)簽實(shí)體的屬性包括了用戶編號(hào)、電影編號(hào)、標(biāo)簽,標(biāo)簽時(shí)間。研究給出的電影標(biāo)簽ER圖如圖7所示。
圖7 電影標(biāo)簽ER圖Fig.7 Movie label ER diagram
2.3.2 數(shù)據(jù)表設(shè)計(jì)
數(shù)據(jù)庫(kù)的數(shù)據(jù)表主要包括用戶信息表、電影信息表、用戶評(píng)分表,電影標(biāo)簽表。下面將給出完整論述和解析設(shè)計(jì)。
(1)用戶信息表:用戶信息表主要是保存用戶相關(guān)信息,包括用戶編號(hào)、用戶名稱、用戶密碼、用戶性別、用戶年齡、用戶職業(yè)。詳見(jiàn)表1。
表1 用戶信息表Tab.1 User information table
(2)電影信息表:電影信息表包括電影編號(hào)、電影名稱、電影導(dǎo)演、電影演員、電影類型和上映時(shí)間等信息,詳見(jiàn)表2。
表2 電影信息表Tab.2 Movie information table
(3)用戶評(píng)分表:用戶評(píng)分表保存著用戶對(duì)觀看過(guò)電影的評(píng)分,推薦系統(tǒng)參照該評(píng)分來(lái)挖掘用戶觀影偏好。用戶評(píng)分表包括了用戶編號(hào)、電影編號(hào)、用戶評(píng)分值和評(píng)分時(shí)間等信息,詳見(jiàn)表3。
表3 用戶評(píng)分表Tab.3 User rating table
(4)電影標(biāo)簽表:電影標(biāo)簽表保存的是用戶給電影指定的標(biāo)簽數(shù)據(jù),包括了用戶編號(hào)、電影編號(hào)、標(biāo)簽,標(biāo)簽時(shí)間等,詳見(jiàn)表4。
表4 電影標(biāo)簽表Tab.4 Movie label table
滿足了系統(tǒng)功能性后,就產(chǎn)生了非功能性的需求,此時(shí)需要去考慮的系統(tǒng)運(yùn)行應(yīng)該具備的各項(xiàng)非功能性需求,如:穩(wěn)定性、安全性、易用性、可擴(kuò)展性等。具體闡釋如下。
(1)穩(wěn)定性。系統(tǒng)應(yīng)該能保證用戶訪問(wèn)的穩(wěn)定性,降低用戶的延遲;同時(shí)還應(yīng)該能保證系統(tǒng)運(yùn)行的穩(wěn)定性,使其不致崩潰,導(dǎo)致用戶體驗(yàn)降低。
(2)安全性。用戶各項(xiàng)信息都屬于用戶的隱私,系統(tǒng)需要保證用戶信息等數(shù)據(jù)的安全性,防止出現(xiàn)信息泄露或數(shù)據(jù)丟失的問(wèn)題,以提高用戶對(duì)系統(tǒng)的信任度。
(3)易用性。對(duì)用戶來(lái)說(shuō)系統(tǒng)的前端界面應(yīng)簡(jiǎn)單易懂,無(wú)需復(fù)雜的操作交互邏輯,能讓用戶快速地理解操作流程,輕松上手使用,提升用戶使用體驗(yàn)。
(4)可擴(kuò)展性。系統(tǒng)應(yīng)該切合已有的管理系統(tǒng),保證其升級(jí)擴(kuò)展能力,方便滿足未來(lái)對(duì)新設(shè)備和算法的需求。
系統(tǒng)首頁(yè)展示相關(guān)電影信息,電影信息的展示是按照不同的電影類型來(lái)展示。展示電影的電影名稱、電影海報(bào)和電影評(píng)分。首頁(yè)不顯示任何個(gè)性化推薦結(jié)果,只是按照分類對(duì)電影進(jìn)行展示,供用戶瀏覽。
用戶點(diǎn)擊某部電影信息后,將進(jìn)入電影詳細(xì)信息頁(yè)面,在電影信息頁(yè)上半部分會(huì)顯示出電影海報(bào)、電影名稱、上映時(shí)間、為你預(yù)測(cè)、鏈接、平均分、電影類型和喜歡這部電影的其他用戶等信息。頁(yè)面下半部是推薦與這部電影相似的電影信息。該部分是根據(jù)用戶點(diǎn)擊的電影,由推薦模型對(duì)這部電影進(jìn)行特征分析,計(jì)算找出與該部電影特征相似的電影,再依據(jù)相似度高低,推薦相似度最高的電影到信息頁(yè)面。
該頁(yè)面主要是系統(tǒng)分析用戶瀏覽歷史行為。模型將用戶的編號(hào)、年齡、職業(yè)等各項(xiàng)用戶特征與電影的編號(hào)、電影名稱、電影類型、上映商檢等特征傳入深度學(xué)習(xí)模型,挖掘用戶與電影的深度、潛在的交互。在此基礎(chǔ)上,根據(jù)用戶與電影之間的交互聯(lián)系強(qiáng)弱,為用戶推薦用戶感興趣的電影。用戶相關(guān)信息界面包括已經(jīng)觀看過(guò)的電影、對(duì)電影評(píng)分情況、喜歡的電影類型。
本文利用深度學(xué)習(xí)技術(shù)來(lái)探求挖掘用戶與電影的深度交互關(guān)系,構(gòu)建了基于深度學(xué)習(xí)的推薦模型,并利用Spark、Flink技術(shù)處理了用戶特征和電影特征。用TensorFlow深度學(xué)習(xí)框架對(duì)電影推薦模型進(jìn)行線下訓(xùn)練。同時(shí)使用TensorFlow serving對(duì)電影推薦系統(tǒng)進(jìn)行了線上的部署,為用戶進(jìn)行相似電影推薦和個(gè)性化電影推薦,還把推薦結(jié)果在前端頁(yè)面上進(jìn)行了展示,解決了用戶面對(duì)海量電影信息上的選擇難題。