coCondenser, cmu, arXiv22108.05540

요약 

  • 기존의 Condenser에 constrastive loss를 추가한 coCondenser를 제안한다. 
    • Condenser는 masked language model (MLM)을 loss로 이용한다. 
    • coCondenser는 MLM과 constrative loss를 함께 이용한다. 
  • Condenser와 coCondenser를 함께 이용한다. 
    • Condenser와 coCondenser의 네트워크 구조는 동일하고, loss 함수가 다르다. 
    • 2단계로 pretraining을 한다. 
      1. 일반적인 말뭉치에서 Condenser를 pretraining 한다. 
      2. pretrained Condenser를 dense retrieval 대상 말뭉치에서 coCondenser로 pretraining한다. 
  • Condenser는 cls가 더 많은 정보를 가지도록 하는 pretraining 방법이다. 
  • coCondenser는 의미적으로 유사한 텍스트간의 임베딩이 유사하도록 pretraining 한다. 
  • MS Marco passage retrieval에서 RocketQA보다 더 좋은 성능이 나온다. 
    • RocketQA는 여러가지 data engineering 기법을 사용하고, batch size를 크게 사용한다. (batch size = 4096 혹은 8192 인듯) 
    • coCondenser는 여러가지 data engineering 기법을 사용하지 않고, batch size도 RocketQA보다 훨씬 작다 (batch size = 64) 

Condenser 

  • 아래 그림이 Condenser 구조이다. early layers, late layers, head layers들로 구성된다. 
    • 12개 layer BERT를 이용하는 경우, early layers로 6개 layer를 이용하고, late layers로  다음 6개 layer를 이용할 수 있다. (논문에서는 이와 같이 구성했다.) 
    • head layers는 BERT 위에 추가로 올린 레이어이다. 학습 시에는 head layer를 이용하고, fine-tuning 시에는 head layer는 제거하고, early layers, late layers만 사용한다. 
  • early layers의 token embedding 들이 head layers의 입력으로 사용된다. 
  • late layers에서는 cls embedding만이 head layers의 입력으로 사용된다. 그래서 late layers의 cls embedding은 최대한 많은 정보를 담고 있어야 한다. 

coCondenser

  • 동일한 문서에서 추출한 두개의 텍스트는 의미적으로 유사할 것이고, 서로 다른 문서에서 추출한 두개의 텍스트는 의미적으로 서로 다를 것이라는 가정으로 학습한다. 
  • 문서에서 2개의 텍스트를 임의로 추출한다. n개의 문서가 있으면, 2n개의 텍스트를 추출한다. 
  • i번째 문서의 j 번째 텍스트 $s_{ij}$에 대한 constrative loss $L_{ij}^{co}$는 다음과 같다. 
    • $h_{ij}$는 i번째 문서의 j 번째 텍스트 $s_{ij}$의 임베딩이다. 문서에서 2개의 텍스트만 추출하므로, $ 1 \leq j \leq 2$ 이다. 
    • $h_{i1}$과 $h_{i2}$는 i번째 문서에서 나온 2개 텍스트의 임베딩이다. 
  • coCondenser의 loss는 다음과 같다. 
    • $L_{ij}^{mlm}$은 masked language model의 loss이다. 
    • $L_{ij}^{co}$은 constrative loss 이다. 

memory efficient pre-training 

  • gradient caching technique을 사용한다. 

fine-tuning 

  • pretraining 된 coCondenser에서 head layer를 제거하고 사용한다. 
  • 2단계로 fine-tuning한다. 
    1. bm25 negative를 이용해서 모델을 학습한다. 
    2. 1단계에서 학습된 모델을 이용해서 hard negative를 만들어서 학습한다. 
      • 1단계에서 사용한 학습 데이터에 hard negative를 추가해서 사용하는 듯. 
      • 실험 결과에서 hard negative를 만들어서 하는 것이 성능 향상에 기여함을 보임 

experiments - pretraining

  • 12-layer Bert를 이용한다. 
    • Condenser에서 Bert 위에 head layer를 추가로 올린다. 
    • 12개 layer 중에서 하위 6개는 early layer, 상위 6개는 late layer로 이용한다. 
  • Condenser는 BERT 학습 데이터로 학습한다. : English wikipedia와 BookCorpus 
  • coCondenser는 dense retrieval의 target corpus로 학습한다. 
    • pretrained Condenser를 이용한다. 
  • 4개의 RTX 2080 Ti GPU를 이용한다. 

experiments - dataset 

  • MS MARCO passage ranking : bing 검색의 질의 로그로 만든 것 
  • Natural Question (NQ) : google 검색의 질의 로그로 만든 것 
  • Trivia QA (TQA) : trivia 질의로 만든 것 

Analysis of Training Stages (Table 2 참조) 

  • hard negative를 사용하면 성능이 향상된다. 꽤 크게 성능 향상이 된다. 
  • Condenser보다 coDondenser의 성능이 더 좋다. 
  • coCondenser + hard negatives 의 경우 rocketQA보다 더 좋은 성능을 보인다.
    • hard negative를 이용하지 않으면, rocketQA보다 성능이 낮다. 



댓글

이 블로그의 인기 게시물

utf-8과 utf8