KLUE 회고

DONGJIN IM·2022년 4월 14일
0

KLUE Competition

목록 보기
4/4
post-thumbnail

목적

한 문장에서 2개의 Entity가 주어진다.
이 2개의 Entity 사이 관계를 구하는 것이 이번 대회의 목표였다.

결과

리더보드

GitHub 링크

시도했던 것에 대한 결과

Model 및 Trainer 변경

  • Model 변경
    • Model의 Classifier를 변경시켜보고 싶어서 Classifier를 내가 원하는 대로 변형시켜보았다.
    • Model 변경에 매우 많은 힘을 쏟았지만, 에러만 뜨고, 가끔 수행되도 성능이 0 ~ 10을 벗어나지 못했다.
  • Trainer 변경
    • Trainer를 내가 원하는 방식으로 변경시키고 싶었다.
    • 특히 Loss Function 및 Optimizer, Scheduler가 변경이 안되서 매우 고생하였다.
    • 결국, 주말에 코드를 직접 다 까봐서 겨우 적용은 시켰지만, 효과가 그렇게 뛰어나진 않았다.

[CLS] 토큰이 아닌 다른 Token의 활용

  • Loss자체는 높았으나, Accuracy가 오르는 경향성이 매우 좋다고 생각하여 제출하였지만, 점수는 조금 떨어졌었다. 하지만, 가능성이 있다고 생각하여 Multi 방식을 추가하기로 하였다.

  • Multi 방식을 적용하였을 때 Loss자체도 더 낮아졌고, Accuracy 및 f1-score도 더 높아졌다.

  • 지금까지 짠 코드에서 처음으로 내 힘만으로 Leader Board의 점수를 올렸던 기념적인 실험이였다.

Classifier Layer의 변경

모델의 Input Data 형식 변경


이번 대회에서 잘했던 점

  • 저번 Image Classification 대회와는 다르게 내가 무언가를 했다고 자랑스럽게 말할 만한 점수를 내어 매우 좋았던 것 같다.
  • Huggingface를 활용하면서 코드를 하나씩 읽어보며 활용하는 메서드 자체를 이해하려고 노력한 점이 좋았던 것 같다.
  • 논문을 조금 많이 읽어봤던 것 같다. 논문을 직접 활용해보니 논문을 어떻게 읽어야하고, 왜 읽어야 하는지 알았던 것 같다. 특히 Papers with Code를 자주 살펴봐야겠다는 생각이 든 대회였다.
  • GitHub를 활용은 못했지만, 총대를 메고 코드를 합치면서 어떻게 활용해야할지 감이 온 것 같다. 다음 GitHub 활용법에 대해 토론할 때 어떻게 해야할지 조금 더 확실하고 정확하게 말할 수 있을 것 같다.

이번 대회에서 아쉬웠던 점

  • 중간에 번아웃이 온건지 뭔지는 모르겠지만, 성능이 오르지 않아 아무것도 하기 싫어졌을 때가 왔다. 그 때 아예 여행을 가든 푹 쉬었어야 됐는데 괜히 조금이라도 뭐 해보겠다고 설치다가 오히려 시간만 날리고 집중도 더 못했던 것 같다.
    • 데이터 증폭을 담당한 팀원은 성적 향상이 없었어도 끝까지 자신의 방법을 밀고나갔다. 그 점을 배워야 할 것 같다. 점수가 나오지 않더라도 실망하고 좌절하는게 아니라 어떤 부분 때문에 점수가 나오지 않았을지 생각하고, 그 부분을 수정하는 식으로 했다면 더욱 효율적이였을 것 같다.
    • 쉬자! 차라리 무언가가 안 풀릴 때는 괜히 잡고 있는 것 보다는 하루 아무 생각 없이 푹 쉬고 다음 날 맨 정신으로 하는게 훨씬 도움이 되는 것 같았다.
    • 실패는 성공의 어머니지만, 실패도 잘 해야 한다. 실패 내용까지 모두 블로그에 적고, 실패 이유와 수정 방법을 고민해보자.
  • Hugginface 코드를 처음부터 읽었다면 괜찮았을텐데, 그게 귀찮았었다.(왜냐면 웹 개발 할 때는 코딩 구현 내용 안 읽었어도 잘만 구현했었거든.....ㅠㅠㅠ) 이 생각을 빨리 고쳤으면 좋았을 것 같다. Error가 발생하거나 점수가 이상하게 나온 대부분의 실험들은 코드만 제대로 읽었다면 바로 해결되는 문제였었다.
    • Papers with Code나 남이 구현한 코드를 잘 읽고, 특정 메서드를 활용할 때도 원시 코드를 다 읽어보자. 그 코드를 이해해야지만 코드를 활용할 수 있는 것이다.
    • AI는 확실히 고난이도 기술인 것 같다. 1부터 이해하지 못하면 활용할 수 없다. 모델 공부도 처음부터 자세히 했으면 코드 공부도 처음부터 자세히 하자
  • 협업을 잘 못한 것 같다. 이 부분이 사실 끝나고 보니 매우 아쉽다. 서로 코드를 잘 공유할 수 있었으면 더 점수가 좋아지지 않았을까? 하는 생각이 든다.
    • GitHub : 먼저 Baseline 코드에 대한 큰 틀을 잡고 각자 코드를 구현해야 할 것 같다. 처음부터 각자 코드를 짜버리니 2주차에 합치는 것이 매우 힘들었던 것 같다. 분명히 똑같이 코드를 합쳤는데 점수는 똑같이 나오지 않으니 답답하고, Merge나 Pull 받을 때 충돌이 나니 그냥 모두 효율을 위해 자신의 코드만을 바라보고 수정했던 것 같다. 특히 Hyperparameter만 바꾼 것도 Pull을 받으면 충돌이 나버리니, 더욱 협업이 잘 진행될 만한 상황이 아니였던 것 같다.
    • 칸반보드 : GitHub는 팀원 모두의 생각 미스였다고 쳐도, 칸반보드는 그냥 나만의 잘못이다. 나만 활용을 잘 못했다. 1주차에 계속 에러가 나고 점수가 안나오니까 뭔가 공유하기 부끄럽기도 하고 짜증도 나서 습관을 안 들였다. 이후에 점수가 좀 나왔더라도 습관이 안 들어 있어 작업 공유를 안했다. 내가 처음부터 습관을 들였다면, 실패 기록도 이유와 마찬가지로 공유했다면 칸반보드도 더 잘 활용할 수 있지 않았을까 싶다.

