in batch negative를 이용한 dense embedding encoder modeling

1. in batch negatives

 

두  encoder BERTpBERTq는 어떻게 training을 할까?

 

query와 연관된 passage인 ground truth passage와는 최대한 거리가 가깝도록 embedding을 함

 

nearest neighbor의 L2 distance를 좁힐 수 있지만 강의에서는 inner product를 최대화 시킴

 

(question,passage) pair dataset은 어디서 구하냐고? 기존 MRC dataset인 KorQuAD, SQuAD 등 활용

 

SQuAD를 활용한 pair dataset으로 dense encoder 학습

 

기존 MRC dataset을 활용하면 하나의 query에 대해 정답인 passage와 정답이 아닌 passage가 있다

 

전자인 정답 passage를 positive sample, 정답이 아닌 passage는 negative sample이라고 한다

 

in batch negatives란 (question,passage) pair dataset에서 주어진 question에 대응하는 정답 passage는 1개니까 당연히 가져와야하고

 

정답이 아닌 passage인 negative sample은 여러개니까 그 중에서 random sampling함

 

그러면 정답 passage와의 거리는 최대한 가깝게하고, 동시에 정답이 아닌 passage와의 거리는 최대한 멀게 학습을 진행함

 

within batch negative sampling의 원리

 

2. negative sample의 선택

 

1) 그냥 corpus내에서 random으로 아무거나 뽑음

 

2) 혹은 모델 입장에서 조금 더 헷갈리는 negative sample을 뽑음

 

예를 들어 높은 TF-IDF를 가지는 passage는 question의 답이 없더라도 모델 입장에서는 구별하기가 까다롭다

 

실제로 이렇게 헷갈리게 뽑으면 성능이 높아지는 경우가 많다고 알려짐

 

 

3. objective function

 

positive sample과 negative sample을 모두 활용한 negative log likelihood loss(NLL loss)사용

 

positive sample과의 거리는 최대한 가깝게 만들고(inner product score는 최대로 만들고)

 

그와 동시에 나머지 negative sample과의 거리는 최대한 멀게 만들고(inner product score를 최소로 만들고)

 

positive inner product score와 negative inner product score의 softmax function으로 이루어짐

 

dense encoder의 objective function

4. encoder의 성능을 측정하는 방법?

 

TOP-k accuracy score는 retrieve된 가장 점수가 높은 k개의 passage중 ground truth가 존재하면 1점을 부여하는 방식으로 정확성을 계산

 

MRC와 관련된 TOP-k retrieval score는 retrieve된 가장 점수가 높은 k개의 passage중 question의 정답을 실제로 포함하는 passage의 비율로 계산

 

extractive MRC의 경우는 실제로 지문 내에 정답이 있다면 굳이 ground truth가 아니여도 되긴 하니까 top-k retrieval score가 의미 있을 수 있어

 

 

5. inference

 

passage는 질문을 받기 전부터 corpus내의 모든 passage를 미리 embedding을 하여 저장해둠

 

query가 들어오면 query를 embedding하고 저장해둔 passage embedding들과의 유사도 점수를 전부 계산함

 

이중에서 유사도 점수가 가장 높은 passage를 가져옴

 

가져온 passage와 들어온 question을 MRC model에 넣어 만약 학습이 잘되었다면 정확하게 정답을 내놓을 것임

 

dense encoder의 inference 도식화

6. 학습방법을 개선하는 방법

 

MRC의 성능을 높여 정답을 정확히 내놓는거 물론 중요하지만 그만큼 중요한 것은 질문에 잘 맞는 지문을 잘 가져와야함

 

더 많은 데이터를 사용하거나 다른 전처리를 해보거나 데이터를 개선함

 

BERT보다 크고 최근에 나온 해당 task에 적합한 그러면서 더 정확한? pretrained language encoder를 사용

 

TAGS.

Comments