딥러닝 프로젝트 두번째 NLP에 대해 학습을 진행하고 문서 요약문에 대해 대회를 진행하였다. 딥러닝 하면 시각화가 잘 되는 CV를 많이 기대했지만 생각보다 많은 것을 할 수 있었던 컨텐츠가 아니었기 때문에 매우 아쉬웠다. 물론 NLP대회도 짧게 흘러갔기 때문에 아쉬운 부분은 많았다. 그렇지만 역시 Upstage는 NLP를 잘하는 기업임을 강의를 통해 실감하였다.
아무것도 몰랐던 나는 이번 강의를 통해서 'NLP란 이런것이다.'를 깨달을 수 있었다. 언어에 관련된 만큼 형태소 단위로 단어를 분해하는 것도 중요하였고 뒤늦게 알았지만 단어의 의미를 잘 살릴수록 각 모델이 학습을 더욱 잘한다는 것도 깨달았다. 아쉽게도 이번 대회에서 내가 담당할 수 있었던 역할이 적었기 때문에 이번 과정은 직접 한번 해보는 과정으로 생각하고 진행하였다.
이번 대회는 적게는 2명, 많게는 20명이서 진행한 대화문을 보고 요약문을 출력하는 경진대회를 진행하였다. 이번에도 부트캠프 내부에서 진행한 대회였기 때문에 규모가 크지 않았다. 평가 지표는 RODGE -1, 2, N 세개의 지표값의 평균을 최종 점수로 활용하였다.
팀구성 : 6인 1팀, 인당 3090ti서버를 VSCode와 SSH로 연결해서 사용
협업 환경 : Notion, Github
의사 소통 : Slack, Zoom, Discord
전체 목록
- 데이터 EDA(Exploratory Data Analysis)
- 데이터 Augmentation
- 모델 선정
- 파라미터 튜닝
팀 구성
배정 받은 팀은 기존팀 5인에서 1명이 늘었다. 이번 또한 각자 학습을 진행하고 할 수 있는 방법을 가져와서 진행하였다. 전체 목록에 있는 역할에 전부 참여하였지만 각자 파트별로 비중을 둔 선택을 진행하여 주된 역할을 담당하였다.
여기에서 나는 주로 데이터 Augmentation을 진행하는데 할애하였으며, 나의 적용 방법으로 데이터를 증강시켜 각 dialogue에 대해 좀 더 detail하게 학습할 수 있도록 유도하는 것이었다.
1주차 : 업스테이지 강의를 보면서 용어를 익히고 적어도 대화를 통해 어떤 이야기를 하는지 내용을 이해할 수 있을 정도로 수준을 올려오기
2주차 : 직접 tokenizer을 조정하여 변경해보기도 하고 모델도 hugging face를 통해 가져와서 적합해보기
3주차 : 최종적으로 자신이 원하는 모델을 구현하고 결과를 확인하면서 자신의 전략이 잘 이루어져 있는지 수시로 확인하기
Notion에서 우리 팀에서 진행한 내용을 확인할 수 있다.
- 대회의 마무리 시기에는 같이 모여서 마무리 할 것(offline meeting)
- 각자의 일을 하다가 어느정도 결과가 나오면 같이 보면서 상의할 것
- 코드를 작성하고 진행할때 꼭 주석처리 및 마크다운 언어로 작성해둘 것
- 각자의 아이디어 및 사전 조사 자료는 노션에 공유해둘 것
- 특별한 사정이 없는 한 회의할 때 빠지지 말기
- 혼자서 계속 진행하지 말고 중간중간 상황에 대해 알려주기
최종 전략
KoEDA 모듈을 활용하여 데이터의 EDA(EasyDataAugmentation)과 AEDA를 적용해보았고, 기본 모델인 KoBERT-summarization을 Baseline으로 제공받아 증강 데이터를 모델에 학습시켜 성능이 얼마나 오르는지 확인하였다.
또한 decoder의 max length를 확인하여 100 ~ 60까지 줄여보기도 하면서 파라미터를 조절하여 성능을 비교해봤다.
최종적으로 나만의 score이 제일 높았던 것은 데이터의 original + EDA(original) + AEDA(original)로 세배 증강시켜 적합했던 값이 약 41 score로 가장 높았다.
새로운 시도
- 대화문과 같은 비정형 텍스트 데이터에 대해 다뤄보았다.
- 사전학습된 모델 koBART에서 Mecab과 같은 가장 유명한 tokenizer을 활용하여 데이터를 증강시켜봤다.
좋은 변화
- tokenizer에 대해 깊게 알 수 있게 되는 계기가 되었다.
- NLP 모델에서 encoding, decoding에 대해 알게 되었다.
- 데이터 증강 방법에 대해 학습하고 직접 구현해 볼 수 있었다.
잘 되지 않은 것
- 팀원의 간극을 좁히지 못했다. (수준차이)
- 내용 이해에 대해 확실히 정립하고 가지 못했다.
- 모델의 파라미터 튜닝과 같은 기본적으로 할 수 있는 방법에 대해 하지 못했다.
아쉬운 점
- 대회 길이가 짧았기 때문에 어느정도 감을 잡았을 때 대회가 끝났다.
- 모델 구조에 대해 설명할 수 있을 정도로 학습하지 않았기 때문에 진행하면서도 이해가 되지 않은 부분이 많았다.
배운점 및 시사점
- 앞으로 NLP에 대해 추가 학습을 진행할때 주요 관점에 대해 찾을 수 있게 되었다.
- Hugging face를 통해 사전 학습된 모델을 사용할 수 있게 되었다.
벌써 두번째 프로젝트가 지나가버렸다. 너무 아쉬웠던 부분은 이번에 포함된 조원 모두가 NLP를 처음 접하기 때문에 전략을 잡기 너무 어려웠다. 또한 두서없이 중구난방으로 적용한 것도 있었기 때문에 큰 틀을 잡고 진행하기 좋아하는 나는 너무 허술했던 대회였다 생각이 든다.
Upstage에서 Solar mini와 같은 아주 좋은 모델을 개발해서 이것에 대해 학습하고 가면 아주 좋을것이라 생각했다. 하지만 이렇게 진행하다가는 아무것도 얻어가지 못할것이라는 생각을 하였고 최종 프로젝트만을 남겨두고 있는데 남은 2주동안 학습이 덜 된 부분을 채워 적어도 LLM 모델에 대해 100%까지는 아니더라도 80%는 이해하고 마무리 짓고 싶다.