張 宇, 程 玉,陳建峽, 周世星, 高 奕
(湖北工業(yè)大學計算機學院, 湖北 武漢 430068)
隨著在線學習系統(tǒng)上發(fā)布的課程不斷增多,用戶容易由于課程資源的繁多而不知所措,提高了用戶獲取所需資源的難度。智能推薦系統(tǒng)可以明顯改善以上問題。智能推薦技術能夠在紛繁復雜的信息里提取出需要的信息,也可以根據(jù)日志信息進行用戶推薦。時至今日,推薦系統(tǒng)的研究熱點和被關注程度都很高,應用前景也很寬廣。傳統(tǒng)的推薦方法盡管可以完成推薦任務,但是面對冷啟動和習數(shù)矩陣的問題效果有限。而融合多元異構(gòu)信息的混合推薦方法可以緩和以上問題,但是在輔助信息具有大規(guī)模、多模態(tài)、數(shù)據(jù)異構(gòu)、數(shù)據(jù)稀疏以及分布不均勻等特點時也面臨挑戰(zhàn)。
目前,隨著深度學習在很多相關領域比如推薦和自然語言處理領域的推廣,基于深度學習的推薦系統(tǒng)比起傳統(tǒng)的推薦模型更加強大,推薦質(zhì)量更高。2015年,紀淑娟等人[1]通過神經(jīng)網(wǎng)絡獲取了用戶視頻中的隱形評分;李貴、王爽等人[2]通過三維張量模型,對三種實體(用戶-物品-標簽)完成了潛在語義關聯(lián)分析,提升了標簽推薦系統(tǒng)的準確性;LiSheng等人[3]結(jié)合矩陣分解和深度學習提出了一種協(xié)同過濾深層體系結(jié)構(gòu),使用分解評分矩陣,然后使用深度學習得到評分和邊緣信息里的潛在因素,來使得協(xié)同過濾時潛在學習因素效果更加明顯。2016年,TrapitBansal等人[4]提出了一種可以很好解決冷啟動問題的方法,這種方法使用了深遞歸神經(jīng)網(wǎng)絡;張福正等人[5]在提前結(jié)構(gòu)表示時使用TransR的異構(gòu)網(wǎng)絡嵌入方法,然后使用疊加去噪自動編碼器得到項目文本表示、通過堆疊卷積自動編碼器得到項目視覺表示,并在此基礎上提出了協(xié)作知識庫嵌入(CKE)集成框架。2017年LiSheng等人建立了一種深層協(xié)同神經(jīng)網(wǎng)絡模型,緩解了該領域的數(shù)據(jù)稀疏問題;易義峰、高宜聰?shù)热藶榱送晟苹谥R的推薦系統(tǒng),針對傳統(tǒng)基于知識的推薦推出了一種認知信息增益的測量模型。
由于Youtube網(wǎng)站的視頻資源具有數(shù)據(jù)規(guī)模大、數(shù)據(jù)新鮮度高、數(shù)據(jù)早上大等特點,COVINGTON等[6]選擇DNN來處理離散以及連續(xù)變量。但是,通過學習獲得的視頻和用戶向量在分布上可能還是存在偏差。后來,出現(xiàn)了一類結(jié)合DNN和協(xié)同過濾推進算法的模型,它包括特征表示和評分預測兩大模塊,它是ZHANG等人[7]為了提高推薦性能提出的。LIU等人[8]提出了上下文感知遞歸神經(jīng)網(wǎng)絡(CA-RNN),它通過對上下文和序列信息進行建??梢蕴岣咄扑]效果。YING等人[9]為了降低模型訓練時的復雜度提出了可伸縮的圖卷積神經(jīng)網(wǎng)絡(GCN)算法-PinSage,通過使用局部卷積可以達到目的。TANG等人[10]提出一種基于卷積的序列嵌入模型——Caser模型,這種模型可以為長期興趣和序列模式的獲得給出一種簡潔且統(tǒng)一的網(wǎng)絡結(jié)構(gòu)。KIM等人[11]提出了一種上下文感知模型,這種模型在概率矩陣分解(PMF)中的卷積矩陣分解(ConvMF)中集成了卷積神經(jīng)網(wǎng)絡,它在處理上下文信息的稀疏問題時有著不錯的效果。TUAN 等人[12]提出了一種可以對不同類型和性質(zhì)的數(shù)據(jù)進行建模的三維卷積神經(jīng)網(wǎng)絡。深度學習不僅在挖掘用戶和項目間非線性關系時很高效,還可以在大量數(shù)據(jù)源中獲取數(shù)據(jù)本身內(nèi)部的復雜關系。
傳統(tǒng)的推薦方法主要分為基于內(nèi)容的推薦方法、協(xié)同過濾的推薦方法和混合推薦方法,對于個性化的推薦系統(tǒng)來講,一般包含著如下方面:用戶、用戶特征、對象特征模型以及推薦算法(圖1)。
圖 1 推薦系統(tǒng)架構(gòu)
推薦系統(tǒng)從用戶的交互信息記錄與獲取出發(fā),分析抽取用戶與物品的個性特征,并將這些信息傳到推薦算法中,根據(jù)不同的推薦算法進行的訓練與分析,將推薦信息反饋給用戶,對象推薦模型的對象可以有多種,例如學習資源、課程、電影、音樂等。
卷積神經(jīng)網(wǎng)絡(CNN)是一種常見于深度學習領域的神經(jīng)網(wǎng)絡。使用CNN來構(gòu)建訓練模型有著訓練復雜度低、訓練參數(shù)少的優(yōu)點,將它應用到推薦系統(tǒng)中可以顯著提高準確性。
卷積神經(jīng)網(wǎng)絡包括輸入層、卷積層、池化層、全連接層和輸出層,其中卷積層和池化層組合形成了特征提取器。在卷積層中,上一層神經(jīng)元只連接部分下一層神經(jīng)元,并且在CNN中采用了權值共享,即卷積核,這不僅使得神經(jīng)網(wǎng)絡中的參數(shù)個數(shù)得到了明顯的減少,還降低了過擬合的弊端。卷積神經(jīng)網(wǎng)絡原理見圖2。
圖 2 卷積神經(jīng)網(wǎng)絡原理
系統(tǒng)中存在具有不同權限的用戶:管理者與學習者。不同的用戶對系統(tǒng)有著不同的透明度。學習者經(jīng)過注冊即可進行學習,進行課程的和在線實驗案例的選擇和瀏覽,在論壇進行發(fā)、回帖交流。管理者為最高權限角色。相應的功能有關鍵信息管理(學生、課程主要信息的管理),用戶管理(用戶的權限與信息),學習資源管理(課程資源,視頻資源),后臺管理,信息分析。
2.2.1系統(tǒng)總體框架設計在線學習系統(tǒng)包含了多種子系統(tǒng)與業(yè)務功能,根據(jù)Vue.js的組件化和模塊化思想,這些功能也分成了很多的模塊和組件。組件化的系統(tǒng)各個功能之間的耦合性得以減低,而且在重用性方面有著質(zhì)的變化。系統(tǒng)包括四層結(jié)構(gòu),即系統(tǒng)門戶層、應用模塊層、功能模塊層與數(shù)據(jù)存數(shù)層(圖3)。
圖 3 系統(tǒng)框架
1)系統(tǒng)門戶層:針對于不同的用戶提供不同的服務。學習者可以進行視頻學習,瀏覽課程資料與進行在線的提問;管理員可以進行學習信息、課程資源的管理和問題的解答。
2)應用模塊層:描述各個模塊的實現(xiàn)步驟操作。Vue.js進行前端開發(fā),vue-video-player開源插件進行視頻播放,axios進行HTTP請求,深度學習模型進行數(shù)據(jù)處理和分析。
3)功能模塊層:表達并劃分具有不同功能的子模塊,并且與數(shù)據(jù)層相連接,為數(shù)據(jù)存儲層的操作提供信息傳遞服務。
4)數(shù)據(jù)存儲層:對不同用戶的信息、系統(tǒng)的信息進行存儲。包括學生信息,論壇信息,課程信息,管理信息。
2.2.2系統(tǒng)總體功能設計本系統(tǒng)采用基于B/S架構(gòu),使用MVC模式,前端由Vue.js框架實現(xiàn),后端使用SpringBoot搭建。圍繞學生學習網(wǎng)絡化、多樣化、智能化的設計展開開發(fā)的在線學習系統(tǒng),預期實現(xiàn)功能見圖4。
圖 4 在線學習系統(tǒng)總體功能
1)學生個性化學習推薦模塊 通過收集學生學習內(nèi)容,成績,課程偏好,弱勢課程,學習記錄等多種特征信息,進行信息處理分析,并針對學習者推薦出個性化的學習課程。
2)學生學習評價模塊 通過學習偏好(主要是學習內(nèi)容)的總結(jié),對學生進行綜合性的成績判定和學習評價。
3)在線視頻學習模塊 管理員可以上傳自己的學習課程視頻,學生通過在線學習系統(tǒng)進行視頻學習,并且系統(tǒng)記錄用戶的播放情況等功能。
4)在線程序?qū)嵺`模塊 通過在線程序?qū)嵺`平臺實現(xiàn)相關課程程序開發(fā)練習,提高學生的動手能力。
5)用戶管理子模塊 控制用戶的登錄,已經(jīng)登錄信息的緩存以及新用戶的注冊和用戶信息存儲。
6)課程資料管理模塊 在該子系統(tǒng)中,教師用戶上傳課程資料,這些資料包括PDF、PPT、Word文檔、實驗指導書等,學生用戶可以下載這些課程資料,是在線學習一個不可或缺的環(huán)節(jié)之一。
7)在線交流子模塊 通過論壇發(fā)回帖等與同學、老師們進行學習交流,經(jīng)驗分享。
8)知識圖譜展示模塊 構(gòu)建課程知識圖譜,便于學生直觀地學習和查詢資料。
本學習系統(tǒng)涉及到了多種模塊。用戶登錄注冊、在線學習、在線實驗、資源共享,在線交流等功能。其中在線學習包括在線視頻學習,課程資料如PPT,Word文檔,實驗指導書學習等,能夠滿足學生的多種個性化需求,提高學習效率。
本文設計了以神經(jīng)網(wǎng)絡為基礎的評分預測模型。這種模型在詞嵌入和文本卷積網(wǎng)絡的基礎上融合了深度學習模型,在具有用戶以及學習資源的特征向量上做出了改進,并且在此基礎上使用深度學習挖掘出隱藏的興趣特征。并借助用戶的歷史評分信息,來進行模型的訓練,利用分數(shù)來表達用戶和學習資源的一種潛在關聯(lián)。最終提高了推薦效果性能,使用戶體驗得到了提升。模型分為訓練和推薦兩個部分(圖5)。
圖 5 推薦評分預測模型
3.1.1訓練過程在訓練的過程中,進行學習者特征向量和學習資源向量的提取。
學習者特征向量的抽取利用詞嵌入將用戶的id、姓名、偏好等特征作為輸入,形成一個可以模擬一個用戶特征的向量。在此之后將用戶的特征向量通過兩層全連接層進行訓練,抽取出各用戶特征之間的潛在關系。
學習資源特征向量的抽取通過文本卷積網(wǎng)絡來進行課程名詞向量的獲得,課程id和課程類型經(jīng)過嵌入層來模擬不同屬性的特征向量,最后使用全連接層進行屬性向量的鏈接整合。
文本卷積網(wǎng)絡第一層是輸入層,這一層是句子中的詞語按照對應的上下順序排列的矩陣,成立句子矩陣
A=[x1,x2,…,xm,…,xn]
網(wǎng)絡的第二層是卷積層,這一層每個單詞通過嵌入層的個體向量組成了一個整體嵌入矩陣。通過輸入矩陣和濾波器的點乘再加上編制項,卷積運算公式:
hi=f(W1⊙xi*j+l-1+b)
最后利用激活函數(shù)進行輸出,激活函數(shù):
第三層為池化層,這一層使用Max-over-timePooling方法。此類方法是將上步處理過的一維特征進行提取,在卷積窗口當中提取其中最大的值作為此窗口的特征值。
第四層是全連接+softmax層,這層通過使用Dropout技術的特性來控制訓練的擬合度,并且用L2正則化限制該層的權值參數(shù)。這樣做是為了防止因為隱藏單元的自適應導致擬合程度減輕。
經(jīng)過四層處理之后,得到學習資源Title的向量特征。
3.1.2推進過程用戶和學習者特征向量在抽取之后需要經(jīng)過神經(jīng)網(wǎng)絡層進行模型訓練,通過已有的用戶歷史數(shù)據(jù),即不同用戶對不同課程之間的打分情況,以此作為最后網(wǎng)絡的輸入,進行整體性的訓練,訓練完畢的模型將擁有用戶對不同課程預測打分的效果,課程推薦就是根據(jù)預測分值的不同來進行的。
本文采取mini-batch梯度下降法。
其中a表示為學習率,隨著訓練時間而不斷迭代減小并趨近于0。
本論文利用損失函數(shù)來界定實際輸出與標簽值的差距,本模型使用較為經(jīng)典的交叉熵損失函數(shù)來進行訓練。公式如下:
交叉熵損失函數(shù)在訓練學習過程中容易出現(xiàn)梯度消失,模型無法收斂,為解決這一問題,本文在模型中加入L2正則化。對于網(wǎng)絡中不重要的特征進行權值衰減處理。最后結(jié)合L2正則化以及交叉熵:
在訓練場過程中,使用反向傳播的方式可以進行損失函數(shù)的迭代遞減,批處理的大小由N來表示,正則化參數(shù)為β,全連接層的參數(shù)為θ。通過梯度下降的優(yōu)化與損失遞減,最后將收斂于一個最小區(qū)間浮動,此時可將此模型訓練停止。
3.2.1 edX開放數(shù)據(jù)集edX開放數(shù)據(jù)集中包含了哈佛大學和麻省理工學院從2012到2013年在edX平臺開設的16門課程相關數(shù)據(jù)。
3.2.2在線學習系統(tǒng)數(shù)據(jù)集提供了數(shù)十個屬性,包括課程數(shù)據(jù),學習者信息,學習者行為特點等。
將測試集抽取一部分作為驗證集進行驗證,以課程評分為目標值進行比對,對數(shù)據(jù)集的評分表中內(nèi)容進行評分比較,最終準確率為78.34%,召回率為77.56%,F(xiàn)1值為78.56%(表1)。
表1 訓練結(jié)果表
本在線學習系統(tǒng)分為首頁導航、登錄注冊、課程資源、在線實驗和學習論壇共四大主要的功能模塊,以下是系統(tǒng)在windows10操作系統(tǒng)下,使用edge瀏覽器的實驗結(jié)果。
圖6頁面利用vue.js項目開發(fā)中常用的elemen-ui來進行ui架構(gòu)。導航欄讓用戶可以方便的切換頁面。走馬燈展示最新最近的大數(shù)據(jù)學習資訊。三個卡片介紹各個模塊的特色和功能。關系圖直觀地展示大數(shù)據(jù)學習的知識框架。各個大數(shù)據(jù)技術的官網(wǎng)跳轉(zhuǎn)讓用戶可以方便地了解它們。
圖 6 導航頁面
登錄注冊(圖7)模塊可以通過首頁導航跳轉(zhuǎn),登錄表單對賬戶、密碼和驗證碼的格式進行基本的驗證。表單提交后則會進行進一步的賬戶和密碼進行驗證,驗證通過則導航欄的登錄部分回變?yōu)橥顺?,用戶信息會作為全局狀態(tài)存入系統(tǒng),不通過則會給出對應的錯誤提示。
圖 7 錄注冊頁面
論壇(圖8)模塊采用常見的發(fā)回貼模式,用戶點擊發(fā)帖按鈕即可編輯自己對學習的想法或者問題,發(fā)送到論壇之中。也可以瀏覽其他用戶發(fā)的帖子進行評論等操作,互相交流。
圖 8 論壇首頁
課程資源(圖9、10)模塊提供了海量關于大數(shù)據(jù)學習的視頻等資源,點擊對應的卡片即可跳轉(zhuǎn)到視頻播放頁面進行查看。每個用戶觀看視頻時會產(chǎn)生歷史記錄,通過歷史記錄,基于深度學習的推薦算法會推薦給用戶適合的學習資源。
圖 9 課程選擇頁面
圖10 視頻播放頁面
在線實驗模塊依托于JupyterLab平臺,用戶點擊對應的實驗卡片就可以跳轉(zhuǎn)到juypter平臺在線進行對應的實驗,鞏固和實踐所學的知識,以完善的學習流程提高學習效率。
圖11 實驗選擇頁面
圖12 JupyterLab實驗頁面
本文使用python語言實現(xiàn)了神經(jīng)網(wǎng)絡為基礎的評分預測模型。用戶登錄系統(tǒng)后每次觀看視頻時把用戶和視頻id作為歷史觀看記錄以json格式傳輸?shù)胶蠖恕:蠖藢v史記錄做去重處理后存入歷史文檔。后端程序用開辟進程的方式調(diào)用評分預測模型,以用戶歷史記錄作為輸入,得到推薦序列輸出。推薦序列會被傳輸?shù)角岸耍鳛橥扑]結(jié)果(圖13)。
圖13 推薦結(jié)果頁面
對于在線學習系統(tǒng)來說,學習資源自然是越多越好,但是大量的學習資源在更大程度滿足用戶的同時也會增加用戶選擇成本,違背了學習平臺提高用戶學習效率的出發(fā)點。相較于傳統(tǒng)推薦算法,本文基于更加高效的深度學習的推薦系統(tǒng),為用戶進行個性化的學習資源推送簡化用戶的資源選擇流程。對課程的知識體系,以知識圖譜的形式進行抽取和展示,直觀地展示大數(shù)據(jù)課程的知識結(jié)構(gòu)。為了方便用戶在學習后的實踐,本文借助Jupyter平臺實現(xiàn)了在線的實驗模塊,用戶可以直接在學習平臺上進行案例實踐。在此基礎上,本文在學習平臺中內(nèi)置了一個小型的論壇模塊,方便用戶的交流。