난독화된 한글 리뷰 복원 및 생성 AI 경진대회

알고리즘 | 월간 데이콘 | NLP | 생성형 AI | LLM | F1 Score

  • moneyIcon 상금 : 데이스쿨 프로 구독권
  • 2025.01.06 ~ 2025.02.28 09:59 + Google Calendar
  • 727명 마감

 

[PRIVATE 6위] Token Free + ByT5-base

2025.03.04 23:46 891 조회 language

모두 대회에 참여하신다고 고생 많으셨습니다. 
제 코드 설명을 하자면
결론적으로 저는 ByT5라는 모델을 사용했습니다. 

1. 모델을 선택한 이유
2. 아쉬웠던 부분
을 간략하게 설명드리고 총총 물러나겠습니다.

1. ByT5 모델을 선택한 이유 
- 최적의 교정 모델을 찾아보자
자원 내에서 파인튜닝이 가능한 좀 더 가벼운 모델을 찾아봤고 T5라는 Text to Text로 기계 번역을 포함한 다양한 NLP테스크를 해결하는 모델을 찾았습니다. 
이 중에 mT5라는 T5를 다국어로 훈련한 모델에 "입력 값에 들어가는 문장을 Tokenization을 하는게 아닌, Byte로 인코딩해서 넣어주는" 아이디어를 결합한 ByT5라는 모델을 찾아 사용했습니다.
예를 들어 
"녀뮨넒뭅" 이라는 문장이 있으면 [238, 136, 131..]으로 Byte로 인코딩 되어 입력 값으로 들어갑니다.
ByT5는 해당 구조로 아래와 같은 특징을 갖습니다.
1. 문장 내 글자들의 구조가 변하지 않음(공백도 글자에 포함)
2. 자모 단위 변형이나 철자 오류에 좋은 복원 능력 갖춤
3. 비교적 긴 스팬 마스킹으로 문맥 복원 능력 갖춤
이런 특징이 이번 대회의 평가지표와 취지에 적합하다고 생각해 고집 있게 사용했습니다.

2. 아쉬웠던 점
- Byte화로 길어지는 데이터
첫번째로 입력 데이터 자체로 긴 데이터도 많았는데, Byte단위로 생성하게 되므로 더 길어지는 현상이  있었습니다.
비교적 가벼운 모델을 선택했는데 데이터가 많아져 오히려 이 부분이 상쇄되는 단점이 있었습니다.
그래서 max_length의 크기를 줄여 부담을 줄이고자 Chunk단위로 문장을 잘라 모델에 넣어주고 해독한 결과를 이어 붙이는 방법론을 적용했습니다.
하지만 Chunk로 자르면 문맥이 잘리는 문제가 발생하고 ByT5의 문맥 복원 특징을 깎아먹는 아쉬움이 있었습니다.

간단 글과 코드 읽어주셔서 감사합니다.
https://github.com/AIKONG2024/ByT5-base_Unreadable_korean

코드