Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deep Neural Network for Learning to Rank Query-Text Pairs #256

Open
chullhwan-song opened this issue Dec 2, 2019 · 1 comment
Open

Deep Neural Network for Learning to Rank Query-Text Pairs #256

chullhwan-song opened this issue Dec 2, 2019 · 1 comment

Comments

@chullhwan-song
Copy link
Owner

https://arxiv.org/pdf/1802.08988.pdf

@chullhwan-song
Copy link
Owner Author

chullhwan-song commented Dec 2, 2019

Abstract

  • Learning to Rank에 의한 정보검색에서의 document ranking 문제를 다룸.
  • 이를 위해, ConvRankNet 제한하는데, 이는 다음과같은 2개의 알고리즘이 결합된 형태
    • Siamese Convolutional Neural Network encoder
    • RankNet ranking
  • OHSUMED dataset 이용

Introduction

  • "Traditionally, people used to hand-tune ranking models such as TF-IDF or Okapi BM25 [Manning et al., 2008] which is not only time-inefficient but also tedious. " ㅎ 이 문장은 너무 공격적인데..~
  • learning to rank의 주 목적은 자동으로 랭킹모델을 fit하는데 있다.
  • 이들은 보통은 "feature based" 기반이다.
    • input(=query-document pair (q, d))은 ranking model에 의해 vector(v)로써 표현되어진다.
      image
    • 이러한 기반은 사실 실용적이지 못하다.
      • 예를들어, ES도 IDF를 실시간으로 뽑지 못하는데, feature 기반은 더더욱~
  • 그래서 이 연구는 Real-time에 적용가능하도록 하는 연구인듯하다.
    • ConvRankNet
      • 2개의 ConvNet encoder 로 구성 (Siamese Convolutional Neural Network (CNN) encoder)
        • q vs d_i & q vs d_j
      • RankNet
        • 3개의 layer feature(q vs d_i vs d_j) > pairwise ranking loss를 이용
          • three-layer neural network-based pairwise ranking model

ConvRankNet

  • 먼저, image는 query set, image는 document set
  • image
  • 여기서 중요한것은, image : document중 쿼리와 적어도 한개의 word가 매칭되는 document(= could be the set of documents sharing at least one token with q.)
  • 그래서, image
  • image : d_i는 d_j보다 query q에 대해 더 relevance하다는 의미.
  • query - doc pair를
    image
  • 구조
    image

Siamese CNN Encoder

  • feature vectors 추출하는 역할
  • Fig.1의 CNN encoder는 weight를 공유
  • 크게, sentence matrix, convolution feature maps, activation units, pooling layer, similarity measure 으로 구성

Sentence Matrix

  • 한문장은 여러개의 word로 구성 : image
  • 각 word의 embedding vector(예- w2v)의 dimension(d)을 가진다.
  • sentence matrix S = nxd metrics

Convolution Feature Maps, Activation and Pooling

  • 2d-filter of size m × d > sentence matrix S에 대해 sliding window를 진행
    • conv 2d filter 크기가 mxd라는 의미인가??
  • conv
    image
    • 빨간색 부분 conv 연산(wx) 이고 b를 더해주는 형태
    • 단지 단어 하나의 단위로 보임 : image
      • i~n 까지
    • 주위 context단위(window단위)로..계산 > - i~( i+sliding window of m)
  • non-linear activation unit 적용 = ReLU
    • 위의 conv (v_i...v_n) 각각 적용
      image
  • 각 f_i..f_n의 filter에 의해(conv)생성된 feature (vi..vn) 에 대해 max pooling layer 적용
conv = tf.nn.conv2d( self.embedded_chars_left, W, strides=[1, 1, 1, 1], padding="VALID",name="conv")
h = tf.nn.relu(tf.nn.bias_add(conv, b), name="relu")
pooled = tf.nn.max_pool( h,  ksize=[1, max_len_left - filter_size + 1, 1, 1], strides=[1, 1, 1, 1], padding='VALID', name="pool")

Similarity Mesure

  • 다음과 같이 주어졌을때, image > 3개의 vector
  • "Learning to rank short text pairs with convolutional deep neural networks." 에서 소개되었던 similarity matrix M 를 도입,
  • 이를 도입하여 나타내면, image
    • M을 어떻게 구해내는지..??(저논문을 봐야할듯..)
  • 이는 DL에서 fit하기가 어렵기 때문에 다음으로 대체~
    image
  • pairwise ranking model's input
    • 두개 network의 feature와 similarity를 feature로 concat하는 형태인데...similarity가 함께 들어가는 case는 좀 신기하다.
      • RankNet에 입장에서는 좋은것인가??

RankNet

  • 2005 : " Learning to rank with nonsmooth cost functions." 연구에서 제시.
    • 실제 본 논문은 "Learning to Rank Short Text Pairs with Convolutional Deep Neural Networks"의 연구에서 이 부분(RankNet)을 insert한 케이스이다.
      • 참고로 이논문은 softmax
        image
  • loss function
    image
    • target probability : image
      • 라벨링 정보 > 정답 랭킹 정보라고 생각하면 될듯~
      • 이는 수식(1)을 참조(동일)
  • more detailed
    • Pairwise loss
    • 다양한 neural ranking에서의 loss 접근방법
      • Pointwise 접근방법
        • 한개의 문서에서,,, > softmax
      • Pairwise 접근방법
        • 한쌍의 문서( pair of documents) 에서 > constrative loss(Siamese)
        • 유명한 RankNet, LambdaRank, LambdaMART에서 적용됨.
      • Listwise 접근방법
        • 문서의 리스트에서,,,>
          • NDCG같은 IR measures을 optimized
          • 랭킹 고유의 속서을 이용하려는 loss
  • 위에서 복잡하게 써 놨지만, hinge loss이다.
self.pos_scores = self.conv_model(self.query_emb,self.pos_doc_emb)
self.neg_scores = self.conv_model(self.query_emb, self.neg_doc_emb)
self.loss = tf.reduce_mean(tf.maximum(0.0, 1 - self.pos_scores + self.neg_scores))

Experimental Results

image

@chullhwan-song chullhwan-song reopened this Dec 9, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant