Deep Learning for Information Retrieval


最近關注了一些Deep Learning在Information Retrieval領域的應用,得益於Deep Model在對文本的表達上展現的優勢(比如RNN和CNN),我相信在IR的領域引入Deep Model也會取得很好的效果。

IR的范圍可能會很廣,比如傳統的Search Engine(query retrieves documents),Recommendation System(user retrieves items)或者Retrieval based Question Answering(Question retrieves answers)可能都可以屬於IR的范疇。仔細考慮這些應用,不難看出他們都存在一個模式,也就是幾個基本需要解決的任務:

  1. Query(Intent)的表達和Document(Content)的表達?
  2. Matching Model:maps query-document pairs to a feature vector representation where each component reflects a certain type of similarity, e.g., lexical, syntactic, and semantic。或者這里根據matching vector與參數w直接得到matching score,相當於做了內積。
  3. Ranking Model:接受q-d的matching結果(matching vector或matching score),在當前end-to-end的訓練框架下,其實使用matching score更方便一點(為什么更方便一點本文后面會說明),然后使用learning to rank的方法(pointwise,pairwise或listwise)來進行訓練,重點是如何設計loss function。

下面我主要參考Li Hang在sigir 2016上的tutorial(http://t.cn/Rt7OK2w)來組織我的筆記,同時會重點閱讀幾篇有代表性的論文來更好的理解細節。一句話,希望學習可以既見森林,又可見樹木。

我主要從以下四個部分來講解:

  1. IR的基礎
  2. 相關的Deep Learning模型(Word Embedding,RNN和CNN)
  3. Deep Learning for IR的基礎性問題
  4. Deep Learning for IR的具體應用

IR的基礎

下圖展現了Information Retrieval的一個整體構架,

IR

傳統的IR使用向量空間模型(VSM)來計算query和document的相似度,具體方法如下:

  • Representing query and document as tf-idf (or BM25) vectors
  • Calculating cosine similarity between them

IR

現代的IR使用了一個更加general的框架來處理similarity的問題:

  • Conducting query and document understanding
  • Representing query and document as feature vectors
  • Calculating multiple matching scores between query and document (Matching Model)
  • Training ranker with matching scores as features using learning to rank (Ranking Model)

IR

一般這四個步驟都是在一個end-to-end的神經網絡結構下進行訓練的。這里注意,Matching Model只有唯一一個,就是說所有的query-document對都使用一個Matching Model,Ranking Model只使用這唯一一個Matching Model產生的Matching Score或Matching Vector。

Deep Learning的方法可以滲透在IR中的不同步驟中,如下圖所示,一般包括了Intent和Content的表示和Matching Model的學習。

IR

注意,這里並沒有說明Ranking Model,其實Ranking Model可以看做整個神經網絡結構的loss function層,不同的learning to rank方法有不同的loss形式,本文只討論pointwise和pairwise方法,因為這兩種方法效率足夠高,在實踐中應用的最多。

同時,本文重點考察兩種工業中應用最多的訓練數據形式。

  1. 第一種形式,數據提供了某個query對應的完全的document的排序(或relevance值);
  2. 第二種形式,數據只提供了某個query對應的一個或幾個相關document,其他document並不知道相關性,具體類似推薦系統的數據。

其實,在工業環境中第二種數據形式是最普遍的,由於本身只有正樣本,所以需要進行隨機負采樣,來構造一種排序關系。同時loss function也可以使用pointwise或pairwise的方法,pointwise方法直接把問題當做二分類問題來做;pairwise使用了正樣本和每個負樣本的偏序關系,可以使用RankSVM的形式(hinge loss)或RankNet的形式(cross entropy loss)。

相關Deep Learning模型的基礎

Word Embedding

Word Embedding的教程可以參考《word2vec中的數學原理詳解》,我覺得這篇文章講的很詳細也很生動。

RNN

RNN的教程可以參考我之前寫的tutorial https://github.com/pangolulu/rnn-from-scratch,其中也包含了很多拓展的資料。

CNN

CNN for text可以參考這篇論文https://arxiv.org/pdf/1408.5882v2.pdf,他將CNN模型應用到了sentence classification的問題上,並取得了state-of-art的效果。

Deep Learning for IR的基礎性問題

Representation Learning

Word Embedding的出現使得我們可以使用低維的向量空間來表示Word的語義,避免了使用one-hot表示產生了一些問題,比如維度高、one-hot詞向量間無法表達相關性等等。這種embedding的方法稱為hierarchy representation。

那么,如何將一段文本表示成embedding的形式呢?也就是sentence representation或document representation,目的是represent syntax, semantics, and even pragmatics of sentences。目前有很多研究工作可以應用,對於sentence的表示可以使用rnn或cnn,對於document的表示會復雜一點,可以參考Hierarchical Attention Networks for Document ClassificationConvolutional Neural Network Architectures for Matching Natural Language Sentences這兩篇工作。它們主要的思想其實就是使用cnn或rnn來表示document中的sentences,然后使用表示好的sentence vectors作為另外的rnn的輸入來最終表示整個document。

一般CNN或RNN會隨着整個網絡進行end-to-end的訓練,也就是Task-dependent的,也是有監督的。

Representation Learning是整個IR或NLP task的基礎,無論是Classification的問題,Matching的問題,還是Translation的問題,都需要先學習一個document或sentence的中間表示。可以看下面的示意圖,表示IR或NLP不同任務之間的關系,和representation learning所處的位置。

IR

Matching Model

Matching是IR任務中重要的一步,意義是maps query-document pairs to a feature vector representation where each component reflects a certain type of similarity, e.g., lexical, syntactic, and semantic。這里產生的是一個matching vector,接下來可以根據matching vector與參數w直接得到matching score(比如做內積)。

IR

Maching Model產生的結果(matching vector或matching score)接下來會作為ranking model的輸入,ranking model其實相當於整個網絡的loss function,在當前end-to-end的訓練框架下,其實使用matching score更方便一點。之后可以看到,使用matching vector + LTR的方法和使用maching score + ranking loss的方法一定程度上是等價的(這里只考慮pointwise和pairwise方法),而且后面一種形式更加general,它包含了傳統的LTR的表達,也可以做一些變化,比如做一些negative sampling等等。之后在Ranking Model的講解會重點介紹幾篇論文中常見的ranking loss的形式,並且說明一下LTR方法使用matching vector和使用matching score的等價性。

好,現在我們重點講解使用深度學習來做Matching的方法。一般Matching的方法有三種形式:

  1. Projection to Latent Space
  2. One Dimensional Matching
  3. Two Dimensional Matching
  4. Tree Matching

本文暫時只討論前三種。

Matching: Projection to Latent Space

類似於VSM的方法

IR

Matching: One Dimensional Matching

應用的比較多,可以在這個基礎上融合不同的matching方法得到的結果,比如融入了第一種matching方法(query和document的vector做內積)。

IR

Matching: Two Dimensional Matching

直接生成二維的matching score,然后用cnn模型進行學習。

IR

有一些研究的結論,如下:

  • 對於sentence的表示學習,cnn方法要比rnn方法好,這個有待於驗證。
  • 2-dimensional CNN比1-dimensional CNN方法好
  • Matching scores can be used as features of learning to rank models,這個方法相當於可以融合不同方法得到的matching score,然后組成一個matching vector。

Ranking Model

也就是大家熟知的Learning to Rank,不過我這里想解釋的更加general一點,可能在構造訓練集上和LTR有一些不同。

先說一下問題的定義,假設我有query q和候選的document集合D={d1, d2, ..., dn}。對於訓練集,首先必須再次強調一下訓練數據的形式:

  1. 第一種形式,數據提供了某個query對應的完全的document的排序(或relevance值);
  2. 第二種形式,數據只提供了某個query對應的一個或幾個相關document,其他document並不知道相關性,具體類似推薦系統的數據。

然后說一下LTR的輸入,LTR接受Matching Model得到的結果,即可以使Matching Vector或者是Matching Score。

對於第一種形式的數據,可以采用傳統的LTR方法:

  • pointwise方法直接當做回歸問題,可以看到Matching Score就可以看做是回歸的值了,如果使用Matching Vector作為輸入,相當於繼續使用一些參數W做了一次回歸問題。但其實這是可以通過神經網絡end-to-end學習出來的,相當於整個網絡(包括Representation Learning和Matching Model)的目標函數就是回歸問題(損失函數為最小二乘)。
  • pairwise方法考慮了document集合中兩兩document的偏序關系,由此構造訓練集。考慮所有兩兩的document,比如d1d2,如果訓練集中d1 > d2,那么我們希望通過Matching Model得到的d1d2對應的Matching Score m1要大於m2。在上面的intuition的指導下,我們可以定義不同的loss function了,最常見就是hinge loss function,也就是我們希望m1m2要至少大於一個值,對應了SVM中的1,具體可以寫成max(0, theta - m1 + m2)。這個Hinge Loss的定義方法其實就是RankSVM的方法,不過傳統的RankSVM的定義使用了Matching Vector作為輸入,比如v1v2,並且重新構造了訓練集,v1 - v2對應的label為+1(正類),v2 - v1對應的label為-1(負類)。大家可以看一下RankSVM的公式形式,不難會發現RankSVM和我這里表達的定義其實是等價的,感興趣的同學可以參考http://www.cnblogs.com/kemaswill/p/3241963.html。其實,對於RankNet也是相同的道理,感興趣的可以參考http://www.cnblogs.com/kemaswill/p/kemaswill.html

對於第二種形式的數據,訓練數據中只提供了某個query對應的一個或幾個相關document,其他document並不知道相關性。由於只提供了正反饋的數據,目前主流的做法就是進行contrastive sampling,也就是隨機負采樣。當有了負樣本之后,相當於可以得到document之間的偏序關系了,就可以使用LTR的方法,這里面我傾向於稱為ranking loss,也包括了pointwise和pairwise這兩種方法:

  • pointwise方法直接把問題當做二分類來做,正相關的document為正例,采樣的負相關的數據為負例。如果接收Matching Score,可以在外面套一層sigmoid函數轉化成概率,使用交叉熵損失函數進行訓練;如果接收Matching Vector,相當可以再做一次logistics regression,但其實和前面方法是等價的。
  • pairwise方法是目前主流的做法,對一個query來說正相關的document偏序關系要大於這個query下隨機采樣的負相關的document,采樣的個數可以作為一個超參數。這樣可以使用和第一種數據形式的pairwise方法設計ranking loss了,這里不再贅述。一般文獻里面都會使用hinge loss,表達示為e(x, y_pos, y_neg) = max(0, theta - s_match(x, y_pos) + s_match(x, y_neg)),其中x為query,y_pos為正相關document,y_neg為負相關document,s_match為Matching Model得到的Matching Score。

Deep Learning for IR的具體應用

Document Retrieval

這里考慮Learning to Rank for Document Retrieval,下圖是整體的構架圖,可以看到系統直接返回Ranking Model,相當於Matching Model和Ranking Model以一起學出來的。

IR

具體有一下幾點考慮:

  • simultaneously learn matching model and ranking model
  • Matching model: Projection into Latent Space, Using CNN
  • Ranking model: taking matching model output as features, as well as other features, Using DNN

比較重要的就是Matching Model和Ranking Model的關系,下圖直觀的表示出來:

IR

其實,在我看來圖中最后都會輸出一個score,這個score就是matching score,而這個是最重要的。

下面給出一篇論文的網絡結構圖,這篇論文發表在sigir 2015,叫做Learning to Rank Short Text Pairs with Convolutional Deep Neural Networks,有興趣的同學可以回去精讀。

IR

首先,這篇論文使用了pointwise的方法,所以是一個二分類問題;使用CNN來對query和document學習representation;使用一個雙線性函數來match query-vector和document-vector(q_vec M d_vec的內積);之后與query-vector和document-vector或者加上其他feature一同連接成一個feature vector,這個就是Matching Vector;網絡后幾層經過若干fully connected層,最后會得到一個實數,就是Matching Score;由於是一個二分類問題,Matching Score外面套一層sigmoid函數轉換成概率,使用交叉熵損失函數進行訓練。

Retrieval based Question Answering

Retrieval based QA其實和Document Retrieval沒有什么區別,下圖給出了一個整體的框架圖:

IR

具體的一篇論文可以參考李航發表在nips 2015的文章,題目叫Convolutional Neural Network Architectures for Matching Natural Language Sentences。文中也是用了CNN來學習sentence的表示,但文中提出了兩種Matching Model結構,一種是One Dimensional Matching,另一種是Two Dimensional Matching。分別表示如下圖所示:

IR
IR

最后Matching Model會生成一個Matching Score,正如我在這篇博文闡述的一樣。

對於Ranking Model,也就是ranking loss,這篇文章使用了pairwise的方式,使用了hinge loss function,具體為:e(x, y+, y−) = max(0, 1 + s(x, y−) − s(x, y+))。其中,y+y- match x的分數要高,也就是y+排在y-之前;s(x, y)xy的matching score。

Image Retrieval

這個任務的意義是用文字來搜索圖,反過來或者用圖來搜索文字。一個整體的示意圖如下:

IR

具體的一篇論文也是來自李航老師的,發表在ICCV 2016,題目叫作Multimodal Convolutional Neural Networks for Matching Image and Sentence。這篇論文使用了Multimodal CNN的方法,具體為:

  • Represent text and image as vectors and then match the two vectors
  • 三種matching方法:Word-level matching, phrase-level matching, sentence-level matching
  • CNN model works better than RNN models (state of the art) for text

其中sentence-level matching和Word-level matching的示意圖如下:

IR
IR

最后網絡會輸出一個Matching Score,這篇文章也使用了pairwise方法,但是訓練數據沒有負相關樣本,所以使用了隨機負采樣的方法;loss function選擇了hinge loss,具體形式為e_θ(xn, yn, ym) = max(0, theta − s_match(xn, yn) + s_match(xn, ym),其中ym是隨機采樣的負樣本。

總結一下,可以看到,無論是Document Retrieval,Retrieval based Question Answering還是Image Retrieval,它們的模式都已一樣的,都包括了三個基本要素:Representation Learning,Matching Model和Ranking Model。

總結

本文在於幫助梳理一下這種retrieve,match,similarity或者說recommend等一類問題的一些模式和關鍵要素,使點連成線,在大腦中構建真正的理解,能做到舉一反三,遇到相似的任務能很自然的聯想過去。大家如果有什么意見或想法,歡迎在下面留言。

Reference

    • Convolutional Neural Network Architectures for Matching Natural Language Sentences, nips 2015
    • Learning to Rank Short Text Pairs with Convolutional Deep Neural Networks, sigir 2015
    • Multimodal Convolutional Neural Networks for Matching Image and Sentence, iccv 2016
    • TOWARDS UNIVERSAL PARAPHRASTIC SENTENCE, ICLR 2016
    • deep_learning_for_information_retrieval, sigir 2016 tutorial


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM