1. 프로젝트 Wrap UP
프로젝트 개요
두 문장이 의미적으로 얼마나 유사한지를 수치화한 태스크인
STS(Semantic Text Similarity) 문제를 해결하는 자연어처리 모델 개발 대회 진행
프로젝트 팀 구성 및 역할
이강혁 (팀장): 팀 Task 관리 및 목표 설정, 데이터 EDA 및 전처리 수행
안진명 (팀원): 모델 개발 및 텍스트 데이터 증강
강연철 (팀원): 모델 개발 및 하이퍼 파라미터 튜닝
박우빈 (팀원): 데이터 EDA 및 전처리 수행, 모델 앙상블 수행
송용우 (팀원): 모델 개발 및 결과 시각화 및 분석
프로젝트 수행 절차 및 방법
- 환경 설정
- 프로젝트 수행 전 사전 환경 설정 및 프로젝트 목표 수립
- EDA 및 전처리
- 대회에 주어진 train/dev data에 대하여 EDA 수행
- 수행한 EDA를 바탕으로 전처리 전략 수립
- 모델 개발 및 실험
- 모델의 성능을 올리기 위한 다양한 기법들에 대한 실험 수행
- 유의미한 성능을 보인 기법들에 대해서는 최종 제출 모델에 적용
- 최종 제출 및 회고
- 대회 최종 제출 및 프로젝트 수행 간 아쉬운 점과 개선할 점 토의
프로젝트 수행 결과
- 환경 설정
- 아래와 같이 팀 프로젝트 개발 환경을 설정함.
- pytorch lightning baseline 사용
- 빠른 모델 개발과 실험에 유용
- gradient accumulation, early stoppping과 같은 메서드들을 한줄로 간단하게 구현 가능
- github를 활용한 코드 협업 및 버전 관리
- git과 github를 활용하여 코드 버전 관리 및 협업을 수행
- 모델 개발 중 발생한 문제에 대해서는 github repository의 issue를 활용하여 공유
- wandb를 활용한 모델 학습 상태 시각화 및 공유
- EDA 및 전처리
- EDA를 통해 텍스트 데이터 셋에서 아래와 같은 내용들을 확인함
- EDA에서 도출된 결과를 바탕으로 텍스트 전처리 및 모델 학습 전략 수립
- EDA 결과
- 학습 데이터셋은 약 9000개의 train, 1000개의 test, 500개의 dev로 구성
- sentence1과 sentence2 그리고 0~5 사이의 실수로 유사도를 나타낸 라벨이 있음
- 이외에도 텍스트 데이터 출처(nsmc, slack, petition), id, binary label 값도 있음
- 데이터셋에서 NULL 값은 발견되지 않음 → 별도의 처리 필요 X
- 토큰 길이는 주로 0~40에 분포, BERT 최대 입력 토큰 길이인 512 토큰 제한에 영향을 주지 않음
- 라벨의 분포는 0에 가까운 라벨이 전체 데이터의 약 30%로 분포에 불균형이 있음
- 텍스트는 인터넷 커뮤니티를 기반으로 하는 데이터 출처의 특성상 구어체가 주를 이루었으며, 아래와 같은 텍스트도 있음
- <PERSON> 님과 티타임 커피타임을 가졌습니다
- 월욜 갭차이 어쩔.. ㅋㅋㅋ 잃고싶지않다..
- 진ㅉ ㅏ심장 너무 아파요…
- koelectra 기준 UNK 토큰을 포함한 문장 120개 발견
- 모델 개발 및 실험
- 모델 선정
- STS benchmark를 바탕으로 BERT 계열 모델이 해당 Task에서 강력한 성능을 보인다는 것을 확인
- 따라서 huggingface에 공개된 klue/roberta, monologg/koelectra 등의 BERT 계열의 한국어 PLM을 후보군으로 선정 후 실험
- 모델 개선
- 텍스트 클리닝 및 UNK 토큰 해결
- 인터넷 구어체에 자주 등장하는 표현 (ㅋㅋㅋㅋㅋ, ㅎㅎㅎ) 등의 텍스트 정제
- UNK 토큰 (옄, 얗) 등의 단어 사전 추가
- LR 스케줄러 적용
- Linear warm up learning scheduler 적용
- 텍스트 라벨 불균형 해결
- Back Translation을 활용한 데이터 증강, 이를 통해 라벨 불균형 해결
- 텍스트 출처별 모델 개발
- 데이터 출처별로 서로 라벨 분포가 다르며, 라벨 선정 기준에도 차이가 있다는 것을 확인함
- 따라서 데이터 출처별 전문 모델을 개발함 (Ex. RTT 샘플로만 학습시킨 RTT 예측 모델)
- 하이퍼파라미터 튜닝
- wandb sweep을 활용한 하이퍼 파라미터 (learning rate, batch size) 튜닝 시도
- 교차 검증
- KFold 적용하여 모델 강건성 확립 및 검증 점수 향상
- 앙상블 적용
- 각 모델들의 최종 출력 값들로 앙상블 수행
- 최종 제출
- 최종 public score 92.58, private score 92.70 달성