PStage MRC 4-5강 - Passage Retrieval - Sparse Embedding, Dense Embedding
Introduction to Passage Retrieval
Passage Retrieval
Passage Retrieval은 질문에 맞는 문서를 찾는 것을 의미한다. 데이터베이스에 따라서 형태가 달라질 수는 있지만, 일반적으로 웹 상에 존재하는 모든 문서를 대상으로 한다. 예를들어 토트넘이라는 쿼리에 대해서 토트넘의 역사, 우승기록, 손흥민 등에 대한 문서를 가져오는 시스템을 의미한다.
Passage Retrieval with MRC
Passage Retrieval을 MRC와 연결지어 생각했을 때, Open-domain Question Answering이 가능해진다. Passage Retrieval과 MRC를 이어서 2-Stage로 만들어버리는 것을 의미하는데, 쿼리가 들어왔을 때 데이터베이스에서 적절한 문서를 가져온 후, MRC 모델을 통해 가져온 문서에서 답을 찾는 프로세스이다.
이 때 중요한 것은 정답이 있을 만한 문서를 적절하게 찾아서 가져오는 과정이며, Query와 Passage를 미리 임베딩한 뒤 유사도로 랭킹을 매겨놓고, 유사도가 가장 높은 Passage를 선택한다.
Passage Embedding and Sparse Embedding
Passage Embedding Space
Passage Embedding의 벡터 공간을 의미하며, 벡터화된 Passage를 이용하여 Passage 간 유사도도 계산할 수 있다.
Sparse Embedding
0이 아닌 숫자가 상당히 적게 분포되어 있는 벡터를 Sparse Vector라고 하는데, 보통 원핫임베딩의 경우 Vector의 차원이 굉장히 커지게 된다. 따라서 Sparse한 Embedding을 구성하는 것이 유리한데, 그 방법으로는
- BoW(Bag of Words)를 구성 -> n-gram (하지만 n이 커질수록 제곱으로 vocab 크기가 커진다는 단점이 있음.)
- unigram: it, was, the, best, of, times
- bigram: it was, was the, the best, best of, of times
- Term Value를 결정하는 방법
- Term이 document에 등장하는지 (binary)
- Term이 몇 번 등장하는지 (term frequency) 등 (TF-IDF)
즉 vocab의 크기에 따라서 Embedding 차원이 결정되는데, 등장하는 단어가 많을수록, n-gram에서 n이 커질수록 차원이 커지게 된다.
이러한 BoW 방법론은 Term overlap을 정확하게 잡아내야 할 때 굉장히 유용하지만, 의미(semantic)가 비슷한데 다른 단어인 경우에는 아예 비교가 불가능하다
TF-IDF
TF-IDF란?
Term Frequency - Inverse Document Frequency 란 단어의 등장빈도 뿐만 아니라 단어가 제공하는 정보의 양을 곱하여 계산하며, 어떤 지문에선 자주 등장하지만 통합 문서에서는 많이 등장하지 않았으면 그 지문에서 많이 등장한 단어들에 점수를 더 주게 된다.
Term Frequency (TF)
해당 문서 내 단어의 등장 빈도를 의미한다. TF를 계산하는 것은 매우 간단한데, 특정 단어가 해당 문서에 몇 번 등장하는지를 계산하게 된다. 이후에 Normalize를 한 이후 비율로 변환하여 사용하게 된다.
Inverse Document Frequency (IDF)
단어가 제공하는 정보의 양으로, 특정 Term이 등장한 Document 개수를 총 Document 개수로 나눈 이후에 log를 씌워서 계산한다.
Combine TF & IDF
TF와 IDF를 곱하여 최종 점수를 계산하며, ‘a’나 ‘the’ 같은 매우 자주 나오는 관사들은 TF는 높지만 IDF가 0에 가깝기 때문에 매우 낮은 점수를 기록할 것이며, 자주 등장하지 않는 고유명사 들에는 IDF가 커지면서 전체적인 TF-IDF 값이 증가할 것이다.
TF-IDF를 이용해 유사도 구하기
TF-IDF에서는 cosine 유사도를 사용하며, 결국엔 cosine distance로 볼 수 있다.
BM25
TF-IDF보다 많이 쓰이는 BoW와 유사한 sparse embedding으로, TF-IDF에서 문서의 길이까지 고려하여 점수를 매긴다. 검색엔진이나 추천 시스템에서 굉장히 많이 사용되는 방법론이다.
Introduction to Dense Embedding
Passage Embedding
Passage Embedding은 구절(passage)을 벡터로 변환한 것으로, TF-IDF와 같은 Sparse Embedding의 경우에는 벡터의 크기는 매우 크지만 실제로 0이 아닌 숫자가 상당히 적게 존재한다. 또한 이러한 BoW 방법론 같은 경우에는 특정 단어가 있어야 0이 아닌 값이 생기기 때문에 실제로 대부분의 값들이 0으로 존재한다.
Limitations of sparse embedding
Sparse Embedding의 차원이 큰 것은 compressed format으로 해결할 순 있지만… 가장 큰 단점은 유사성을 고려하지 못한다는 것이다.
Dense Embedding
Sparse Embedding의 한계를 해결하기 위해 Dense Embedding이 등장하고 최근에는 훨씬 많이 사용되고 있다. Sparse embedding에 비해 더 작은 차원의 고밀도 벡터로 이루어져있고, 대부분의 요소가 0이 아닌 값들을 가지게 된다. 또한 각 차원이 특정 Term에 대응되지 않는다는 특징이 있다.
Retrieval: Sparse vs. Dense
Sparse Embedding은 단어의 존재 유무를 알아맞추기 상당히 유용하지만 의미를 해석하기가 어렵고, 따라서 Dense 처럼 의미가 같더라도 다른 단어로 표현된 것을 탐지할 수 있는 임베딩을 사용하게 된다.
하지만 중요한 Term들이 정확히 일치해야 하는 경우에 Sparse 임베딩의 성능이 확실히 뛰어나기 때문에 Sparse 혼자만으로는 할 수 있는 것이 적기 때문에 Sparse와 Dense를 동시에 사용하거나, Dense만으로 구성하는 경우가 많아졌다.
Training Dense Encoder
BERT와 같은 Pre-trained Language Model(PLM)이면 Dense Encoder가 될 수 있으며, 그 외 다양한 Neural Net 구조도 가능하다. Passage를 Embedding 하게 될 때는 CLS 토큰의 output을 사용하게 된다. 이후엔 Question Encoder와 Passage Encoder 에서 각각 나온 Dense Embedding을 dot product 함으로써 유사도를 구하게 된다. 학습 시에는 두 인코더를 Fine Tuning하게 된다.
Dense Encoder 학습 목표와 학습 데이터
학습목표: 연관된 Question과 Passage Dense Embedding 간의 거리를 좁히는 것 (내적값을 높이는 것)으로 higher한 similarity를 찾는 것을 목표로 한다.
Challenge: 그렇다면, 연관된 Question과 Passage를 어떻게 찾을 것인가? 이것은 기존 MRC 데이터셋을 활용하여 해결할 수 있다.
-> 연관된 Question과 Passage 간의 dense embedding 거리를 좁히며 (positive), 연관되지 않은 것들에 대해서는 거리를 멀게 하는 방식으로 학습을 진행한다. (negative)
Negative Sampling
- Corpus 내에서 랜덤하게 뽑으며, 좀 더 헷갈리는 negative 샘플들 (TF-IDF 스코어는 높지만, 답을 포함하지 않는 것들)을 뽑아낸다.
Objective function
- Positive passage에 대한 Negative Log Likelihood Loss를 사용한다.
성능을 측정하는 방법으로는 Tok-k retrieval accuracy: retrieve 된 passage 중에 답을 포함하는 passage 비율로 측정한다.
Passage Retrieval with Dense Encoder
From dense encoding to retrieval
Passage와 Query를 각각 임베딩한 후, 쿼리로부터 가까운 순서대로 Pasage의 순서를 매긴다.
From retrieval to odqa
Retriever를 통해 찾아낸 Passage를 활용하여, MRC 모델로 답을 찾는다.
Dense Encoding을 개선하는 방법
- 학습방법 개선 (DPR)
- 인코더 모델 개선 (BERT보다 크고 정확한 Pretrained 모델)
- 데이터 개선 (더 많은 데이터와 전처리 등)
PStage MRC 4-5강 - Passage Retrieval - Sparse Embedding, Dense Embedding
https://l-yohai.github.io/PStage-MRC-4-5-Passage-Retrieval-Sparse-Embedding-Dense-Embedding/