본문 바로가기
네이버 부스트캠프 AI Tech 7기/후기 & 회고

[네이버 부스트캠프 AI Tech 7기] Level2 MRC - ODQA 프로젝트 2주차 회고

by YS_LEE 2024. 10. 18.
반응형

네이버 부스트캠프 AI Tech 9주차

프로젝트

지난 주차에 이어 MRC(Machine Reading Comprehension) ODQA(Open-domain Question Answering) 프로젝트를 진행하고 있다. 강의는 빠르게 지난 주에 마무리하고 이번 주는 계속 프로젝트 작업 중이다.

진행했던 작업:

  • 베이스라인 간소화
  • Elasticsearch Retriever 구현
  • 베이스라인 고도화 및 리펙토링
    진행했던 실험:
  • 모델 비교 실험
  • 데이터 클리닝 실험
  • train/val 데이터셋 재분할 실험

베이스라인 간소화, 고도화, 리펙토링

이번 프로젝트에서 가장 주요하게 팀에 기여하는 부분이라고 생각한다.

Elasticsearch Retriever 구현

Elasticsearch에 플러그인으로 설치할 수 있는 noritokenizer를 사용하여 context를 검색하는 리트리버를 구현했다. 구현된 내용을 바탕으로 팀원들이 사용하고 실험할 수 있도록 GPU 서버에 설치할 수 있는 설치 스크립트또한 함께 작성하였다.

모델 비교 - 실험을 위한 작은 모델 선택 과정

  • bert
  • roberta
  • koelectra

각 베이스 모델을 구현한 여러 모델들을 비교하고, 파라미터 크기별로 비교를 진행했다.

epoch1로 성능 평가를 진행하였고, 1epoch로는 판단하기 어려웠던 일부 모델은 epoch를 키웠을 때 train_loss가 얼마나 잘 떨어지는지 등도 함께 체크했다. 성능이 잘 나오면서 가벼운 모델인 klue/roberta-small을 작은 실험을 구상하기 위한 기준모델로 설정하였고, 다른 실험(데이터,파라미터 등)을 평가하기로 결정했다.

데이터 클리닝 실험

정량적인 데이터 분석 뿐만 아니라 정성적인 데이터 분석또한 중요하다는 말을 많이 들어서 데이터셋을 직접 눈으로 까보면서 분석을 진행했다.
라벨이 정확한지, 질문이 적절한지, 답이 정확한지 또는 index가 올바른지 등을 확인하였고, 확인한 500개의 데이터 중에서 일부 3~4개 정도 오류가 있어서 수정하거나 삭제했고, 10개 정도는 답 형식을 수정했다. (년도가 정답일 때 1999 같이 숫자로만 답할지 1999년 과 같이 답할지 등과 같은 답안 형식에 대한 내용)

대회 제공 데이터의 퀄리티가 생각보다 잘 정제된 데이터라고 생각이 들었다. 잘 알려진 외부 데이터를 사용하는 것 만큼 데이터 증강도 의미가 있을 것라는 약간의 가능성을 가질 수 있었다.

train/val 데이터셋 재분할 실험

미리 분할된 validation 데이터가 test 데이터를 잘 표현하는가에 대한 검증이 필요하다고 생각했다. 그래서 동일한 비율로 시드를 3개 정도 설정하여 원본을 포함한 총 4가지 경우의 수를 만들었다. 실험을 진행하던 중 seed 1 dataset + seed2 datset 이렇게 전이학습을 진행했을 때 성능도 함께 올라갔기 때문에 k-fold 방식을 적용하면 validation 데이터도 학습하여 성능이 오르면서, 여러 데이터로 검증하기 때문에 평가 점수를 더 신뢰할 수 있을 것이라고 생각하여 해당 실험을 이어하기로 결정했다.

느낀점

프로젝트를 진행하면서 많은 것들을 배우고 있다. 마스터님과 조교님과 멘토님에게서, 다른 팀에서, 우리 팀 팀원들에서, 나 스스로에서도 배우고 있다. 이번 프로젝트는 지난 프로젝트보다 더 성공적일 것이고, 또 이번 프로젝트가 끝나고 다음 프로젝트가 진행될 때는 더 많은 것을 복기한 상태로 출발하게 될 테니 점점 성장할 내 모습이 기대된다.

네이버 부스트캠프 AI Tech 10주차 (TODO)

  • Retriever 튜닝
  • K-fold 실험 및 구현
반응형

댓글