呂亞珉
(江蘇科技大學 鎮江 212000)
隨著互聯網技術的迅速發展,信息過載成為當前快速精確匹配信息的技術難題。推薦系統是一種信息過濾技術,用于快速查找有效信息,如今被各個行業廣泛應用。
自20世紀90年代起,推薦系統[1]的研究便受到學術界的重視,經過多年的技術積累和技術突破,推薦系統逐漸產生多種解決方案,成為一門獨立的學科,在學術研究和業界應用中都取得了很多成果。推薦系統本身通過數據信息挖掘,分析研究用戶的行為偏好,建立用戶特有的興趣模型,從而為用戶推薦可能滿足其興趣點的信息。傳統的推薦系統算法可以大致分為協同過濾推薦,基于內容推和混合推薦三種類型。
傳統的推薦算法雖然可以解決大部分信息過濾的問題,但是無法解決數據稀疏、冷啟動、重復推薦等問題。針對上述問題,近年來,眾多公司采用深度學習、多臂賭博機等算法進行改進,并且獲得不錯的推薦效果。2012年,YouTube[2]在推薦系統中首次使用深度學習進行視頻推薦預測,成功從大規模數據量中過濾提取用戶感興趣的視頻內容并推薦。2015年,FrankHopfgartner等[3]提出基于流式數據的離線評價方式和對照試驗。2017年AlexandrosKaratzoglou等[4]系統性提出將深度學習應用于傳統的推薦系統中,在傳統的內容推薦和協同過濾推薦方法中加入深度學習,用以處理大規模數據量的推薦預測,由此深度學習成為當前推薦系統研究的熱點。
目前大部分推薦算法基于靜態的推薦過程,通過收集處理大批量的數據信息產生固定的推薦策略,在決解信息推薦的多樣化問題上有明顯的提升,但這種推薦算法依舊無法決解推薦冷啟動的問題,也無法適應用戶的短期興趣變化,進行有效的信息推薦。所以,諸多學者開始嘗試使用強化學習[5]來解決推薦系統中存在的問題。
強化學習是一種基于環境相互交互的學習算法,從動物行為研究與優化控制兩個領域獨立發展至今抽象為馬爾科夫決策過程問題而完成形式化。后又經過眾多科學家的研究,形成了相對完備的體系——近似動態規劃。強化學習[6]是一種動態交互的學習策略算法,因此使用強化學習決解推薦算法中冷啟動、無法適應用戶短期興趣推薦等問題。2008年,Taghipour首次提出使用Q-learning學習算法結合網頁信息以此機解決網頁推薦的問題。但Q-learning學習算法并不能有效地解決馬爾科夫決策過程在狀態空間和動作空間較大的推薦任務。為緩解上述問題,Choi提出了雙聚類學習算法,但效果并沒有預期達到理想。2013年,NIPS會議上提出的Deep Q-Learning深度強化學習算法使用值函數估計的方式,通過對Bellman方程進行迭代以達到收斂至最優價值函數的方法,使在一定程度上解決了馬爾科夫決策過程中存在的問題。策略梯度的提出決解了值難以計算的問題,這種方法可以直接對策略進行學習。
本文使用因子分離機Factorization Machines算法做特征組合與處理高緯稀疏特征,有效地學習特征之間的交叉隱藏關系,之后使用Deep Q-Learning算法[7]來求解推薦決策的最優值。首先,視頻推薦核心點在于將推薦過程模擬為馬爾科夫決策過程,如圖1所示,智能體初始狀態為s0,然后從動作集合中挑選一個動作a0執行,執行后,智能體會根據動作a0的獎勵函數改變為下一次的狀態為s1,之后再挑選動作a1…,不斷循環如上的步驟,直到選擇出達到獎勵積累值的策略鏈。結合電影推薦,可以將馬爾科夫決解過程更加細化,將用戶與推薦系統模擬為兩個動態交互的對象,如圖2所示。在一個時間切片t內,推薦系統獲取用戶的觀看記錄st,通過st的獎勵函數訓練動作集A,之后A中挑出獎勵值最大的電影at向用戶進行推薦,獲取用戶對該電影的評分放入經驗池繼續訓練推薦策略。

圖1 馬爾科夫決策模型

圖2 強化學習基本架構
一般而言,馬爾可夫決策過程[8]是帶有決策的馬爾科夫獎勵過程,意為所有的狀態都具有馬爾科夫性,也就是當一個隨機過程在給定現在狀態及所有過去狀態的情況下,其未來狀態的條件分布概率僅依賴于當前的狀態,馬爾科夫性[9]用數學形式可以表示為一個狀態st具有馬爾科夫性當且僅當滿足:

馬爾可夫決策過程可以由一個五元組<S,A,P,R,γ>構成。
S是所有環境狀態的集合,st∈S表示當前的Agent在t時刻的狀態st。本文使用電影網站movielens數據集進行測試,定義的st為st=,…,,在此表示為用戶所觀看過并且具有評分的前n個的電影。
A是智能體Agent有限的可執行動作的集合,在本文中A為所有可以推薦給用戶的電影集合。在文本中at∈A表示為Agent在t時刻通過獎勵函數訓練所得到的推薦動作,也就是在當前時刻推薦系統Agent通過st向用戶推薦的電影。
P為狀態轉移概率矩陣,數學公式表示如下:

其中St表示t時刻的狀態,St+1表示為t+1時刻的狀態,At表示為t時刻推薦系統Agent向用戶推薦的不同電影的動作。當t時刻結束后,轉為t+1時刻,那么推薦系統Agent將會對t+1時刻的狀態St+1進行更新,更新為,at}。
R是當前馬爾科夫獎勵過程[10]的獎勵函數。在t時刻下,狀態st通過A所進入狀態st+1所獲取的獎勵期望。數學公式定義如下:

在本文中,對于推薦系統Agent推薦的電影,用戶具有不同分數的電影評分,以此產生不同的電影反饋,所以在t時刻下,推薦系統Agent會根據不同的反饋,獲得即時獎勵為rt=(st,at)。
γ是折扣因子,它的取值范圍一般規定為γ∈[0,1]。折扣因子用于調節未來獎勵對當前累計獎勵的影響小大。若γ=0,說明推薦系統Agent及時獎勵作為影響累計獎勵的重點;當γ=1時,說明推薦系統Agent更加看重長期積累的獎勵。
從以上定義可以得出,推薦系統Agent的任務是[11]通過最優的推薦策略以達到獎勵函數最大化的學習過程。t時刻,獎勵Gt的數學定義如下:

本文將使用One-Hot編碼與FM模型結合對movielens的數據進行數據預處理,之后使用深度強化學習中的Deep Q-Learning算法作為視頻推薦算法。Deep Q-Learning算法是一種基于值函數近似迭代的算法,它使用一個深度神經網絡作為Q值網絡對復雜的特征進行提取,One-Hot編碼可以將movielens數據集中離散型特征用數字表示,但One-Hot編碼會引入特征稀疏的問題,所以之后會采用Factorization Machine算法解決稀疏特征下難以處理組合特征的問題。
使用Deep Q-Learning算法進行電影推薦,其最終的目標是通過最大化長期累積獎勵得到最優的推薦策略。第一步應該對movielens的原始數據進行特征提取,將用戶對于電影的評分作為獎勵值,表1為對應的對movielens的原始數據結構。由于movielens的原始數據集中存在離散型特征,Deep Q-Learning算法無法直接使用其作為值函數網絡的輸入數據。采用One-Hot編碼將離散性特征進行編碼處理,使離散性特征擴展為歐式空間的表示。離散特征的取值與歐式空間的點可以一一對應。從模型訓練的方面而言,不僅可以更加合理地計算不同特征之間的距離,而且提升模型的非線性能力。One-Hot編碼的原理在于采用N位狀態寄存器對n個狀態進行不同碼編碼,每個屬性都由有屬于自己的獨立寄存器位,并且在任意時候僅有一位表示有效與否。如表2為使用One-Hot編碼處理后的特征集。

