STS프로젝트 후기
개인 회고
- 나는 내 학습목표 달성을 위해 무엇을 어떻게 했는가?
먼저 베이스라인 코드를 이해하기 위해 내 입맛에 맞게 수정해보면서 여러 시도들을 해보았다. 그 과정에서 tensorboard, wandb, pytorch lightning의 사용법을 알게 되었다. 프로젝트를 진행하는 데 있어서 전반적인 과정의 느낌을 아는 것이 중요하다고 생각해서 처음엔 모델을 돌려보고 결과가 나오면, 결과를 제출해보고 이런 식의 과정을 반복해봤다. 이렇게 익숙해지고 난 후에는 데이터와 모델에서 수정하고 싶은 부분을 수정하고 다시 결과를 검증해보는 사이클을 진행하였다.
- 나는 어떤 방식으로 모델을 개선했는가?
주어진 데이터에서는 source가 명시되었는데 source 별로 각각의 특징이 있을 것 같다는 전제하에 input으로 들어가는 데이터에 special token을 추가해서 해당 문장들이 어떤 source를 가지고 있는지 정보를 넣어주었다.
- 내가 한 행동의 결과로 어떤 지점을 달성하고, 어떤 깨달음을 얻었는가?
처음에 모델을 돌려보고 결과를 제출했을 때는 무작정하는 느낌이 있었지만, 멘토님의 피드백을 받고 모델과 데이터를 뜯어보면서 그 과정에서 이전에는 몰랐던 정보들을 알 수 있었다. 예를 들어, kakaobank/kf-deberta-base 모델의 경우 모델이 사전학습되던 때 문장단위 분할, HTML 태그 및 잘못된 문자 제거, 출처 정보 제거, 비한글 문장 제거, 숫자 비중 높은 문장 제거, 짧은 문장 제거(10 음절 이하) 등 전처리를 수행했는데, 만약 이러한 전처리를 거쳤다면 내가 이 모델을 사용하여 예측을 진행할 때 같은 전처리를 한다면 더욱 성능이 올라갈 것이라는 것을 알 수 있다. 이전에는 모델의 평균적인 지표만을 가지고 이 모델을 쓸지 안쓸지 판단했다면 이제는 모델의 평균적인 성능이 나쁘더라도 우리의 과제과 적합하다면 충분히 가져와서 쓸 수 있다는 것을 알게 되었다.
- 전과 비교하여 새롭게 시도한 변화는 무엇이고, 어떤 효과가 있었는가?
nlp 프로젝트가 처음이라 나에겐 모든 시도가 새로운 시도였다. 데이터를 전처리하고 증강하기, 모델 수정하기, 하이퍼파라미터 바꾸면서 성능체크하기, 결과를 보고 가설을 검증하기 등등. 이 모든 시도들이 다음 프로젝트 때 사용될 밑거름이 되었다.
- 마주한 한계는 무엇이며, 아쉬웠던 점은 무엇인가?
시행착오를 통해 Todo보다는 Not Todo를 더 많이 알게 된 것 같다.
- 무작정 많은 데이터와 좋은 모델을 쓴다고 성능이 좋아지지 않는다는 점.
- 언제나 분석할 수 있는 더 깊은 층위가 존재한다는 점
- 전체적인 데이터의 경향을 보는 것도 중요하지만 실제 데이터를 보고 가설을 세우고 검증하는 것이 중요하다는 점.
- 깃 commit은 꾸준히 해야한다.
- 로그를 기록할 때와 만들어진 파일들의 체계를 세워야한다.
- 성능을 개선시키기 위해선 직관적으로 이해할 수 있을 만큼의 구체적인 설명이 필요하다.
- 한계/교훈을 바탕으로 다음 프로젝트에서 시도해볼 것은 무엇인가?
- 구체적인 가설로 데이터 전처리, 증강, 모델 선택을 할 것.
- 깃 활용하기
- 로그와 파일이 만들어질 때 체계 세우기
- 에러를 꼬박꼬박 기록해두기
- 모델 출력 결과 적극적으로 공유하기
댓글남기기