張 宇, 程 玉,陳建峽, 周世星, 高 奕
(湖北工業大學計算機學院, 湖北 武漢 430068)
隨著在線學習系統上發布的課程不斷增多,用戶容易由于課程資源的繁多而不知所措,提高了用戶獲取所需資源的難度。智能推薦系統可以明顯改善以上問題。智能推薦技術能夠在紛繁復雜的信息里提取出需要的信息,也可以根據日志信息進行用戶推薦。時至今日,推薦系統的研究熱點和被關注程度都很高,應用前景也很寬廣。傳統的推薦方法盡管可以完成推薦任務,但是面對冷啟動和習數矩陣的問題效果有限。而融合多元異構信息的混合推薦方法可以緩和以上問題,但是在輔助信息具有大規模、多模態、數據異構、數據稀疏以及分布不均勻等特點時也面臨挑戰。
目前,隨著深度學習在很多相關領域比如推薦和自然語言處理領域的推廣,基于深度學習的推薦系統比起傳統的推薦模型更加強大,推薦質量更高。2015年,紀淑娟等人[1]通過神經網絡獲取了用戶視頻中的隱形評分;李貴、王爽等人[2]通過三維張量模型,對三種實體(用戶-物品-標簽)完成了潛在語義關聯分析,提升了標簽推薦系統的準確性;LiSheng等人[3]結合矩陣分解和深度學習提出了一種協同過濾深層體系結構,使用分解評分矩陣,然后使用深度學習得到評分和邊緣信息里的潛在因素,來使得協同過濾時潛在學習因素效果更加明顯。2016年,TrapitBansal等人[4]提出了一種可以很好解決冷啟動問題的方法,這種方法使用了深遞歸神經網絡;張福正等人[5]在提前結構表示時使用TransR的異構網絡嵌入方法,然后使用疊加去噪自動編碼器得到項目文本表示、通過堆疊卷積自動編碼器得到項目視覺表示,并在此基礎上提出了協作知識庫嵌入(CKE)集成框架。2017年LiSheng等人建立了一種深層協同神經網絡模型,緩解了該領域的數據稀疏問題;易義峰、高宜聰等人為了完善基于知識的推薦系統,針對傳統基于知識的推薦推出了一種認知信息增益的測量模型。
由于Youtube網站的視頻資源具有數據規模大、數據新鮮度高、數據早上大等特點,COVINGTON等[6]選擇DNN來處理離散以及連續變量。但是,通過學習獲得的視頻和用戶向量在分布上可能還是存在偏差。后來,出現了一類結合DNN和協同過濾推進算法的模型,它包括特征表示和評分預測兩大模塊,它是ZHANG等人[7]為了提高推薦性能提出的。LIU等人[8]提出了上下文感知遞歸神經網絡(CA-RNN),它通過對上下文和序列信息進行建模可以提高推薦效果。YING等人[9]為了降低模型訓練時的復雜度提出了可伸縮的圖卷積神經網絡(GCN)算法-PinSage,通過使用局部卷積可以達到目的。TANG等人[10]提出一種基于卷積的序列嵌入模型——Caser模型,這種模型可以為長期興趣和序列模式的獲得給出一種簡潔且統一的網絡結構。KIM等人[11]提出了一種上下文感知模型,這種模型在概率矩陣分解(PMF)中的卷積矩陣分解(ConvMF)中集成了卷積神經網絡,它在處理上下文信息的稀疏問題時有著不錯的效果。TUAN 等人[12]提出了一種可以對不同類型和性質的數據進行建模的三維卷積神經網絡。深度學習不僅在挖掘用戶和項目間非線性關系時很高效,還可以在大量數據源中獲取數據本身內部的復雜關系。
傳統的推薦方法主要分為基于內容的推薦方法、協同過濾的推薦方法和混合推薦方法,對于個性化的推薦系統來講,一般包含著如下方面:用戶、用戶特征、對象特征模型以及推薦算法(圖1)。

圖 1 推薦系統架構
推薦系統從用戶的交互信息記錄與獲取出發,分析抽取用戶與物品的個性特征,并將這些信息傳到推薦算法中,根據不同的推薦算法進行的訓練與分析,將推薦信息反饋給用戶,對象推薦模型的對象可以有多種,例如學習資源、課程、電影、音樂等。
卷積神經網絡(CNN)是一種常見于深度學習領域的神經網絡。使用CNN來構建訓練模型有著訓練復雜度低、訓練參數少的優點,將它應用到推薦系統中可以顯著提高準確性。
卷積神經網絡包括輸入層、卷積層、池化層、全連接層和輸出層,其中卷積層和池化層組合形成了特征提取器。在卷積層中,上一層神經元只連接部分下一層神經元,并且在CNN中采用了權值共享,即卷積核,這不僅使得神經網絡中的參數個數得到了明顯的減少,還降低了過擬合的弊端。卷積神經網絡原理見圖2。

