[MRC] Passage Retrieval (Sparse Embedding)

hyunsooo·2022년 12월 23일
0

Introduction to Passage Retrieval

Passage Retrieval이란 질의에 맞는 적절한 문서(passage)를 찾는 것을 말한다. 물론 이 문서를 찾는 장소인 Database는 다양한 구조를 띄고 있을 수 있지만 보통 위키피디아를 사용하게 된다.

Passage Retrieval 시스템을 MRC시스템과 연결하게 되면 Open-domain Question Answering을 해결할 수 있다. 기존 MRC는 주어진 지문에서 적절한 답을 찾거나 생성하는 방법을 사용했다면 Passage Retrieval시스템은 질문에 적절한 문서를 추출하게 되고 MRC시스템에서 해당 문서내에서 적절한 답을 찾게되는 2-stage방식을 사용하게 된다.

간략한 개요를 설명하자면 계산의 효율성을 위해 사전에 문서(Passage)를 embedding해두고 질의가 들어오면 이 질의도 embedding하여 어떤 vector space로 표현하게 된다. 이렇게 질의와 여러가지 문서들 간의 유사도로 랭킹을 매기고 유사도가 가장 높은 Passage를 선택하는 방식을 사용한다.

Passage Embedding and Sparse Embedding

Sparse하다는 의미는 dense의 반대어로 사용하며 어떤 벡터에 0이 아닌 숫자가 매우 드문 상태를 의미한다. 자연어처리의 기본이 되었던 Bag-of-Words도 Sparse embedding중 하나로 여러개의 문서들을 단어들의 유무(0과 1)로 표현한 것이다. 전체 문서들의 단어들이 30만개라면 하나의 문서는 30만개의 차원으로 표현이 될 수 있으며 이렇게 vocabulary크기가 커질수록 sparse해지는 현상이 나타난다.
BoW는 기본적으로 unigram방식을 선택했지만 조금 더 advanced한 방법은 bigram을 사용하기도 한다. 또한 binary한 방법이 아닌 단어들의 개수를 까지 고려하는 방법으로 발전되어 왔다.
Sparse embedding의 장점으로 Term overlap을 정확하게 잡아낼 때 유용하게 사용할 수 있다. 하지만 의미(semantic)가 비슷한 다른 단어의 경우 비교가 불가하다.

TF-IDF

BoW는 문서에 단어가 포함되어 있는지 아닌지를 구분하여 binary한 방법을 사용했다면 TF-IDF의 경우 단어의 빈도(TF, Term Frequency)와 단어가 제공하는 정보의 양 (IDF, Inverse Document Frequency) 두가지를 고려하여 embedding하는 방법론이다.
직관적으로 어떤 단어가 현재 문서에서 많이 발견되었을때 다른 문서에서도 자주 등장한다면 중요도가 떨어지고 반면에 다른 문서에서도 출현 회수가 적다면 이 단어의 중요도는 높다고 할 수 있다.

TF를 계산하는 방법은 BoW와 달리 해당 문서에서 단어들이 몇번 출현했는지 계산하게 된다. 여기서 normalization을 위해 실제 문서의 총 단어의 개수로 나눠줌으로 비율로 나타낸다. 추가적으로 normalization 방법은 log를 사용하는것과 같이 다양한 방법이 있다.

IDF는 단어가 제공하는 정보의 양으로 아래와 같다.

IDF(t)=logNDF(t)IDF(t) = log \frac{N}{DF(t)}

DF는 Term이 등장한 document의 개수이며 N은 총 document의 개수를 의미한다. 어떤 단어가 모든 document에서 등장했다면 DF값은 N과 같아지며 IDF는 0이 된다. 반면에 DF값이 작을수록 IDF값은 높은 값을 가지게 되고 단어의 정보값이 높아지는것을 의미한다.
IDF는 문서에는 무관하며 단어에만 종속되어 있기 때문에 문서마다 동일한 값이 적용되는 특징이 있다.

최종적으로 TF-IDF의 식은 아래와 같다.

TF(t,d)×IDF(t)TF(t,d) \times IDF(t)
  • 'a', 'the'등 관사는 낮은 TF-IDF값을 나타낸다. TF는 높지만 IDF가 0에 가깝다.

  • 자주 등장하지 않는 고유명사는 높은 TF-IDF값을 나타낸다. IDF값이 커지면서 TF-IDF값이 증가하게 된다.

이와 같이 TF-IDF를 사용해서 Passage Retrieval을 구현하게 된다면 score식은 아래와 같다.

score(D,Q)=termQTFIDF(term,Q)TFIDF(term,D)score(D,Q) = \sum_{term \in Q} TFIDF(term, Q) *TFIDF(term,D)

마지막으로 TF-IDF보다 자주 쓰이는 BM25를 알아보자.
BM25는 TF-IDF의 개념을 바탕으로 문서의 길이까지 고려하여 점수를 매기는 방식이다. TF값에 한계를 지정해두어 일정한 범위를 유지하도록 하며 평균적인 문서의 길이 보다 더 작은 문서에서 단어가 매칭된 경우 그 문서에 대해 가중치를 부여하는 방식이다. 즉 길이가 작은 문서에 더 높은 가중치를 부여하는 방식을 취하고 있다.

Score(D,Q)=termQIDF(term)TF(trem,D)(k1+1)TF(term,D)+k1(1b+bDavgdl)Score(D,Q) = \sum_{term \in Q} IDF(term) * \frac{TF(trem,D) * (k_1 +1)}{TF(term,D)+k_1*(1-b+b*\frac{|D|}{avgdl})}

위 식의 k1k_1은 TF와만 계산이 되고 bb는 길이에 관한 값하고만 계산이 된다. 즉 k1k_1은 TF를 위한 가중치, bb는 문서 길이에 관한 가중치라고 할 수 있다. BM25를 채택하고 있는 database인 Elasticsearch에서는 k1k_1을 1.2 bb를 0.7을 default로 사용하고 있다.

profile
지식 공유

0개의 댓글