Optimizing Dense Retrieval Model Training with Hard Negatives, 칭화대, sigir 2021
Jingtao Zhan et al., Optimizing Dense Retrieval Model Training with Hard Negatives, sigir 2021
- 칭화대 논문
- Jiafeng Guo도 공동 저자로 있음.
요약
- Dense Retrieval (DR)에서 hard negative를 샘플링하는 방법에 관한 논문
- STAR와 ADORE라는 2가지 방법을 제안함
- STAR (Stable Training Algorithm for dense Retrieval): BM25 negative와 random negative를 함께 사용하는 방법
- ADORE (a query-side training Algorithm for Directly Optimizing Ranking pErformance)
- STAR로 첫번째 모델을 학습함.
- 이 모델로 문서 인퍼런스를 수행함.
- 문서 모델을 이것으로 고정하고, 문서 인퍼런스를 더 이상 업데이트 하지 않음.
- 문서 인퍼런스 결과를 faiss로 색인해둠
- 질의 인퍼런스를 위한 초기 모델로 사용함
- faiss 이용해서 질의에 대한 hard negative를 검색하고, 이 hard negative를 질의 인퍼런스 모델 업데이트에 사용함
- 이 과정을 반복함.
- 기존 negative 샘플링 방법의 문제점
- random negative sampling
- 소량의 질의의 loss가 크고, 나머지는 작음.
- 그래서 학습시에 loss가 큰 소량의 질의에 의해서 파라미터가 업데이트되는 문제가 있음.
- static hard negative
- 학습이 진행되면서 hard negative가 더이상 hard negative가 되지 않음.
- 그래서 easy negative가 될 수 있고, 이렇게 되면 positive 문서가 easy negative보다 점수가 높지만, unseen negative 문서들보다는 점수가 낮은 이상한 경우가 발생할 수 있음. (논문에서는 loss가 0이 되게 학습되더라도, MRR 값이 엄청 낮아질 수 있음을 얘기함)
- 이를 해결하기 위해서는 dynamic hard negative sampling이 필요하다는 것이 논문에서 제안하는 바임.
random negative sampling
- random negative sampling을 위한 2가지 방법
- 무작위로 문서를 추출해서 positive 문서가 아니면 negative로 사용하는 방법
- in-batch negative: batch에서 다른 질의의 positive / negative 문서를 negative로 사용하는 방법
- random negative sampling의 문제점
- loss가 골고루 분포되지 않는다. 무작위 추출한 것이어서 당연.
- 소량의 질의의 loss는 크고 나머지는 작은 경향을 보임.
- loss가 큰 소량의 질의가 학습에 많은 영향을 주는 문제점이 있음
static hard negative sampling
- 다음 2가지 방법을 static hard negative sampling의 예로 논문에서 언급하고 있다.
- BM25를 이용해서 negative sampling하는 방법
- ANCE를 이용해서 negative sampling 하는 방법
- ANCE는 학습하면서 주기적으로 negative sampling 을 하지만, negative sampling을 자주하지 않아서 static hard negative sampling로 분류함
dynamic hard negative sampling
- 학습에서 모델 업데이트마다 negative sampling을 새로 하는 방법
- 본 논문에서는 dynamic hard negative sampling이 가능한 방법을 제안한다.
STAR (Stable Training Algoithm for dense Retrieval)
- BM25를 이용해서 static hard negative를 생성하고, in-batch negative로 random negative를 생성해서 함께 이용하는 방법
- static hard negative와 random negative를 함께 이용한 loss 함수:
$$ L(\theta) = \alpha L_r(\theta) + L_s(\theta) \; ( 0 \lt \alpha \ll 1) $$
- $L_r$은 random negative sample에 대한 loss
- $L_s$는 static hard negative sample에 대한 loss
- 질의 $q$, positive 문서 $d^+$, negative 문서 $d^-$가 주어졌을 때 loss 함수: RankNet loss 사용
$$L(q, d^+, d^-) = \log (1 + e^{f(q, d^-) - f(q, d^+)}) $$
- $f(q, d)$는 질의 $q$와 문서 $d$ 간의 유사도 점수
ADORE (a query-side training Algorithm for Directly Optimizing Ranking pErformance)
- dynamic hard negative와 LambdaLoss를 이용하는 방법
- ADORE는 이미 학습된 모델을 가져와서, 이를 추가적으로 학습하는 방식임
- 이미 학습된 모델로 문서 인퍼런스를 생성하고, faiss로 색인해둠 (문서 인퍼런스는 더 이상 수행하지 않음)
- 학습시에는 질의 인퍼런스 모델을 업데이트함
- dynamic hard negative sampling
- 질의 인퍼런스 모델로 만든 질의 임베딩으로 faiss에서 hard negative 문서를 찾음
- 검색된 상위 문서 중에서, positive가 아닌 문서를 negative 문서로 사용함
- LambdaLoss 이용
- faiss로 검색하기 때문에 검색된 문서들을 점수로 나열할 수 있음.
- 나열된 문서들에 대해서 LambdaLoss를 적용함
- 아래 수식을 이용하면 LambdaLoss 계산이 가능함 (학습데이터가 충분히 크다면)
$$L(q, d^+, d^-) = \Delta M \log (1 + e^{f(q, d^-) - f(q, d^+)}) $$
- $\Delta M$은 검색 결과에서 $d^+$와 $d^-$의 순위를 바꾸었을 때의 IR metric의 변화량을 의미한다. 논문에서는 문단 검색에서는 MRR@200, 문서 검색에서는 MRR@10을 IR metric으로 사용한다.
STAR + ADORE
- STAR로 문서 모델, 질의 모델을 먼저 만든다. (문서 모델과 질의 모델이 같은지 다른지는 확실치 않음)
- STAR의 문서 모델은 고정하고, ADORE를 이용해서 질의 모델을 업데이트한다.
실험 Datasets
- TREC 2019 Deep Learning Track dataset 사용
- 문단 검색 dataset
- 880만개의 문단
- 약 503,000개의 학습 질의, 약 7천개의 dev 질의, 43개의 테스트 질의
- 문서 검색 dataset
- 320만개의 문서
- 약 367,000개의 학습 질의, 약 5천개의 dev 질의, 43개의 테스트 질의
Implementation Details
- Roberta base 모델을 이용하고, [CLS] 토큰의 임베딩을 이용함
- 문단은 120 토큰, 문서는 512개 토큰으로 표현
- top-200 문서를 hard negative로 사용함
- top-200에서 일부만 negative로 사용하는지, 아니면 모두 다 negative로 사용하는지는 확실치 않음
실험 결과
- Figure 3:
- random negative sampling의 경우, 소수의 질의의 loss가 엄청 큰 부분을 차지한다.
- 0.2%의 어려운 질의가 total pairwise error의 60%를 차지함
- Table 1:
- 모델별 total error와 top-k error를 보여준다.
- dynamic hard negative sampling이 top-k error가 낮다.
- Figure 4:
- static hard negative sampling: 5k training step 마다 negative sampling
- dynamic hard negative sampling: 모델 업데이트마다 negative sampling
- static hard negative sampling과 dynamic hard negative sampling을 어떻게 했는지는 확실치 않음. ANCE를 이용한 것인지, ADORE를 이용한 것인지. 추측으로는 ADORE일 듯
- figure 4a:
- 학습을 진행할수록 dynamic hard negative와 static hard negative간의 겹치는 비율이 줄어듬
- figure 4b:
- static hard negative sampling은 random negative sampling보다 안정적이지 못함
- static hard negative samplging은 학습이 진행되면서 MRR 값이 뚝 떨어지기도 하고, 다시 올라가기도 함
- Figure 5:
- ADORE를 이용하면 모든 모델의 품질이 향상됨
- LambdaLoss를 이용하면 역시 품질이 향상됨.
- 다만 STAR + ADORE에서는 품질 향상 폭이 다른 모델들 (예: in-batch negative)보다 작음
- Figure 6:
- ADORE로 학습하면, 질의가 관련 문서와 유사한 공간으로 이동하는 것을 확인할 수 있음.
- Table 4:
- 학습 시간에서 STAR + ADORE가 ANCE보다 18배 더 빠름.
댓글