NLP

[딥러닝 NLP] Passage retrieval

공돼 2022. 8. 14. 02:02

* KAIST 서민준교수님 강의자료의 QA 부분을 공부하고, 제가 이해한대로 적었습니다. https://seominjoon.github.io/kaist-ai605/

 

passage retrieval은 query 에 맞는 passage(문단, 문서)를 찾는 것 입니다.  MRC model과 합쳐서 open domain QA 를 풀 수 있습니다.

 

 

passage retrieval의 원리는 query와 passage들을 embedding 한 뒤 유사도를 측정하는 것 입니다. 즉 query와 passage의 의미를 잘 담도록 embedding 하는 것이 핵심입니다. 따라서 이 글에서는 주로 query와 passage embedding 에 대해서 설명합니다.

 

embedding은 입력 data를 vector로 변화하는 작업입니다. 이 때, 의미를 잘 담는 vector로 변환하여야 하는데 여기서 '의미를 잘 담는다'는 비슷한 의미를 갖는 data 끼리는 vector간 거리가 가깝게 embedding 되는 것이라고 할 수 있습니다 

 

passage (문장, 문단, 문서)를 embedding하는 방식은 크게 2가지로 나눌 수 있습니다

 

sparse embedding

bag-of-words(BoW)를 구성하고 BoW와 target passage의 등장 횟수 기반으로 embedding하는 방식입니다.

BoW는 n-gram 까지 BoW에 넣겠다라고 정하고, 주어진 모든 passage를 1~N gram 하여 BoW에 넣습니다. 4-gram 은 조합수가 너무 많아져서 보통 3-gram까지 사용합니다. BoW에 들어가게 되는 단어 조합 수 만큼이 vector size가 됩니다. 

이렇게 구성한 BoW에서 target passage에 있는 단어 조합이 얼마나 등장하는지 횟수를 세는 방법이기 때문에 단어 조합 overlap 을 토대로 passage를 찾아낼 수 있지만, 문맥에 대한 이해는 전혀 없으므로 유사어로 쓰여진 유사한 문맥 passage는 찾아내지 못합니다. 

sparse embedding을 사용한 passage retrieval 방법은 TF-IDF(term frequency - inverse document frequency) 가 있습니다.

TF는 target passage에 등장한 단어 조합의 횟수이고, IDF는 각 단어 조합이 다른 문서에 얼마나 자주 등장했는지에 대한 역수입니다.

TF-IDF는 두 값을 곱해서 사용하는데, 그 의미는 target passage에 많이 등장했고 전체 BoW에서는 자주 등장하지 않은 단어가 target passage를 대표한다고 보는 것 입니다. 그래서 'a', 'the'와 같이 모든 문장에 등장하는 단어는 IDF가 0에 가까워서 TF-IDF가 낮게나오고, target passage에만 많이 등장하는 단어들이 TF-IDF가 높게나오게 됩니다. 

 

* BM25 : 평균 passage 길이보다 더 짧은 passage에서 단어가 매칭되는 경우 그 문서에 가중치를 더 부여하는 방법으로 TF-IDF 보다 실제 사용했을 때 성능이 좋기 때문에 TF-IDF 방식의 매칭을 사용하는 경우에는 BM25를 주로 사용합니다. 

 

dense embedding

sparse embedding은 BoW가 커지면 vector size가 엄청나게 크게되고, 이에 따라 target passage를 vector로 표현하면 sparse vector가 됩니다. 또한 등장 횟수 기반으로 embedding 한 것이기 때문에 문맥을 파악하지 못해 유사어를 파악하지 못하고 동음이의어를 구분하지 못합니다.

이러한 문제를 보완하기 위해 dense embedding을 사용하며, BERT와 같은 사전학습 언어 모델이 문맥 파악에 뛰어나기 때문에 이를 활용하여 dense embedding을 학습합니다. 

위와 같이 query, passage embedding을 위한 BERT 2개를 사용하며, loss로는 negative log likelihood(NLL)을 사용합니다.

query에 연관된 top K passage와의 유사도가 높아지도록 학습하는 것에 추가로 어려운 negative sample을 뽑아서 negative sample들과는 유사도가 멀어지도록 학습하여 embedding이 헷갈리는 passage 들에 대해서도 잘 embedding 되도록 학습하는 방법입니다.