圖 2 卷積神經網絡原理
系統中存在具有不同權限的用戶:管理者與學習者。不同的用戶對系統有著不同的透明度。學習者經過注冊即可進行學習,進行課程的和在線實驗案例的選擇和瀏覽,在論壇進行發、回帖交流。管理者為最高權限角色。相應的功能有關鍵信息管理(學生、課程主要信息的管理),用戶管理(用戶的權限與信息),學習資源管理(課程資源,視頻資源),后臺管理,信息分析。
2.2.1系統總體框架設計在線學習系統包含了多種子系統與業務功能,根據Vue.js的組件化和模塊化思想,這些功能也分成了很多的模塊和組件。組件化的系統各個功能之間的耦合性得以減低,而且在重用性方面有著質的變化。系統包括四層結構,即系統門戶層、應用模塊層、功能模塊層與數據存數層(圖3)。

圖 3 系統框架
1)系統門戶層:針對于不同的用戶提供不同的服務。學習者可以進行視頻學習,瀏覽課程資料與進行在線的提問;管理員可以進行學習信息、課程資源的管理和問題的解答。
2)應用模塊層:描述各個模塊的實現步驟操作。Vue.js進行前端開發,vue-video-player開源插件進行視頻播放,axios進行HTTP請求,深度學習模型進行數據處理和分析。
3)功能模塊層:表達并劃分具有不同功能的子模塊,并且與數據層相連接,為數據存儲層的操作提供信息傳遞服務。
4)數據存儲層:對不同用戶的信息、系統的信息進行存儲。包括學生信息,論壇信息,課程信息,管理信息。
2.2.2系統總體功能設計本系統采用基于B/S架構,使用MVC模式,前端由Vue.js框架實現,后端使用SpringBoot搭建。圍繞學生學習網絡化、多樣化、智能化的設計展開開發的在線學習系統,預期實現功能見圖4。

圖 4 在線學習系統總體功能
1)學生個性化學習推薦模塊 通過收集學生學習內容,成績,課程偏好,弱勢課程,學習記錄等多種特征信息,進行信息處理分析,并針對學習者推薦出個性化的學習課程。
2)學生學習評價模塊 通過學習偏好(主要是學習內容)的總結,對學生進行綜合性的成績判定和學習評價。
3)在線視頻學習模塊 管理員可以上傳自己的學習課程視頻,學生通過在線學習系統進行視頻學習,并且系統記錄用戶的播放情況等功能。
4)在線程序實踐模塊 通過在線程序實踐平臺實現相關課程程序開發練習,提高學生的動手能力。
5)用戶管理子模塊 控制用戶的登錄,已經登錄信息的緩存以及新用戶的注冊和用戶信息存儲。
6)課程資料管理模塊 在該子系統中,教師用戶上傳課程資料,這些資料包括PDF、PPT、Word文檔、實驗指導書等,學生用戶可以下載這些課程資料,是在線學習一個不可或缺的環節之一。
7)在線交流子模塊 通過論壇發回帖等與同學、老師們進行學習交流,經驗分享。
8)知識圖譜展示模塊 構建課程知識圖譜,便于學生直觀地學習和查詢資料。
本學習系統涉及到了多種模塊。用戶登錄注冊、在線學習、在線實驗、資源共享,在線交流等功能。其中在線學習包括在線視頻學習,課程資料如PPT,Word文檔,實驗指導書學習等,能夠滿足學生的多種個性化需求,提高學習效率。
本文設計了以神經網絡為基礎的評分預測模型。這種模型在詞嵌入和文本卷積網絡的基礎上融合了深度學習模型,在具有用戶以及學習資源的特征向量上做出了改進,并且在此基礎上使用深度學習挖掘出隱藏的興趣特征。并借助用戶的歷史評分信息,來進行模型的訓練,利用分數來表達用戶和學習資源的一種潛在關聯。最終提高了推薦效果性能,使用戶體驗得到了提升。模型分為訓練和推薦兩個部分(圖5)。

圖 5 推薦評分預測模型
3.1.1訓練過程在訓練的過程中,進行學習者特征向量和學習資源向量的提取。
學習者特征向量的抽取利用詞嵌入將用戶的id、姓名、偏好等特征作為輸入,形成一個可以模擬一個用戶特征的向量。在此之后將用戶的特征向量通過兩層全連接層進行訓練,抽取出各用戶特征之間的潛在關系。
學習資源特征向量的抽取通過文本卷積網絡來進行課程名詞向量的獲得,課程id和課程類型經過嵌入層來模擬不同屬性的特征向量,最后使用全連接層進行屬性向量的鏈接整合。
文本卷積網絡第一層是輸入層,這一層是句子中的詞語按照對應的上下順序排列的矩陣,成立句子矩陣
A=[x1,x2,…,xm,…,xn]
網絡的第二層是卷積層,這一層每個單詞通過嵌入層的個體向量組成了一個整體嵌入矩陣。通過輸入矩陣和濾波器的點乘再加上編制項,卷積運算公式:
hi=f(W1⊙xi*j+l-1+b)
最后利用激活函數進行輸出,激活函數:

