RocketQAv2, baidu, emnlp2021
RocketQA의 개선 버전인 RocketQAv2 제안
- dynamic listwise distillation
- retriever와 re-ranker를 동시에 학습하는 방법
- retriever는 dual encoder로 구성
- re-ranker는 cross encoder로 구성
- retriever는 re-ranker를 teacher로 distillation 함. dynamic distillation을 사용함
- hybrid data augmentation
- labeled positives, undenoised negatives, denoised negatives, denoised positives를 함께 사용함
dynamic listwise distillation
- retriever는 re-ranker를 teacher로 distillation 함. dynamic distillation을 사용함
- retriever가 부여하는 문단 점수가 re-ranker가 부여하는 문단 점수와 유사하게 되게끔 retriever를 학습함
- retriever가 각 문단에 부여하는 점수를 softmax를 취해서 확률값으로 표현함
- 질의 $q$와 문단 $p$간의 softmax 유사도 $s_{de}'(q, p)$. $de$는 dual encoder를 의미함
- $s_{de}(q, p)$는 질의 $q$와 문단 $p$간의 유사도
- $P_q$는 $q$의 positive, negative 문단들의 집합
$$s_{de}'(q, p) = \frac{e^{s_{de}(q, p)}}{\sum_{p' \in P_q} e^{s_{de}(q, p')}} $$
- re-ranker가 각 문단에 부여하는 점수도 softmax를 취해서 확률값으로 표현함
- 질의 $q$와 문단 $p$간의 softmax 유사도 $s_{ce}'(q, p)$. $ce$는 cross encoder를 의미함
- $s_{ce}(q, p)$는 질의 $q$와 문단 $p$간의 유사도
- $P_q$는 $q$의 positive, negative 문단들의 집합
$$s_{ce}'(q, p) = \frac{e^{s_{ce}(q, p)}}{\sum_{p' \in P_q} e^{s_{ce}(q, p')}} $$
- KL-divergence를 loss로 이용해서 retriever 문단의 확률값들과 re-ranker 문단의 확률값들이 유사하도록 함
$$L_{KL} = \sum_{q \in Q, p \in P_q} s_{de}'(q, p) \log \frac{s_{de}'(q, p)}{s_{ce}'(q, p)} $$
- re-ranker는 학습 데이터의 label을 참조해서 학습함
- loss는 다음과 같음. $N$는 training instances 수
$$L_{sup} = - \frac{1}{N} \sum_{q \in Q, p+} \log \frac{e^{s_{ce}(q, p^+)}}{e^{s_{ce}(q, p^+)} + \sum_{p^-} e^{s_{ce}(q, p^-)}}$$
- 전체 loss는 다음과 같음.
- 이 loss를 어떻게 사용하는지?
$$L_{final} = L_{KL} + L_{sup}$$
hybrid data augmentation
- labeled positive, undenoised hard negative, denoised hard negative, denoised positive를 함께 학습에 사용함
- 그림2에 hybrid data augmentation을 위한 방법이 설명되어 있음
- undenoised hard negatives
- rocketQA의 retriever를 이용해서 문단 검색함.
- 이 retriever는 rocketQA의 1단계 dual encoder 모델임
- 검색된 문단 중에서 랜덤으로 문단을 선택해서 negative로 사용함.
- denoised hard negatives 와 denoised positives
- rocketQA의 retriever를 이용해서 문단 검색함. (retriever는 rocketQA의 1단계 모델임)
- rocketQA의 re-ranker를 이용해서 denoised hard negatives와 denoised positives를 선정함
- rocketQA의 re-ranker는 rocketQA의 2단계 cross encoder 모델임
implementation details
- retriever는 rocketQA의 1단계 모델인 dual encoder로 초기화함
- re-ranker는 rocketQA의 2단계 모델인 cross encoder로 초기화함
- batch size 96으로 3 epoch 학습함
- positive와 negative의 비율을 MS MARCO는 1:127, Natural questions (NQ)에서는 1:31로 함
실험 결과
- table 3: re-ranker를 이용한 문단 검색 결과
- re-ranker는 rocketQAv2의 re-ranker를 이용하고, retriever로 rocketQA retriever를 사용한 경우와 rocketQAv2 retriever를 사용한 경우의 품질 차이가 크지 않음
- rocketQA와 rocketQAv2의 retriever 품질 차이가 별로 없거나, 혹은 retriever의 품질이 re-ranker에 큰 영향을 안 줄 수도 있음.
- table 4:
- dynamic distillation 대신 static distillation을 사용하면 품질 하락 있음.
- listwise 대신 pointwise 사용하면 품질 하락 있음
- denoised instance를 사용하지 않으면, 품질 하락 있음
- in-batch negatives 추가 사용
- in-batch negatives를 더 추가하더라도 품질 향상은 없었음.
기타
- dynamic listwise distillation이 좋은 결과를 보인 듯
- undenoised hard negative를 제거했을 때의 실험 결과도 있으면 좋을 듯.
댓글