Deep Learning for Information Retrieval

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

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

  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)來組織個人筆記,同時會重點閱讀幾篇有表明性的論文來更好的理解細節。一句話,但願學習能夠既見森林,又可見樹木。github

我主要從如下四個部分來說解:網絡

  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。ui

Deep Learning的方法能夠滲透在IR中的不一樣步驟中,以下圖所示,通常包括了Intent和Content的表示和Matching Model的學習。設計

IR

注意,這裏並無說明Ranking Model,其實Ranking Model能夠看作整個神經網絡結構的loss function層,不一樣的learning to rank方法有不一樣的loss形式,本文只討論pointwise和pairwise方法,由於這兩種方法效率足夠高,在實踐中應用的最多。3d

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

  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
相關文章
相關標籤/搜索