表1 Movie原始特征集合

表2 One-Hot編碼處理后的Movies特征集
由于One-Hot編碼會引入特征稀疏的問題,這會引起神經網絡的維數災難,使用Factorization Machine算法對特征集進行進一步的特征處理。本文中使用二階多項式模型,使用特征xi和xj的組合xixj表示組合特征,其中xi是第i個特征的值,n表示樣本的特征數量,w0、wi、wij分別是模型參數。二階多項式模型如下:

本文使用矩陣分解的方法對wij進行求解,已知在模型為基礎的協同過濾中,用戶矩陣和電影矩陣可以組成唯一的評分矩陣,并且對于每個用戶和電影,都可以采用一個隱向量表示將其表示。比如在圖3的例子中,將不同的用戶與電影表示成不同的二維向量,則用戶向量與電影向量的點積就是矩陣中用戶對電影的打分。

圖3 矩陣分解
由定義可知,對于任意N×N的實對稱矩陣而言,該實對稱矩陣都存在N個線性無關并且可以正交單位化而得到一組正交且模為1的特征向量。故實對稱矩陣A可被分解成:

其中Λ定義為實對角矩陣,Q定義為正交矩陣。
類似地,如果存在一個對稱陣W由當前的所有二次項參數wij組成,那么就說明這個矩陣可以被分解W=VΛVT的形式,其中V的第j列定義為第j維特征的隱向量。xi對應的隱向量與xj對應的隱向量的內積等于特征分量xi和xj的交叉項系數,因此該對稱陣的每個參數都可以被定義為wij=<vi,vj>。
本文中Deep Q-Learning算法[12]使用一個權重參數為θ的深度神經網絡來作為動作值函數的網絡模型,通過這個深度神經網絡模型。權重和偏置分別使用θ、γ表示。深度神經網絡模型的損失函數如下:

深度神經網絡構造圖如圖4。

圖4 神經網絡構造圖
由構造圖可以看出,深度神經網絡由一個嵌入層與三個全連接層組成,每一個神經元在輸出結果之前,都會使用激活函數進行計算。本文采用sigmoid函數作為深度神經網絡的激活函數,以滿足有效學習稀疏特征的要求。
為了方便計算,嵌入層與全連接層的神經元節點數均設置為2的指數次冪,并且依次以2的倍數增加網絡的深度。假設推薦系統中的電影個數為M個,則輸出節點數即為M個,輸出節點將輸出每個電影被推薦后的預測獎勵值。
由于使用相同的網絡生成下一個目標Q值和估計當前Q值,會導致振蕩性甚至發散。因此Deep Q-Learning中使用經驗回放,目標網絡來解決該問題[13]。經驗回放指在智能體與環境交互過程中,經驗存放在經驗池D中,每次訓練會從D中隨機抽樣出小批數據進行訓練,以此達到消除樣本之間的相關性的目的。其作用主要是破壞序列之間的相關性,解決Q值和目標Q值之間的相關性。目標網絡并不與環境交互,也不在每個時間步進行更新,僅在每隔一定時間步才會更新,每次更新都將當前網絡參數直接賦值給它[14~15]。
Deep Q-Learning電影推薦算法流程如下。
1)初始化容量為N的經驗池D,該經驗池用于歷史經驗回收。
2)使用深度神經網絡作為當前預測動作值函數Q值的網絡模型,并且初始化該網絡模型的權重參數θ。
3)設定模型訓練的回合次數為M,智能體最大可以執行的訓練次數。
4)初始化Q值網絡模型的輸入,輸入由FM算法處理后的評分矩陣,并且計算?1=?(s1)。
5)重復單次經驗軌跡時間步,從t=1到T。
6)重復每個用戶的電影推薦訓練,從u=1到U。
7)以用戶原有的評分作為初始的電影推薦狀態S,以概率ε選擇隨機的電影方案a進行推薦。
8)如果推薦的電影是用戶喜歡的電影,更新當前的電影推薦狀態St+1=St∪a,獎勵設置為r=1,并且計算下一時間步的輸入序列?t+1=?(st+1)。
9)如果推薦的電影是用戶喜歡的電影,更新當前的電影推薦狀態為St+1=St,獎勵設置為r=0,將(?t,a,r,?t+1)加入到經驗池D中,并且計算下一時間步的輸入序列?t+1=?(st+1)。
10)從經驗池D中隨機采樣小批量的存儲樣本(?t,a,r,?t+1)。
11)如果當前狀態為結束狀態,則設yi=ri,若當前狀態為非結束狀態,則設,a,,θ)。
12)使用梯度下降算法計算損失函數Li(θi)=。
13)輸出值函數網絡。
算法流程圖如圖5。

