楊海華,馮仰德,王 玨,聶寧明,劉 芳,張博堯
1(中國科學院 計算機網絡信息中心,北京 100190)
2(中國科學院大學,北京 100049)
網站權威性一般是由外部鏈接數來衡量,常用的算法有PageRank[1]等算法.一般而言高質量的外部鏈接越多,網站或者網頁本身的權威性就越高.這類的方法的缺點在于外部鏈接對網站權威性的影響是有選擇性的,也就是說來自相關內容網站的鏈接,對提高權威性幫助最大,不相關內容的鏈接幫助很小.比如在某個音樂網站首頁上加一個鏈接到某個美食網站,那么對美食網站的權威性幾乎沒什么幫助;而且甚至在某些場景下這種方式的權威性可以被操作,即可以有很多鏈接是人為設置的.本文通過使用將搜索詞和被召回的網站的URL映射為向量的方法,計算兩個向量之間的相似度來評價搜索詞和網站之間的相似度,相似度越高,那么該網站的權威性越高,所以如何精確的表達搜索詞和網站的向量是最為關鍵的問題.本文利用深度學習[2,3]的技術,分別使用Word2vec[4]模型與LSTM(Long Short-Term Memory)遞歸神經網絡模型[5]來獲取搜索詞得向量表示;通過隨機初始化網址的向量,然后在模型的訓練中實時的更新詞向量和網址向量,從而得到最終的詞匯表和網址向量表;其中Word2vec模型和LSTM模型獲取搜索詞的向量方式有些不同,具體見下一章節.
本文在模型訓練過程中一共使用了兩張向量表,一張用戶搜索詞集合的詞匯表,另外一張是所有網站URL集合的網址表,兩張表開始時都是隨機初始化的.在Word2vec模型的實驗中,最終的詞匯表是由訓練Word2vec模型得來的,網址表是在整體的模型訓練中生成的,在計算相似度時,使用的搜索詞向量是通過查由Word2vec模型訓練得到的詞匯表獲取的,網址向量是在模型收斂時得到的網址表中獲取的,然后計算搜索詞和網站之間的相似度.例如用于計算相似度的搜索詞為“我是中國人”,將“我是中國人”通過切詞得到“我”、“是”、“中國人”三個詞,然后通過查由Word2vec訓練得到的詞匯表獲取相應的詞的向量,最后將查到的3個詞的向量相加作為整個搜索詞的向量;在LSTM模型試驗中,最終的詞匯表和網站表都是在利用整體網絡端到端的訓練過程中生成的,在計算相似度時,使用的搜索詞向量是由兩個步驟得到的:① 搜索詞切詞后得到的詞通過查詞匯表得到每個詞向量,然后作為LSTM的輸入;② 取LSTM模型最后一個時刻的隱層輸出得到最終整個搜索詞的向量表達;網址向量是在模型收斂時得到的網址表中獲取的,然后計算搜索詞和網站之間的相似度.例如用于計算相似度的搜索詞為“我是中國人”,將“我是中國人”通過切詞得到“我”、“是”、“中國人”三個詞,然后通過查由整個模型訓練得到的詞匯表獲取相應的三個詞的向量作為LSTM的輸入,最后取LSTM模型最后一個時刻隱層的輸出作為整個搜索詞的向量.
Word2vec模型是Mikolov等人在NNLM[6]以及Log-Bilinear模型[7]基礎上開發的工具,分為連續Bag Of Words(CBOW)和連續Skip-gram兩種模型.CBOW模型利用上下文中的若干詞去預測當前詞;而Skipgram模型恰好相反,利用當前詞預測上下文的若干詞.
兩種模型的訓練過程類似,對于CBOW模型,輸入層是詞的上下文中的若干詞向量,為了充分利用上下文信息預測中間詞,并且不損失句子長度信息的情況下,將該詞的上下文中的若干個詞向量以累加的方式得到中間層的向量.輸出層則是以訓練語料庫中的詞作葉子節點,以各詞出現次數為權值構造的一棵Huffman樹.通過隨機梯度上升算法[4]對投影層向量可能表示的詞進行預測,使得p(W|con(W))[8]值最大化,W表示當前詞,con(W)表示該詞上下文中的若干詞.當神經網絡訓練完成時,即可求出所有詞的詞向量.Word2vec輸出的詞向量可以用于解決自然語言處理(NLP)方面的問題,如情感分析[9]、圖片描述[10]等.Lilleberg等人[11]在做文本分類相關工作方面時,為了更好的得到語義特征,使用了Word2vec 訓練詞向量,并且得到不錯的效果.
LSTM網絡是RNN的擴展,它成功的解決了原始循環神經網絡的缺陷,成為當前最流行的RNN.LSTM的神經網絡基本模塊具有不同的結構,這與傳統的RNN不同,傳統的RNN模型的隱藏層只有一個狀態,即h,它對于短期的輸入非常敏感.LSTM基本模塊中增加了一個新的單元狀態C,如圖1所示.

