1. 프로젝트 Wrap UP

프로젝트 개요

두 문장이 의미적으로 얼마나 유사한지를 수치화한 태스크인 STS(Semantic Text Similarity) 문제를 해결하는 자연어처리 모델 개발 대회 진행

프로젝트 팀 구성 및 역할

이강혁 (팀장): 팀 Task 관리 및 목표 설정, 데이터 EDA 및 전처리 수행

안진명 (팀원): 모델 개발 및 텍스트 데이터 증강

강연철 (팀원): 모델 개발 및 하이퍼 파라미터 튜닝

박우빈 (팀원): 데이터 EDA 및 전처리 수행, 모델 앙상블 수행

송용우 (팀원): 모델 개발 및 결과 시각화 및 분석

프로젝트 수행 절차 및 방법

  1. 환경 설정
    1. 프로젝트 수행 전 사전 환경 설정 및 프로젝트 목표 수립
  2. EDA 및 전처리
    1. 대회에 주어진 train/dev data에 대하여 EDA 수행
    2. 수행한 EDA를 바탕으로 전처리 전략 수립
  3. 모델 개발 및 실험
    1. 모델의 성능을 올리기 위한 다양한 기법들에 대한 실험 수행
    2. 유의미한 성능을 보인 기법들에 대해서는 최종 제출 모델에 적용
  4. 최종 제출 및 회고
    1. 대회 최종 제출 및 프로젝트 수행 간 아쉬운 점과 개선할 점 토의

프로젝트 수행 결과

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