다음 대회에서 수행할 내용

  • 쉴 땐 쉬고 할 땐 하자
    • 진짜 쉬는 것의 중요성을 이만큼 느낀 적이 없었다. 한 번 쉬고 나니 머리에서 아이디어가 퐁퐁 쏟아지고, 다시 코딩이 잘 되는 것을 보니 쉬는 것도 실력이라는 느낌이 들었다
    • 계속 쉬라는 말이 아니다. 그냥 어딘가 벽에 막혔을 때는 한강에 가서 강 보면서 커피좀 마시고, 책 읽으면서 코드에 관련된 생각을 아예 안 하는 시간이 필요할 것 같다는 말이다.
  • 하루하루 자기가 수행한 내용을 적자
    • 앞으로 Velog에 Competition마다 시리즈를 만들어 매일의 기록을 적자
    • 이종혁 멘토님 블로그에서 큰 영감을 받았다. 특히 아래 사이트!
    • 특별히 적을 내용은 아래와 같다
      • 오늘 해야 할 것 List
      • 오늘 했던 것 List + 수행했던 이유
      • 했던 것에 대한 결과 + 왜 그런 결과가 나왔을까에 대한 생각
      • 아쉬운 점 + 좋았던 점 : 무조건 1개씩은 적기
      • 내일 할 내용 정리
    • 발생한 에러적는 것이 신박했고, 반대로 매우 중요한 점이라고 생각한다. 실패에서 배운다고 하지만, 어디에서 실패했는지 아는 것이 중요하지 않을까? 지금까지는 에러 나면 화나서 샷건 치면서 구글링하기 바빴는데, 에러 내용을 벨로그에 적고 해결 방법까지 적는다면 다음에 그 에러를 덜 발생시키고, 만약 발생시키더라도 내 사이트에서 해결 방법을 알 수 있다는 것이 좋은 것 같다.
    • 이틀 적어봤는데, 성능 확실하다. 다음부터 잘 활용해보자
  • GitHub 등 협업 툴을 잘 활용하자!
    • 협업을 못했던 게 이번 대회에서 정말 아쉽다.
    • GitHub : 처음에 config.json 등의 파일로 값을 Setting할 수 있게 바꿔 놔야 될 것 같다. 최소한 Hyperparameter로 충돌이 나는 어처구니 없는 경우는 줄일 수 있을 것이다.
      또한 실험 내용을 저장하여 공유하기도 편할 것 같다.
      그리고 main.py를 통해 train을 수행시키는 흐름을 관장하는 파일이 있는 것이 확실히 좋은 것 같다(내가 만들었으니 다음에도 내가 만들어봐야겠다)
    • 칸반 보드 : 습관을 들이자! 실패도 결국 실험이다. 실패 내용이더라도 공유해서 다른 사람이 저런 시도는 하지 말아야겠다(실패를 두 번 할 필요는 없지!)는 것을 공유할 수 있게 협업 툴을 잘 활용해야겠다
    • 이번에 느꼈지만 협업 툴은 잘못 활용하면 그냥 활용 안하는게 나을 정도로 귀찮아진다. 할 거면, 잘 하자
  • 코드를 보자!
    • AI가 진짜 고차원 기술인 것 같다. 코드 이해가 안되면, 성능 향상도 절대 안된다.
    • 어떤 기술을 활용하고 싶다면 그 기술에 대한 코드나 기법에 대해 완벽히 숙지한 뒤 활용하자.

느낀점

정말 느낀게 많은 대회였다. 사실 저번 Image Classification은 pytorch나 python 코드 활용하기 급급해서 성적 올리는 것에 대해 신경 쓸 상황이 아니였는데, 이번에는 점수 올리기 위해 많은 시도를 해보았고, 실제로 점수가 많이 올라서 진짜 기뻤던 것 같다.
내 코드가 실제로 활용되었다! 라는 거 만으로도 큰 기쁨을 느낀 대회였다.

또한 배운 것도 많았다. 끈기의 중요성을 배웠고, 회고의 중요성, 기록의 중요성, 협업 할 때 미리 틀을 짜는 것에 대한 중요성, 코드 및 논문의 중요성, 휴식의 중요성 등 정말 너무나도 많은 것을 배웠던 대회였던 것 같다. 다시 말하지만, 내가 했던 모든 활동 중에 가장 배운 것이 많았던 대회였다.

그리고 팀원들한테도 감사하다. 사실 이번 대회 1주차 때 실험이 잘 안돼서 정신도 못 차리고 정신 빼 놓고 있었던 것 같은데 다들 열심히 하고 모범적이게 참여해주셔서 나도 중간에 정신차리고 다시 집중할 수 있었던 것 같다. 정말... 팀원 잘 만났다.
우리 팀 사랑해 ㅎㅎ

아쉬운 건 아쉬운거고 기뻐할 건 기뻐하자! 우리 팀 1등이다!
앞으로도 이렇게만 잘 해서 끝까지 웃으면저 지내길!

profile
개념부터 확실히!

0개의 댓글