圖1 LSTM網絡模塊示意圖
LSTM具有遺忘門(forget gate)、輸入門(input gate)、和輸出門(output gates)等三種門結構,用以保持和更新細胞狀態.以下是三種門的具體作用方式:
(1)遺忘門:它決定了上一時刻的單元狀態ct-1有多少保留到當前時刻c.

其中,wf是遺忘門的權重矩陣,xt是當前時刻網絡的輸入值,ht–1是上一時刻LSTM的輸出值,[ht–1,xt]表示把兩個向量連接成一個更長的向量,bf是遺忘門的偏置項,σ是Sigmoid函數.
(2)輸入門:它決定當前時刻網絡的輸入xt有多少保存到單元ct.

其中,wi是輸入門的權重矩陣,bi是輸入門的偏置項.
(3)輸出門:它是控制單元狀態ct有多少輸出到LSTM的當前輸出值ht.

以上式子中符號?表示按元素乘.式(3)中c?t用于描述當前輸入的單元狀態,它是根據上一次的輸出和本次輸入來計算的;式(4)計算的是當前時刻的狀態單元ct;式(5)是把當前輸入的單元狀態c?t和ct–1組合在一起,形成新的狀態單元ct;式(6)的輸出最終是由輸出門和單元狀態共同確定的.
LSTM網絡模型已被成功地應用于圖片/視頻描述[12–14]、文本/情感分類[15–18]、機器翻譯[19]、智能問答[20,21]等自然語言處理任務中.由于LSTM網絡通過記憶單元去學習從細胞狀態中忘記信息、去更新細胞狀態的信息,具有學習文本序列中遠距離依賴的特性,所以很自然地想到使用LSTM網絡模型學習本文需要的搜索詞的向量表達.
使用Google開源的Word2vec模型,訓練語料庫為數據集中的搜索詞,結合實際使用經驗設置詞向量的維度大小為256;由于用戶輸入的查詢詞一般在10個字以內,所以設置模型中對應滑動窗口大小為2;這里使用CBOW方式訓練Word2vec模型,得到該實驗最終的詞向量表;網址表的向量初始為隨機生成,維度大小為256,初始權重范圍為:[–1.0,1.0],之后隨著模型的訓練實時更新;使用Tensorflow框架搭建訓練模型,設置其初始的學習速率為0.1,使用tensorflow提供的指數衰減函數tf.train.exponential_decay動態的更新學習率;為了防止模型在訓練過程中過擬合,采用了dropout方式,其相關系數設置為0.5,并結合使用early_stopping的方式:即記錄到目前為止最好的accuracy,當連續2次Epoch沒達到最佳accuracy時,則停止訓練.Batchsize的大小設置為256;模型訓練的最大迭代次數設為100.具體的訓練步驟如下:
1)將所有搜索詞切詞.將切詞后的搜索詞通過調用Word2vec模型訓練,得到最終的詞向量表;
2)對于新來的一個搜索詞,通過切詞,然后通過查詢由Word2vec生成的詞向量表,將切詞后對應的詞的向量相加作為該搜索詞的向量表達,記為QueryEM.例如:搜索詞為“我是中國人”,切詞后分別為“我”、“是”、“中國人”三個詞,然后通過查詢詞向量表獲取三個相應的詞向量,然后將這三個詞向量相加得到關于“我是中國人”這個搜索詞的向量表達;
3)通過使用tf.nn.embedding_lookup函數查隨機初始化的網址表得到URL1、URL2的向量表達,分別記為URLBEM、URLWEM,并將其值設置為可訓練的;
4)將Sigmoid函數作用于搜索詞的向量與點擊率高的網址向量相加的結果上,其結果記為QBSCORE;同理將Sigmoid函數作用于搜索詞的向量與點擊率低的網址向量相加的結果上,其結果記為QWSCORE;QBSCORE、QWSCORE的具體計算方式如下:

其中,f為Sigmoid激活函數;n為向量的維度大小,·符號為向量對應位置相乘.QBSCORE與QWSCORE之間的差越大,即認為在當前搜索詞下URL1的權威性比URL2權威性高.
5)定義損失函數并記為Loss,并以此優化模型,公式(9)為其計算方式:

其中,n為Batchsize的大小.
6)訓練過程中,QBSCORE與QWSCORE之間的差大于0的樣本為正例,小于0為負例.每個Batchsize的平均準確率的計算方式為當前批次中正例的個數除以當前批次的總樣本數.
具體流程如圖2所示.

圖2 Word2vec模型實驗的訓練流程圖
同樣設置詞向量與網址向量的維度大小為256;詞向量表與網址表中網址的向量隨機初始化的,初始權重范圍為:[–1.0,1.0];使用TensorFlow搭建LSTM模型,設置其網絡層次為1層,時間維度的最大長度為20,隱層維度為256;設置其初始的學習速率為0.1,然后使用tensorflow提供的指數衰減函數tf.train.exponential_decay動態的更新學習率;為了防止模型在訓練過程中過擬合,采用了Dropout方式,其相關系數設置為0.5,并結合使用early_stopping的方式.Batchsize的大小設置為256;模型訓練的最大迭代次數設為100;與Word2vec模型不同的是,這里詞匯表和網址表都是隨著模型訓練實時更新的.具體的訓練步驟除了第一、二步外,其他步驟與Word2vec模型實驗訓練步驟一致.這里模型訓練的前二個步驟為:
1)使用tf.nn.embedding_lookup函數查隨機初始化的詞匯表,然后獲取搜索詞切詞后不同詞的向量表達,將其結果作為LSTM的輸入,記為QueryEm_init,并將其值設置為可訓練的;
2)取LSTM模型最后一個時刻隱層輸出為整個搜索詞的向量表達,即第二十個時刻隱層的輸出為這個搜索詞的向量表達,記為QEM.
具體流程如圖3所示.

圖3 LSTM模型實驗的訓練流程圖
本文使用的日志數據集來源于搜狗公開的數據集SogouQ,數據包括了約一千萬用戶輸入的大約九百萬的搜索詞以及大約一千五百萬的URL展現結果.詞向量表是所有搜索詞切詞后的集合,網址表是所有URL的集合;通過使用計算點擊率的方式計算出查詢詞下出現的URL的點擊率,然后將樣本的格式整理成為:搜索詞、URL1、 URL2的格式,它們之間以tab鍵隔開,其中URL1的點擊率比URL2的點擊率高.通過隨機打亂樣本順序,取其中4/5作為訓練集,剩下的為測試集.
本文采用了P(準確率)為主要評測指標.
圖4和圖5給出了使用兩種不同模型實驗在訓練集、測試集上隨著迭代次數的變化平均準確率的變化曲線.

圖4 Word2vec模型實驗

圖5 LSTM模型實驗
兩組不同的實驗在訓練集、測試集上的平均準確率值如表1所示.

表1 平均準確率表
由圖4、圖5和表1可知,使用Word2vec模型的實驗比使用LSTM模型的實驗在訓練集、測試集上的平均準確率低,但是模型收斂的時間比后者快.分析原因主要有以下兩點:
(1)由于前者是先利用Word2vec模型訓練得到了最終的詞向量表,所以在后續的訓練過程中只需要針對網址表更新訓練,所以收斂時間會比后者快.
(2)由于用戶輸入的查詢詞是具有先后的語義關系,而LSTM模型本身的時序特性能夠很好的結合查詢詞的這種語義關系,而Word2vec考慮更多的是在維度空間上詞與詞之間的相似度,所以通過LSTM模型獲得的搜索詞向量表達比Word2vec要更符合這本文中的應用場景,導致平均準確率比使用Word2vec的實驗要高.
本文分別使用Word2vec模型與LSTM模型獲取用戶搜索詞的向量表達,在通過與相應的網址的向量表達計算相似度作為對應網址的權威性.實驗結果表明兩種方式的有效性,其中LSTM模型試驗的效果突出.
然而,本方法中只考慮了搜索詞對應的網址,并未考慮具體網站標題和內容等信息;由于網站的標題和內容是具體的文字,所以理論上是可以獲取很好的向量表達,從而計算用戶查詢詞和網站標題、內容之間的相似度;如此就可以從多個方面更加全面的來評判網站的權威性.所以評判用戶查詢詞和網站標題等信息之間的相似度,并將其與本文中提出方法相結合是本文下一步研究的重點.