呂曉琦,紀 科+,陳貞翔,孫潤元,馬 坤,鄔 俊,李浥東
1.濟南大學 信息科學與工程學院,濟南 250022
2.濟南大學 山東省網絡環境智能計算技術重點實驗室,濟南 250022
3.北京交通大學 計算機與信息技術學院,北京 100044
互聯網將全球信息互連形成了信息時代不可或缺的基礎信息平臺,其中知識分享服務已經成為人們獲取信息的主要工具。為了加快互聯網知識共享,出現了大量以知乎為代表的問答社區。用戶注冊社區后可交互式提出與回答問題,達到知識共享和交換。然而,伴隨用戶急劇增多,平臺短時間內積攢了數目巨大、類型多樣的問題,遠遠超過有效回復數,嚴重降低了用戶服務體驗。如何將用戶提出的問題有效推薦給可能解答的用戶,以及挖掘用戶感興趣的問題是這些平臺面臨的嚴重挑戰。這種情況下,工業界和學術界對以上問題開展了廣泛研究,提出了一些針對問答社區的專家推薦方法提高平臺解答效率。
現有工作大多利用基于內容的推薦算法解決該問題,比如配置文件相似性、主題特征相似性等,匹配效果依賴于人工構建特征的質量。近年來,以卷積神經網絡(convolutional neural network,CNN)、Attention 注意力機制為代表的深度學習技術不斷發展,并且已經成功應用到文本挖掘領域。相比傳統方法,深度模型可以學習到表達力更強的深度復雜語義特征。于是,出現了一些深度專家推薦算法,比如DeepFM、XDeepFM、CNN-DSSM等,大幅提升了傳統推薦算法的準確度。
雖然以上工作很好地實現了專家推薦,但都是根據用戶長期關注的話題及相關解答歷史刻畫用戶興趣,產生的推薦結果也相對固定。隨著時間推移,用戶會不斷學習新知識,其關注點及擅長解答的問題也很可能發生改變,由此會產生用戶興趣變化,甚至短期興趣漂移。這些動態變化會嚴重影響推薦算法效果,因此如何動態刻畫用戶興趣就顯得尤為重要。其實,用戶歷史回答行為具有明顯的時間序列關系,通過對已解答問題的序列分析有很大可能感知用戶興趣變化。近年來,循環神經網絡(recurrent neural network,RNN)被廣泛用來處理序列數據,比如長短期記憶網絡(long short-term memory,LSTM)、門控循環單元(gated recurrent unit,GRU)等,可以根據前面狀態輸入結合當前模型狀態產生當前輸出。該類方法可與CNN 結合處理問題內容序列數據,從用戶歷史解答行為中挖掘長期與短期興趣,從而動態產生當前興趣。
綜合以上討論,本文提出了結合注意力機制與循環神經網絡的問答社區專家推薦算法,能夠根據用戶歷史解答序列動態構建用戶興趣特征,實現推薦結果隨時間發展不斷調整。
主要工作與貢獻如下:
(1)基于預訓練詞嵌入模型分別實現了問題標題與主題標簽的語義嵌入向量表示,將CNN 卷積模型與Attention 注意力機制結合,構造基于上下文的問題編碼器,生成不同距離上下文的深度特征編碼。
(2)問題編碼器對用戶歷史回答的問題進行序列編碼,利用長短期記憶循環神經網絡Bi-GRU 模型處理編碼后的問題序列,并結合用戶主題標簽嵌入向量構造用戶興趣動態編碼器。
(3)將問題與用戶編碼器產生的深度特征點積運算后加入全連接層實現相似度計算產生推薦結果。在知乎公開數據集上的對比實驗結果表明該算法性能明顯優于目前比較流行的深度學習專家推薦算法。
“信息過載”是互聯網發展過程中面臨的巨大挑戰,人們通過網絡接觸到大量冗余信息,遠遠超過個人能力。推薦系統是解決這一問題最有效的技術,已經廣泛應用到許多領域,實現了有價值信息的快速甄別及個性化服務。目前,應用比較流行的推薦算法有基于內容的推薦算法、基于協同過濾的推薦算法、混合推薦等。基于內容的推薦算法是推薦系統最早采用的算法,具有很好的解釋性,核心思想是利用交互歷史構建用戶興趣特征,根據用戶興趣和項目的特征相似性產生推薦結果。協同過濾算法根據用戶與項目之間的顯性與隱性交互信息構造矩陣模型,利用矩陣中相似用戶和項目的歷史評分數據預測當前用戶對給定項目的偏好程度。混合推薦算法可將已有算法進行組合彌補各自推薦技術的弱點。
專家推薦是推薦系統的一種特殊應用,用于發現特定領域中具有解決問題能力的專家用戶。科研人員針對問答社區的專家推薦問題開展了一系列研究。早期工作主要依靠傳統信息檢索技術。后來,很多工作提出了基于內容的推薦算法解決該問題,主要根據用戶興趣與問題內容的特征匹配程度產生推薦結果。其中,自然語言處理技術常被用來進行信息提取,比如隱含狄利克雷分布主題模型(latent Dirichlet allocation,LDA)可以形成隱含語義主題分布特征來表征信息,但訓練數據不足時其表示能力會減弱。后續研究將相似性計算轉化為分類問題,從問題-用戶交互角度考慮了更多的內容特征。近年來,深度學習技術被應用到推薦系統,出現了一些基于神經網絡的專家推薦算法,可以學習到表達力更強的語義特征,大幅提升了準確度,比如DeepFM將神經網絡與傳統因子分解機進行了結合;XDeepFM引入了壓縮交互網絡自動學習高階特征交互;深度語義匹配模型(deep structured semantic models,DSSM)通過深度神經網絡(deep neural networks,DNN)對文本進行語義降維表達及語義相似性計算;CNN-DSSM在DSSM 的基礎上引入卷積層、池化層替代DNN 實現了上下文信息提取。
深度學習是機器學習最熱門的研究方向之一,已經在計算視覺、語音識別、自然語言處理等領域取得了巨大成功,其優勢在于通過深層網絡結構可以組合低層特征形成更加抽象的高層語義特征。典型深度學習模型有卷積神經網絡CNN、循環神經網絡RNN。CNN 是一種前饋神經網絡,通過卷積層、池化層等結構可隱式地從訓練數據學習到局部權值共享的特殊結構特征,代表模型有ResNet、VGGNet、TextCNN等。RNN 是一類擅長處理序列數據輸入的神經網絡,通過層與層之間連接實現了序列數據前后關聯,適合挖掘序列數據中的動態時間行為,代表模型有LSTM、GRU等,后續逐漸衍生出更具特色的雙向變體模型Bi-LSTM、Bi-GRU,可以靈活控制長短距離依賴信息。近年來出現了基于RNN和CNN 的復合神經網絡,此外Attention 注意力機制也被引入到深度學習模型,可以靈活地捕捉全局和局部聯系,使模型對特征有不同關注力。
假設用P 表示問題集,U 表示用戶集,p為P 中的一個問題樣本,μ為U 中的一個用戶樣本。給定問題-用戶對(p,μ),為它設置一個狀態標簽y∈{0,1},其中1 代表接受問題邀請并且回答,0 代表未接受問題邀請,(p,μ,y)是一個訓練樣本。根據上述定義,個訓練樣本就組成了訓練數據集,如式(1)所示:

