曹軍梅 馬樂榮
(延安大學(xué)數(shù)學(xué)與計算機科學(xué)學(xué)院 陜西 延安 716000)
排序問題已被廣泛應(yīng)用于信息檢索、協(xié)同過濾和數(shù)據(jù)挖掘[1-3]等領(lǐng)域,是對檢索到的樣本根據(jù)其相關(guān)性進行排序。在文檔檢索中,排序描述為給定一個查詢樣本,通過對比待檢索樣本和這個查詢樣本的相似度,可以得到一系列相關(guān)的樣本,再對這些樣本根據(jù)其相關(guān)性借助一個排序函數(shù)來進行打分,然后按降序排列文檔,即可得到一組相關(guān)由高到低樣本。傳統(tǒng)排序算法通過人工調(diào)整排序中所涉及的一些參數(shù)來構(gòu)建排序函數(shù),然而不斷增加的文檔特征數(shù)量,使得手工構(gòu)建排序函數(shù)變得更加困難。
近年興起的機器學(xué)習(xí)方法在排序問題上顯示出其優(yōu)越性,即排序?qū)W習(xí)[4]。這種方法的目的仍是構(gòu)造一個排序函數(shù),但它是通過最小化度量真實打分和預(yù)測打分之間差距的損失函數(shù)來實現(xiàn)。真實打分值來自于表示每個文檔相關(guān)性的數(shù)據(jù)標(biāo)注,而預(yù)測打分是通過排序函數(shù)得到。
排序?qū)W習(xí)方法根據(jù)輸入數(shù)據(jù)顆粒度的不同,分為單文檔[5]、文檔對[6]和文檔列表[7]方法。單文檔方法直接采用分類或回歸來解決排序問題,其中典型的包括Prank[5]和McRank[8]。文檔對方法將檢索到的文檔中的任意兩個文檔構(gòu)造成文檔對,作為正樣本或負樣本進行訓(xùn)練,然后直接采用二分類的方法進行排序?qū)W習(xí),常見的方法有Ranksvm[6]、Rankboost[9]和Ranknet[10]。雖然上述兩種方法可對檢索到的文檔的相關(guān)性做出判別,但它們并不是直接解決排序問題,沒有考慮文檔列表中文檔之間的全序關(guān)系。
研究表明[11],文檔列表方法效果要優(yōu)于單文檔、文檔對方法,它是將整個文檔序列看作是一個訓(xùn)練樣本,意圖獲得整個序列的排序情況,是在排序過程中最自然的結(jié)果展示方法,在排序任務(wù)中表現(xiàn)出了最好的性能,代表性的算法包括ListNet[7]、ListMLE[11]和ListCCE[12]。然而,這些代表性的文檔列表方法只是利用一般的反向傳播神經(jīng)網(wǎng)絡(luò)算法進行訓(xùn)練,沒有考慮從每個文檔中提取的特征之間的關(guān)系。事實上,這些特征之間是局部相關(guān)或冗余的。為進一步提高排序性能,需要對這些特征的性質(zhì)進行深入考慮。因此,借助多通道深度卷積神經(jīng)網(wǎng)絡(luò)對文檔的多模態(tài)特征進行重提取,進而進行排序?qū)W習(xí)。該方法過程可以分為訓(xùn)練和測試兩個階段。在訓(xùn)練階段,利用訓(xùn)練數(shù)據(jù)進行學(xué)習(xí)和構(gòu)建排序函數(shù),排序函數(shù)是根據(jù)不斷優(yōu)化損失函數(shù)得到的。隨后,將學(xué)習(xí)得到的排序函數(shù)在測試集上進行測試。
本文針對文檔列表排序?qū)W習(xí)方法構(gòu)建了一個多通道深度卷積神經(jīng)網(wǎng)絡(luò)架構(gòu),即ListCNN,它描述了如何重新提取多模態(tài)特征,從而對文檔列表方法發(fā)揮其作用。而后通過實驗驗證本文提出的方法,實驗結(jié)果表明該方法性能超過現(xiàn)有典型的文檔列表方法。
(1)
式中:m是查詢的數(shù)量;f(x(i))和y(i)都是文檔列表級的向量。因此,損失函數(shù)在列表顆粒度上度量真實值和預(yù)測值的相似性。
在每個查詢中,每個文檔被提取為46維特征向量,并表示為1維向量。其中前40個特征與文本內(nèi)容相關(guān),即文檔內(nèi)容在多大程度上與查詢相關(guān),它們被分為八組,分別是詞頻率TF、逆文檔頻率IDF、TF×IDF所得到的值TF-IDF、DL(文檔長度)、BM25、LMIR.ABS、LMIR.DIR和LMIR.JM[13],是從正文、錨文本、標(biāo)題、URL和整個文檔這五個域中提取得到,后6維特征與重要度相關(guān),分別PageRank、入度、出度、URL中的斜線數(shù)、URL長度和子網(wǎng)頁數(shù)量,反映了文檔在互聯(lián)網(wǎng)絡(luò)中的重要度(如PageRank根據(jù)網(wǎng)頁之間相互的鏈接關(guān)系來計算網(wǎng)頁的排名,是Google用來標(biāo)識網(wǎng)頁的重要性的一種方法。其級別從1到10級,PageRank值越大說明該網(wǎng)頁越受歡迎即重要度越高,通常能夠從更多地方到達的網(wǎng)頁更為重要,因此具有更高的PageRank值。)。所有這些特征都組成多模態(tài)特征。從五個域中提取的前40維特征分為五個領(lǐng)域,存在局部相關(guān)性,而且可能有冗余。如果利用多通道深度卷積神經(jīng)網(wǎng)絡(luò)從中重提取并得到新的表征特征,可以提高文檔列表方法的性能。此外,對于后6個特征,同樣進行重新提取。由于它們是多模態(tài)特征,所以本文設(shè)計一個在空間上并行的卷積神經(jīng)網(wǎng)絡(luò)進行提取。最后,所有這些重提取得到的表征特征將被聚合。
考慮到前40維特征和后6維特征是跨模態(tài)的,模型中建立了兩組并排的卷積神經(jīng)網(wǎng)絡(luò),它們在空間上是并行的,包括所有卷積層和池化層。它們的輸出被聚合并輸入到全連接層中,然后使用前面提到文檔列表損失函數(shù)進行訓(xùn)練。網(wǎng)絡(luò)結(jié)構(gòu)示意如圖1所示。
圖1 多通道卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
為了使訓(xùn)練集適應(yīng)卷積神經(jīng)網(wǎng)絡(luò),需要考慮輸入層的數(shù)據(jù)格式。訓(xùn)練集中的每個文檔被提取得到46維多模態(tài)特征,將這些特征按模態(tài)分開來考慮,即分別考慮前40個和后6個。由于前40個特征可以被卷積,因此將它們從1維向量變形為2維矩陣。具體做法是,把它們放在矩陣的邊界位置,剩下位于中心的空白處以零值填充。這樣,訓(xùn)練數(shù)據(jù)就可以容易地輸入到卷積神經(jīng)網(wǎng)絡(luò)中。變形后的特征向量如圖2所示。
圖2 變形后的輸入向量
卷積操作的目的是為了實現(xiàn)權(quán)值共享。因此不管有多少網(wǎng)絡(luò)節(jié)點來自輸入層,需要維護權(quán)重參數(shù)數(shù)量只依賴于卷積核的大小和通道的數(shù)量,即所有的連接節(jié)點共享同樣的連接權(quán)重。卷積核可以看作是一組權(quán)重,可以通過增加卷積核的數(shù)量從而得到多組權(quán)重,這可以增強網(wǎng)絡(luò)的非線性建模能力。具體而言,對于前40個特征,設(shè)置了兩個卷積層。第一層是一個通道大小為33的卷積核,第二層將池化后的第一層卷積操作結(jié)果擴展為11通道,卷積核大小是2×2。對于后6維原始特征,同樣為了提高模型擬合能力,但由于這里沒有局部相關(guān)性,本文模型設(shè)置了兩個卷積層,卷積核大小都是1×1,但沒有任何池化層,而且第一個卷積層設(shè)置為一個通道,第二個卷積層設(shè)置為三個通道。在這些卷積操作之后,輸入數(shù)據(jù)將被傳輸并流入池化層或其他操作,如聚合等。為了得到一個非線性模型,在所有卷積運算的后面設(shè)置激活函數(shù),和BP神經(jīng)網(wǎng)絡(luò)中一樣,最常見的激活函數(shù)為sigmoid、tanh、和ReLU,它們會影響收斂速度。一般來情況下選擇ReLU,但由于在本文中輸入數(shù)據(jù)的特征相差不顯著及ReLU在訓(xùn)練的過程中出現(xiàn)了神經(jīng)元死亡、權(quán)重?zé)o法更新的情況,因此本文選用sigmoid作為激活函數(shù)。
在卷積操作之后,輸出張量的維度仍然很高。為了降維,在這些卷積層之后必要地補充池化層。對于前40個特性,在每個卷積之后使用2×2大小的池化窗口進行平均池化操作。然而,對于后6維特性,由于沒有局部相關(guān)性,因此沒有池化操作。
無論是哪種神經(jīng)網(wǎng)絡(luò),在反向傳播過程中,用于更新權(quán)重的梯度值可以被抽象地表示為:
(2)
本文提出的基于多通道卷積神經(jīng)網(wǎng)絡(luò)的文檔列表排序?qū)W習(xí)方法主要過程見算法1。
算法1ListCNN
fort= 1 toTdo
fori = 1 tomdo
2. 利用式(2)計算所有梯度變化值Δω;
3. 更新所有權(quán)重ω=ω-Δω·η;
end for
利用式(1)計算損失函數(shù)值;
end for
為了驗證本文方法的有效性,通過Tensorflow 1.10.0實現(xiàn)了本文方法。在實驗中,采用CNN架構(gòu)的文檔列表方法作為實驗組,并設(shè)置兩個采用普通BP神經(jīng)網(wǎng)絡(luò)的對照組。其中一組是含有一個隱藏層的三層BP神經(jīng)網(wǎng)絡(luò),另一層是更深的BP(Deeper-BP)神經(jīng)網(wǎng)絡(luò),其每層的層數(shù)和神經(jīng)元數(shù)與本文的CNN架構(gòu)一樣。這樣設(shè)置的原因是,通常情況下,Deeper-BP神經(jīng)網(wǎng)絡(luò)可能表現(xiàn)得更好。然而,有時較深的BP神經(jīng)網(wǎng)絡(luò)能很好地擬合訓(xùn)練集,但過擬合可能會發(fā)生。因此,需要驗證本文的方法是否與其他節(jié)點數(shù)相同的BP神經(jīng)網(wǎng)絡(luò)在過擬合時仍然能保持較好的性能。
本文采用Letor4.0數(shù)據(jù)集[14]中的兩個數(shù)據(jù)集MQ2007和MQ2008進行實驗,表1給出了它們的介紹信息。
表1 MQ2007和MQ2008數(shù)據(jù)集介紹
MQ2007和MQ2008的查詢使用了從TREC中產(chǎn)生的Gov2網(wǎng)頁集合。數(shù)據(jù)格式為:
label qid:id feaid:feavalue feaid:feavalue ...
具體如下:
2 qid:22 1:0.666 2:0.716 … 46:0.789 #docid=197041
1 qid:221:0.333 2:0.35… 46:0.83 #docid=277438
0 qid:22 1:0.166 2:0.179 … 46:0.844 #docid=93542
每行表示一個文檔樣本,label表示該樣本和該查詢請求的相關(guān)性,劃分為強相關(guān)、弱相關(guān)、不相關(guān),分別量化表示為2、1、0;qid是查詢請求的id,相同的查詢請求的文檔樣本的qid相同,上面就是三個對qid為“22”的查詢;緊接其后是提取到的1-46維的文檔特征,每一個特征都表示為“特征:特征值”,最后以“#”開頭的是文檔注釋。
使用相同數(shù)量的查詢將每個數(shù)據(jù)集劃分為5個部分,分別表示為S1、S2、S3、S4和S5,用于五折交叉驗證。在每個折疊中,使用三個部分進行訓(xùn)練,一個部分進行驗證,一個部分進行測試,如表2所示。訓(xùn)練集用于學(xué)習(xí)排名模型。由于進行了五折交叉驗證,因此排名方法的性能實際上是五次實驗的平均性能。
表2 五折交叉驗證數(shù)據(jù)集劃分
使用信息檢索中常用的兩個排序性能指標(biāo)NDCG@k(Normalized Discount Cumulative Gain)和MAP(Mean Average Precision)來衡量排序?qū)W習(xí)算法的性能的優(yōu)劣,為對比實驗設(shè)置五折交叉驗證。
對于一個排好序的文檔列表,NDCG的值可以表示為:
(3)
式中:r(di)是第i個文檔的相關(guān)性;Zk是歸一化因子。NDCG的值越高,排序的結(jié)果越好。一般只考慮NDCG的前k個值,記為NDCG@k。
(4)
式中:m表示第m類查詢;Crd表示相關(guān)文檔的數(shù)。
在指標(biāo)NDCG上,由于只有前k個查詢結(jié)果更有必要進行評估,通常采用NDCG@k來簡化。具體而言,由于前10個結(jié)果更能得到關(guān)注[15],實驗只取NDCG@1到NDCG@10的結(jié)果。圖3展示了三個文檔列表方法在Letor4.0數(shù)據(jù)集上的NDCG@1到NDCG@10的評價結(jié)果??梢园l(fā)現(xiàn)在對照組中,只有ListNet在Deeper-BP神經(jīng)網(wǎng)絡(luò)上的表現(xiàn)超過普通的BP神經(jīng)網(wǎng)絡(luò),而ListMLE[8]和ListCCE[9]由于過擬合,在Deeper-BP神經(jīng)網(wǎng)絡(luò)上的表現(xiàn)不好。然而,ListCNN的表現(xiàn)都能超過它們,即ListCNN達到了最優(yōu)的性能,NDCG@1至NDCG@10的值在MQ2007上為0.59到0.68,在MQ2008上為0.64至0.79。
圖3 數(shù)據(jù)集MQ2007和MQ2008的NDCG指標(biāo)
表3和表4分別展示了算法在MQ2007和MQ2008數(shù)據(jù)集的MAP指標(biāo),其中ListNet[7]和ListCCE[9]的損失函數(shù)在ListCNN中的MAP指標(biāo)上表現(xiàn)最好。只有ListMLE[8]的損失函數(shù)在ListCNN上表現(xiàn)略差于普通BP神經(jīng)網(wǎng)絡(luò),這是由于過擬合造成。
表3 數(shù)據(jù)集MQ2007的MAP指標(biāo)
表4 數(shù)據(jù)集MQ2008的MAP指標(biāo)
在研究排序效果最自然、效果較好的文檔列表方法的基礎(chǔ)上,通過分析文檔多模態(tài)特征之間的關(guān)系,設(shè)計了多通道卷積神經(jīng)網(wǎng)絡(luò)來對文檔的多模態(tài)特征進行重提取,從而得到更加有效的特征表示。為了驗證本文文檔列表排序?qū)W習(xí)ListCNN算法的優(yōu)越性,用微軟公開Letor4.0數(shù)據(jù)集中的MQ 2007和MQ 2008進行實驗,并用NDCG值、MAP值的對比證實了ListCNN算法在排序過程中取得了較好的實驗效果。由此表明本文提出的排序?qū)W習(xí)方法能夠有效地提高排序?qū)W習(xí)算法的性能。下一步工作將繼續(xù)挖掘影響排序性能的因素并加以改進,同時與深度學(xué)習(xí)相融合以增強排序模型在動態(tài)環(huán)境中的適用性。