第三層為池化層,這一層使用Max-over-timePooling方法。此類方法是將上步處理過的一維特征進行提取,在卷積窗口當中提取其中最大的值作為此窗口的特征值。
第四層是全連接+softmax層,這層通過使用Dropout技術的特性來控制訓練的擬合度,并且用L2正則化限制該層的權值參數。這樣做是為了防止因為隱藏單元的自適應導致擬合程度減輕。
經過四層處理之后,得到學習資源Title的向量特征。
3.1.2推進過程用戶和學習者特征向量在抽取之后需要經過神經網絡層進行模型訓練,通過已有的用戶歷史數據,即不同用戶對不同課程之間的打分情況,以此作為最后網絡的輸入,進行整體性的訓練,訓練完畢的模型將擁有用戶對不同課程預測打分的效果,課程推薦就是根據預測分值的不同來進行的。
本文采取mini-batch梯度下降法。
其中a表示為學習率,隨著訓練時間而不斷迭代減小并趨近于0。
本論文利用損失函數來界定實際輸出與標簽值的差距,本模型使用較為經典的交叉熵損失函數來進行訓練。公式如下:
交叉熵損失函數在訓練學習過程中容易出現梯度消失,模型無法收斂,為解決這一問題,本文在模型中加入L2正則化。對于網絡中不重要的特征進行權值衰減處理。最后結合L2正則化以及交叉熵:
在訓練場過程中,使用反向傳播的方式可以進行損失函數的迭代遞減,批處理的大小由N來表示,正則化參數為β,全連接層的參數為θ。通過梯度下降的優化與損失遞減,最后將收斂于一個最小區間浮動,此時可將此模型訓練停止。
3.2.1 edX開放數據集edX開放數據集中包含了哈佛大學和麻省理工學院從2012到2013年在edX平臺開設的16門課程相關數據。
3.2.2在線學習系統數據集提供了數十個屬性,包括課程數據,學習者信息,學習者行為特點等。
將測試集抽取一部分作為驗證集進行驗證,以課程評分為目標值進行比對,對數據集的評分表中內容進行評分比較,最終準確率為78.34%,召回率為77.56%,F1值為78.56%(表1)。

表1 訓練結果表
本在線學習系統分為首頁導航、登錄注冊、課程資源、在線實驗和學習論壇共四大主要的功能模塊,以下是系統在windows10操作系統下,使用edge瀏覽器的實驗結果。
圖6頁面利用vue.js項目開發中常用的elemen-ui來進行ui架構。導航欄讓用戶可以方便的切換頁面。走馬燈展示最新最近的大數據學習資訊。三個卡片介紹各個模塊的特色和功能。關系圖直觀地展示大數據學習的知識框架。各個大數據技術的官網跳轉讓用戶可以方便地了解它們。

圖 6 導航頁面
登錄注冊(圖7)模塊可以通過首頁導航跳轉,登錄表單對賬戶、密碼和驗證碼的格式進行基本的驗證。表單提交后則會進行進一步的賬戶和密碼進行驗證,驗證通過則導航欄的登錄部分回變為退出,用戶信息會作為全局狀態存入系統,不通過則會給出對應的錯誤提示。

圖 7 錄注冊頁面
論壇(圖8)模塊采用常見的發回貼模式,用戶點擊發帖按鈕即可編輯自己對學習的想法或者問題,發送到論壇之中。也可以瀏覽其他用戶發的帖子進行評論等操作,互相交流。

圖 8 論壇首頁
課程資源(圖9、10)模塊提供了海量關于大數據學習的視頻等資源,點擊對應的卡片即可跳轉到視頻播放頁面進行查看。每個用戶觀看視頻時會產生歷史記錄,通過歷史記錄,基于深度學習的推薦算法會推薦給用戶適合的學習資源。

圖 9 課程選擇頁面

圖10 視頻播放頁面
在線實驗模塊依托于JupyterLab平臺,用戶點擊對應的實驗卡片就可以跳轉到juypter平臺在線進行對應的實驗,鞏固和實踐所學的知識,以完善的學習流程提高學習效率。

圖11 實驗選擇頁面

圖12 JupyterLab實驗頁面
本文使用python語言實現了神經網絡為基礎的評分預測模型。用戶登錄系統后每次觀看視頻時把用戶和視頻id作為歷史觀看記錄以json格式傳輸到后端。后端對歷史記錄做去重處理后存入歷史文檔。后端程序用開辟進程的方式調用評分預測模型,以用戶歷史記錄作為輸入,得到推薦序列輸出。推薦序列會被傳輸到前端,作為推薦結果(圖13)。

圖13 推薦結果頁面
對于在線學習系統來說,學習資源自然是越多越好,但是大量的學習資源在更大程度滿足用戶的同時也會增加用戶選擇成本,違背了學習平臺提高用戶學習效率的出發點。相較于傳統推薦算法,本文基于更加高效的深度學習的推薦系統,為用戶進行個性化的學習資源推送簡化用戶的資源選擇流程。對課程的知識體系,以知識圖譜的形式進行抽取和展示,直觀地展示大數據課程的知識結構。為了方便用戶在學習后的實踐,本文借助Jupyter平臺實現了在線的實驗模塊,用戶可以直接在學習平臺上進行案例實踐。在此基礎上,本文在學習平臺中內置了一個小型的論壇模塊,方便用戶的交流。