本文利用訓練數據集構建模型,定義損失函數對模型進行優化,判斷當前用戶μ是否會接受某個新問題p邀請的標簽y。

本章介紹本文提出的專家推薦算法,將算法命名為DSIERM(dynamic and static interest based expert recommendation model),算法主要包括問題編碼器與用戶編碼器兩個核心部分,分別根據問題描述信息和用戶歷史解答行為構建問題和用戶相對應的深度編碼特征,結合用戶動態興趣與長期興趣產生推薦結果。
用戶提出一個問題后會形成問題標題,同時也會被綁定若干標簽便于引起專家用戶關注。問題編碼器分別從問題標題和綁定標簽學習特征向量產生最終的向量表示,其架構如圖1 所示。

圖1 問題編碼器結構Fig.1 Structure of question encoder
根據數據集中的所有問題記錄進行訓練,構造問題編碼器。
第一步,對問題的標題進行分詞并執行詞嵌入表示,將標題轉換成隱含語義空間的詞向量表示。假設標題中的詞為=[,,…,t],代表標題長度,轉化后的詞向量表示如式(3)所示。

其中,代表詞向量集合,為詞嵌入方法。
第二步,使用CNN 卷積神經網絡捕捉局部上下文信息來進一步優化詞向量,假設用C表征T的上下文詞表示,如式(4)所示。

其中,是位置在和+-1 之間單詞的嵌入連接矩陣;和是CNN 卷積神經網絡濾波器的參數;是窗口大小;是非線性激活函數ReLU。
第三步,由于不同的詞對標題有不同的重要性,本文引入Attention 注意力機制為每個詞賦予不同權重。假設第個詞的注意力權重為A,計算方法如式(5)和式(6)所示。

其中,α是Attention 執行時的中間生成變量,和是可訓練參數。問題標題的最終向量表示是帶有權重的上下文詞向量表征總和,如式(7)所示。