圖5 Deep Q-Learning電影推薦算法
實驗硬件環境:PC機一臺,8GB內存,256GB硬盤。本文實驗平臺操作系統為window10,編程語言為python語言,編程在Jupyter Notebook上進行。實驗使用movielens數據集,該數據集的官方網 站 為https://grouplens.org/datasets/movielens,由于數據集的種類較多,本文選擇ml-latest-small數據集,其中包括600個用戶對9000部電影的10萬條評分記錄。
為驗證基于深度強化學習的視頻推薦算法在推薦準確性優于傳統的協同過濾算法,本文將比較基于Deep Q-Learning算法的推薦算法、基于協同的推薦算法Collaboration Filtering算法在相同數據集上的推薦準確性,電影推薦多樣性,并且對兩種算法進行分析比較。定義實驗中的推薦準確率為用戶遂于電影的評分高低占比,定義實驗中的電影推薦多樣性定義為推薦電影的種類占總種類的比率。
根據實驗設計,在ml-latest-small數據集上進行兩種算法的準確率對比。對比結果表格如表3所示。

表3 推薦準確性比對
對比折線圖如圖6所示。

圖6 推薦準確性折線對比圖
由對比圖可以看出,基于Deep Q-learning的推薦算法在n小于40時,準確率略低于傳統的協同過濾推薦算法,但其推薦效果呈現上限趨勢,當n等于40時,基于Deep Q-learning的推薦算法在推薦準確性上明顯優于基于協同過濾的算法。當達到最優電影推薦數峰值后,推薦準確率逐漸下降,但也均高于同條件下Collaboration Filtering算法的推薦準確率。這說明在增加電影推薦數的前提下,基于Deep Q-learning的推薦算法的推薦準確性要明顯高于Collaboration Filtering算法。證明將深度強化學習的Deep Q-learning算法用于電影推薦有利于提升電影推薦的準確性。
根據實驗設計,在ml-latest-small數據集上進行兩種算法的推薦電影多樣性對比。對比結果如表4所示。

表4 推薦多樣性比對
對比折線圖如圖7所示。

圖7 推薦多樣性折線對比圖
由對比圖可以看出,基于Deep Q-learning的推薦算法在樣本區間始終比Collaboration Filtering算法的電影推薦多樣性比率高,并且其多樣性推薦效果一直呈上升趨勢。這說明將深度強化學習的Deep Q-learning算法用于電影推薦,電影推薦多樣性效果有明顯的提升。
本文通過使用深度強化學習方法,使用Deep Q-learning算法在movielens電影數據集上進行電影推薦訓練,并且與Collaboration Filtering算法在電影推薦的準確性與電影推薦多樣性兩個方面進行比較。由比較結果可以發現,電影推薦的準確性在電影推薦數達到一定數量時優于傳統的Collaboration Filtering算法;電影推薦的多樣性明顯優于Collaboration Filtering算法。由此可以證明將深度強化學習應用于視頻推薦,可以有效地解決傳統推薦算法推薦不準確,推薦內容單一等問題,可以更好地學習用戶的興趣特征,從而為用戶的提供更優的視頻推薦方案。但Deep Q-learning算法仍然無法解決冷啟動的視頻推薦問題,因此,筆者下一步將在此基礎上研究如何在沒有用戶的觀看視頻歷史數據時,推薦系統依然可以準確定位用戶的興趣視頻。