boostcampaitech2 / mrc-level2-nlp-04

mrc-level2-nlp-04 created by GitHub Classroom
4 stars 5 forks source link

Retrieval type(elastic, rerank, sequential) 성능 비교 #43

Open kimziont opened 2 years ago

kimziont commented 2 years ago

실험 목적

Retrieval하는 방법을 바꿔가며 성능을 비교해보자

실험 방법

retrieval_type을 dense, elastic, both(rerank입니다), sequential 로 바꿔가며 실험 진행 (이번 실험은 validation에 있는 240개의 query에 대해서만 성능 분석을 진행하였습니다)

실험 결과

우선 가장 성능이 좋을 것으로 기대되는 ElasticsearchSequential 두 가지 방법을 우선 실험하였습니다. 그리고 Sequential의 경우 Elasticsearch로부터 가져오는 passage의 수에 따라 성능이 달라질 것으로 예상되어 개수를 바꿔가며 실험을 진행하였습니다.
k_optimization

이 때 모델을 bert-base로 사용한 이유는 roberta 계열의 모델과 비교했을 때 성능이 더 좋았고, 또한 batch_size를 어느 정도 크게 가져가는 것이 성능 향상에 도움이 된다고 판단하였기 때문입니다.

Dense만 사용했을 때 Retrieval accuracy

dense_model

Sequential 적용했을 때 Retrieval accuracy

dpr_embedding_extraction

BERT-base의 batch_size가 12일 때 성능이 가장 좋다

실험 요약

Retrieval type Elastic Seq_from50 Seq_from60 Seq_from70 Seq_from100 Seq_from150 Seq_from200
k = 30 95.25% 95.83% 96.67% 96.67% 97.08% 96.25% 95.25%
k = 40 96.25% 96.67% 97.5% 96.67% 97.08% 97.08% 96.67%
sangmandu commented 2 years ago

고생하셨습니다 😁😁

제안드리는 부분은

  1. Elasticsearch에서 가져오는 passage 수에 따른 비교 결과
  2. Wiki 데이터로 확장했을 때의 결과
    • 실제 inference에서 진행하는 환경과 동일한 Wiki에서

가 있으면 좋겠습니다.!

kimziont commented 2 years ago

감사합니다 상민님ㅎㅎ

우선 말씀 주신 1번 같은 경우는 100, 300, 500개에 대해서 진행을 했습니다. sequential이 가장 성능이 좋아보이기 때문에 밑에 조금 더 추가해 놓도록 하겠습니다.

2번의 경우는 지금 위의 실험 결과가 이미 wiki corpus에서 retrieval하는 실험인데, 혹시 이 부분을 말씀하시는 게 맞나요?

sangjun-Leee commented 2 years ago

와 정말 성능이 기대가 되네요... 고생하셨어요! 아마 상민님께서 말씀하신 건 240개가 아닌 모든 wiki corpus에 대한 실험이 아닐까 싶습니다

raki-1203 commented 2 years ago

고생하셨어요!!

kimziont commented 2 years ago

여러분들 죄송합니다. 실험에 문제가 조금(조금 아님) 있었습니다. 지금은 희락님의 도움으로 문제는 해결이 되어, 실험 마치는 대로 수정하겠습니다.

sangmandu commented 2 years ago

상준님 말씀이 맞습니다 ㅎㅎ

sangmandu commented 2 years ago

고생하셨습니다. 제안드릴 부분은,

  1. wiki 데이터 확장 실험
  2. k = 30일 때 from30으로 하면 어떻게 될까요?
  3. retrieval 모델이 동일할 때는 elastic search의 결과가 동일하므로 이 내용을 저장하고 쉽게 불러올 수 있도록 하기 (성능적인 부분은 아니고 편의적인 부분입니다)
kimziont commented 2 years ago

제안 감사드립니다 상민님!

  1. wiki 데이터 확장이라는 말은 제가 지금 잘 이해가 안가서 오늘 피어세션 때 얘기 나눠보면 좋을 것 같습니다.
  2. from 30에서 이미 30개를 가져왔는데 그 중 k = 30으로 30개를 dense embedding 한다고 해도 순서만 바뀔 뿐 30개 안에 있는지 없는지에 대한 대답은 동일할 것으로 생각되어 elastic search와 성능이 동일할 것으로 생각되네요.
  3. 네 맞습니다. 그래서 top-k 수를 몇개로 할지 정하게 되면, 말씀 주신 부분을 코드로 작성해 보도록 하겠습니다