問題的綁定標簽一般由提問用戶自己設置,幫助鎖定其他用戶對當前問題的關注。假設當前問題的所有標簽組成了集合=[,,…,g],是標簽個數。輸入,利用詞嵌入實現每個標簽的向量化表示=()=[,,…,G],然后對所有標簽向量全局平均池化取平均值后形成標簽向量表示q,如式(8)所示。

是池化平均參數矩陣,大小為·,是標簽向量的維度。
給定第個問題,經過問題編碼器,產生該問題的標題和綁定標簽表示向量,兩者拼接產生最終問題向量表示Q,如式(9)所示。

用戶回答問題的時間序列反映了用戶興趣變化,可以據此分析用戶動態興趣。此外,用戶也會選擇一些標簽主動展示自己的興趣,并且用戶標簽相對固定,很長時間都不會發生變化,可以反映用戶長期固定興趣。用戶編碼器分別從解答行為序列和用戶標簽學習特征向量組成最終的用戶向量表示,架構如圖2 所示。

圖2 用戶編碼器結構Fig.2 Structure of user encoder
結合數據集中的用戶記錄和問題記錄,構造用戶回答序列,并從用戶記錄中提取用戶相關信息進行訓練,構造用戶編碼器。
挖掘當前用戶回答過的問題,首先,把它們按照回答時間先后排列為=[,,…,I],其中為該序列長度;然后,利用3.1節的問題編碼器對每個問題進行編碼獲取它們的問題向量表示=[,,…,Q];最后,把序列輸入雙層Bi-GRU 網絡結構來捕捉用戶動態興趣變化。


圖3 GRU 模型結構Fig.3 Structure of GRU model





將第一層Bi-GRU 的所有隱層狀態輸出h(∈[1,])輸入第二層Bi-GRU 獲得更細粒度的動態表征,與第一層Bi-GRU 不同的是,第二層僅輸出最具代表性的最后一個隱層狀態h,作為給定用戶當前的興趣表示u=h。計算方式同式(10)~(16)。

問答序列可以捕捉到隨時間變化的用戶動態興趣,標簽信息可以提取到用戶長期興趣。用戶動態興趣和用戶長期興趣拼接后形成最終的用戶表示向量,如式(17)所示。



圖4 判斷當前用戶是否會接受此問題Fig.4 Determine whether current user will accept the given question

其中,為全連接層函數,激活函數為ReLU,并且可以設置為多個全連接層疊加結構將高維稀疏特征壓縮映射到低維稠密特征。
本文實驗數據集來自知乎(https://www.zhihu.com)、被開放biendata 平臺(https://www.biendata.xyz/competition/zhihu2019/)。知乎是中文互聯網知名的問答社區,用戶分享彼此知識,解答感興趣問題,為互聯網源源不斷地提供多種多樣原始信息。原數據集包括知乎的問題信息、用戶畫像、用戶回答記錄、用戶接受問題邀請等信息,根據所提出的算法需求提取相關數據。表1 展示了數據集的基本統計信息,包括1 931 654 個用戶描述記錄(其中包括回答過的問題序列編碼和用戶配置資料)、1 829 900 個問題描述記錄、500 000 個問題邀請記錄、所有問題綁定標簽和用戶配置標簽共形成的100 000 個主題標簽。數據集按照一定比例劃分為訓練集和測試集,每次實驗采用5 折交叉驗證。

表1 數據集基本統計Table 1 Basic statistics of dataset
本節將本文提出的算法DSIERM 和以下三個基準專家推薦算法進行性能比較:
(1)DeepFM是在因子分解機(factorization machines,FM)基礎上衍生的算法,將深度神經網絡(DNN)與FM 結合,同時提取到低階和高階特征,通過學習隱式的特征交互預測用戶行為。
(2)XDeepFM是DeepFM 的改進,增加了壓縮交互網絡結構(compressed interaction network,CIN),以顯式與隱式結合的方式學習高階特征交互,側重特征交叉帶來的預測收益。
(3)CNN-DSSM是一種深度語義匹配模型,通過CNN 卷積層提取了滑動窗口下的上下文信息,并利用池化層提取了全局的上下文信息,根據上下文語義向量匹配度預測用戶行為。
對比實驗中本文還設置了該算法的另一種配置方式:
DSIERM-OS(only use static component)沒有 考慮長期用戶興趣表示模塊,僅使用動態興趣表示模塊,用來驗證長期用戶興趣的輔助作用。
實驗部分本文綜合利用AUC(area under the ROC curve)、ACC(accuracy)和Logloss 指標來評價算法預測效果:



本文的實驗環境如下:硬件配置IntelCorei7-9750H CPU@2.60 GHz+8 GB 內存;Windows10 X64位操作系統;深度學習框架Anaconda Python3.0+Tensorflow+Keras。
將標題和標簽的詞嵌入都置于同一個向量空間,維度設置為64。CNN 卷積神經網絡過濾器數量為64,窗口大小設置為3。Bi-GRU 設置了兩層結構,神經元節點大小分別設置為128、32。對于問題和用戶編碼器輸出向量的點積結果,最多設置了5 層全連接結構,其神經元節點大小依次是1 024、512、256、128 和64。對于參數最優化結構的實驗在下文詳述。在實驗過程中,采用Adam 優化器,批處理大小設置為2 048,學習率設置為0.000 1。
本節將所提出的算法與其他基準算法進行對比。圖5 展示了本文算法DSIERM 在全連接層結構層數選擇上的實驗結果:過少的結構不利于提取稠密特征信息,過多的全連接層反而可能導致過擬合的狀況,綜合考慮把最終訓練與預測時的全連接層結構固定為5 層。圖6 展示了所有算法在不同迭代次數下的預測結果:隨著迭代次數增加,算法性能不斷提升,第4 次迭代后性能提升已經不明顯,考慮到計算花銷,接下來的實驗將固定Epoch=4。圖7 展示了不同比例訓練數據下算法的預測結果:當采用10%訓練數據時,算法依然可以達到一定精度,說明借助預訓練好的詞嵌入向量可以將其他知識遷移進來,保證算法具有穩定性,克服數據稀疏性問題;隨著訓練數據增加,算法性能不斷提升,說明訓練數據越多,算法構建的模型越準確,更能準確表示用戶興趣。

圖5 不同全連接層結構的性能變化Fig.5 Performance changes under different FC layers

圖6 不同Epoch 的性能變化Fig.6 Performance changes under different epochs

圖7 不同比例訓練數據的性能變化Fig.7 Performance changes under different proportions of training data
表2 展示了所有算法在30%、70%、100%比例的訓練數據上取得的實驗結果。對比后發現:首先,DeepFM 算法效果最差,原因在于其人工選取特征的方法效率較低,會損失一些特征信息;然后,XDeepFM算法效果要明顯優于DeepFM,壓縮交互網絡的引入可以自動學習高層特征交互,驗證了特征交互可以更好地實現特征表示;其次,CNN-DSSM 算法效果要優于XDeepFM,主要因為其滑動窗口特征表示方式使較多上下文信息得到保留,驗證了上下文信息對特征表示的重要性;最后,總體上看本文提出的兩個算法要明顯優于以上基準算法,驗證了用戶回答問題的時序關系有助于發現用戶動態興趣,并且DSIERM 要優于DSIERM-OS,說明動態興趣與長期固定興趣結合可以更好地表示用戶興趣。另外,問題編碼器是本算法中最基本的底層結構,其學習到的特征向量不僅作為問題特征表示,還作為用戶編碼器的問題序列輸入用來學習用戶動態興趣表示,因此問題編碼器的輸出會嚴重影響最終預測結果。問題編碼器的原始輸入是問題標題和問題綁定標簽,基于此本文設置了三組不同輸入的對比實驗(輸入標簽、輸入標題、輸入標簽和標題的組合)來驗證不同輸入特征引起的編碼效果的不同。由于實驗僅驗證問題編碼器的效果,用戶編碼器無關變量需要去除,即僅使用用戶編碼器的動態興趣表示模塊進行接下來的實驗。圖8 展示了三組實驗在不同指標下的結果,對比結果后發現:由于標題比標簽攜帶更多信息,把標題作為編碼器的輸入要比考慮標簽學習到更好的特征向量;綜合考慮標題和標簽組合要比單獨考慮標簽或者標題的使用有更好的表示效果,同時也證明了多樣化的信息引入有助于優化特征表示。

圖8 不同輸入信息對問題編碼器的影響Fig.8 Influence of different input information on question encoder

表2 不同比例訓練數據上所有算法的實驗結果比較Table 2 Comparison of experimental results of all algorithms on different proportions of training data
問題數量大、解答效率低是互聯網問答社區面臨的嚴重挑戰,本文提出了結合注意力與循環神經網絡的專家推薦算法(DSIERM)來解決此難題。該算法包含問題編碼器和用戶編碼器兩大核心部分。問題編碼器實現了問題標題與綁定標簽的深度特征聯合表示。用戶編碼器在用戶歷史回答問題的時間序列上捕捉到動態興趣,并結合用戶固定標簽信息表征長期興趣。最后的推薦結果根據問題與用戶編碼器輸出向量的相似性計算,同時考慮了用戶動態興趣與長期興趣兩方面內容。在來自知乎社區的真實數據上設置了多組對比實驗,結果表明該算法性能優于目前比較流行的深度學習專家推薦算法,顯著提升了推薦準確度。