Boostcamp AI Tech 4기 6,7주차 회고록(11/4)

유상준·2022년 11월 7일
0

2주간의 RecSys트랙 기초대회가 끝났다. 부캠내의 첫 대회이며 처음으로 팀원들과 협업을 진행할 좋은 기회였다.
이번 대회에서 내가 배웠던 점과 아쉬웠던 점들에 대해서 정리해봤다.
(대회 과정 혹은 결과물들을 더 상세히 보려면, 아래의 노션 링크를 참고하시기 바랍니다.)
https://www.notion.so/RecSys-5270089dc19a48679986c7766da966b8


기초대회 종합 회고

  • 이번 프로젝트에서 나의 목표는 무엇이었는가?
    • 꽤 좋은 성능을 내기 (리더보드 3등이내) - X
    • pytorch template 적극 활용해보기 - O
    • 각 모델별 깊은 이해도를 통해 적극적으로 모델 튜닝 해보기 - X
    • Github 적극적으로 활용하기 (버전관리, 협업) - O
    • 서버-로컬간에서 원활하게 환경 구축하여 분석 해보기 - O
  • 나는 내 학습목표를 달성하기 위해 무엇을 어떻게 했는가? 가능한 빨리 Baseline 코드를 파악하려고 노력했고 하나의 project로 구성된 여러개의 클래스와 함수들의 역할과 연동과정에 대해 이해하려고 했다. 또한, 각 모델 별 기본 성능을 확인했으며, 모델에 알맞은 데이터를 찾아 넣기 위해서 데이터를 파악하려고 노력했다.
    특히 Github를 유기적으로 관리하면서 진행한 첫번째 프로젝트인 만큼, 얼마전에 들은 Github 특강을 활용하고 싶어서 최대한 많은 commit과 push, pull을 해보면서 종종 발생하는 사소하고 큰 문제들을 해결하고자 노력했고, 그 덕분에 전체적인 Github 이해도와 문제가 생겼을 때 어떻게 해결해야 하면 좋을지 배웠다.
    aistages에서 제공한 서버와 로컬 환경의 vscode를 연동하여 수월한 작업을 하려고 했다. 이 과정에서 SSH 원격 서버를 vscode에 연동하는 방법을 배웠다.
  • 나는 어떤 방식으로 모델을 개선했는가?
    1. 모델의 구조에 우리의 데이터를 맞춰서 생각해보기

      FFM 모델을 주로 사용했는데, fields가 다양하고 그 안에서의 범주도 다양하다는 것을 알고 있기 때문에 EMBED_DIM을 늘리는 방향으로 실험해갔고, 빠르게 최적 파라미터를 찾아나갔던 것 같다.

    2. 실시간 모니터링 하기

      wandb를 통해 validation rmse를 실시간으로 모니터링하며 학습곡선을 살펴봤고, 덕분에 빠른 시간안에 많은 실험을 할 수 있었던 것 같다.

    3. 앙상블 모델 활용하기

      다양한 계열의 모델들은 다양한 관점을 갖고 있을 것이고, 그렇기에 앙상블 기법을 활용한 모델들이 성능 개선에 도움될 것이라고 생각했다.

  • 내가 한 행동의 결과로 어떤 지점을 달성하고, 어떠한 깨달음을 얻었는가? 꽤 좋은 성능을 내는 결과물을 만들어 냈지만, 다른 팀들과 비교했을 때 처음 목표 했던 것 만큼 좋은 성능은 아니었다. 더욱 다양한 시도를 했어야 할 것 같고, 너무 성능 위주로 생각하기 보다는 원리를 이해하며 차근차근 나아갔다면 더 좋았을 것 같다는 생각을 했다.
  • 전과 비교해서, 내가 새롭게 시도한 변화는 무엇이고, 어떤 효과가 있었는가?
    1. Github 잘 활용하기
      협업이 두렵지 않다. 앞으로 버전관리를 하게 된다면 더 체계적으로 잘 할 수 있을 것 같다
    2. pytorch-template 공부하기
      주피터노트북(ipynb)을 애용했던 나에게는 조금은 어렵기도 했지만, 잘 짜여진 baseline 코드를 보며 공부를 하니 정말 도움이 많이 됐다. 물론 아직도 처음부터 그런 template 자체를 설계하라고 하면 꽤 많은 시간이 걸릴 것 같지만, 레고블럭의 조립순서를 알게 된 느낌이었다. 앞으로도 template으로 이루어진 project 형태를 사용하면서 더 익숙해지고 싶다.
    3. wandb 활용하기
      실시간 모니터링을 할 수 있다는 점이 좋았다. 학습간 비교도 수월했고, 그렇기 때문에 하이퍼파라미터를 튜닝하는 과정에서 도움이 많이 됐다. 시간 단축은 덤!
  • 마주한 한계는 무엇이며, 아쉬웠던 점은 무엇인가? 확실히 다양한 모델의 구조를 완벽하게 파악하고 시작 했다기 보다는 일단 불구덩이 속으로 뛰어든 감이 없지않아 있다. 그렇기 때문에 어떤 모델은 어떠한 이유로 좋은 성능을 낼 것이라고 기대할 수 있는지에 대한 근거가 부족했다. 모델에 대한 공부가 다른 처음 시도하는 것들에 밀려 차순위가 되어버린 느낌이 있어서 아쉬웠고, 마찬가지로 데이터에 대해서도 많은 비중을 두지 못해 아쉬웠다. 일정 수준에서 성능 개선이 멈췄는데, 이는 다양한 모델에 대한 이해도 부족과 데이터에 대한 깊은 탐구의 부족이 아닐까 싶었다.
  • 한계/교훈을 바탕으로 다음 프로젝트에서 스스로 새롭게 시도해볼 것은 무엇일까? 모델과 데이터에 대한 공부 시간 늘리기, 최대한 많은 작업에서의 자동화, 모델 설계단계에서도 데이터를 꾸준히 탐구하며 어떻게 하면 인사이트를 찾을 수 있을지 고민해보기, 다양한 아이디어를 내는 회의 시간을 갖도록 하기
  • 이번 프로젝트에서 나의 목표는 무엇이었는가?
    • 꽤 좋은 성능을 내기 (리더보드 3등이내) - X
    • pytorch template 적극 활용해보기 - O
    • 각 모델별 깊은 이해도를 통해 적극적으로 모델 튜닝 해보기 - X
    • Github 적극적으로 활용하기 (버전관리, 협업) - O
    • 서버-로컬간에서 원활하게 환경 구축하여 분석 해보기 - O
  • 나는 내 학습목표를 달성하기 위해 무엇을 어떻게 했는가? 가능한 빨리 Baseline 코드를 파악하려고 노력했고 하나의 project로 구성된 여러개의 클래스와 함수들의 역할과 연동과정에 대해 이해하려고 했다. 또한, 각 모델 별 기본 성능을 확인했으며, 모델에 알맞은 데이터를 찾아 넣기 위해서 데이터를 파악하려고 노력했다.
    특히 Github를 유기적으로 관리하면서 진행한 첫번째 프로젝트인 만큼, 얼마전에 들은 Github 특강을 활용하고 싶어서 최대한 많은 commit과 push, pull을 해보면서 종종 발생하는 사소하고 큰 문제들을 해결하고자 노력했고, 그 덕분에 전체적인 Github 이해도와 문제가 생겼을 때 어떻게 해결해야 하면 좋을지 배웠다.
    aistages에서 제공한 서버와 로컬 환경의 vscode를 연동하여 수월한 작업을 하려고 했다. 이 과정에서 SSH 원격 서버를 vscode에 연동하는 방법을 배웠다.
  • 나는 어떤 방식으로 모델을 개선했는가?
    1. 모델의 구조에 우리의 데이터를 맞춰서 생각해보기

      FFM 모델을 주로 사용했는데, fields가 다양하고 그 안에서의 범주도 다양하다는 것을 알고 있기 때문에 EMBED_DIM을 늘리는 방향으로 실험해갔고, 빠르게 최적 파라미터를 찾아나갔던 것 같다.

    2. 실시간 모니터링 하기

      wandb를 통해 validation rmse를 실시간으로 모니터링하며 학습곡선을 살펴봤고, 덕분에 빠른 시간안에 많은 실험을 할 수 있었던 것 같다.

    3. 앙상블 모델 활용하기

      다양한 계열의 모델들은 다양한 관점을 갖고 있을 것이고, 그렇기에 앙상블 기법을 활용한 모델들이 성능 개선에 도움될 것이라고 생각했다.

  • 내가 한 행동의 결과로 어떤 지점을 달성하고, 어떠한 깨달음을 얻었는가? 꽤 좋은 성능을 내는 결과물을 만들어 냈지만, 다른 팀들과 비교했을 때 처음 목표 했던 것 만큼 좋은 성능은 아니었다. 더욱 다양한 시도를 했어야 할 것 같고, 너무 성능 위주로 생각하기 보다는 원리를 이해하며 차근차근 나아갔다면 더 좋았을 것 같다는 생각을 했다.
  • 전과 비교해서, 내가 새롭게 시도한 변화는 무엇이고, 어떤 효과가 있었는가?
    1. Github 잘 활용하기
      협업이 두렵지 않다. 앞으로 버전관리를 하게 된다면 더 체계적으로 잘 할 수 있을 것 같다
    2. pytorch-template 공부하기
      주피터노트북(ipynb)을 애용했던 나에게는 조금은 어렵기도 했지만, 잘 짜여진 baseline 코드를 보며 공부를 하니 정말 도움이 많이 됐다. 물론 아직도 처음부터 그런 template 자체를 설계하라고 하면 꽤 많은 시간이 걸릴 것 같지만, 레고블럭의 조립순서를 알게 된 느낌이었다. 앞으로도 template으로 이루어진 project 형태를 사용하면서 더 익숙해지고 싶다.
    3. wandb 활용하기
      실시간 모니터링을 할 수 있다는 점이 좋았다. 학습간 비교도 수월했고, 그렇기 때문에 하이퍼파라미터를 튜닝하는 과정에서 도움이 많이 됐다. 시간 단축은 덤!
  • 마주한 한계는 무엇이며, 아쉬웠던 점은 무엇인가? 확실히 다양한 모델의 구조를 완벽하게 파악하고 시작 했다기 보다는 일단 불구덩이 속으로 뛰어든 감이 없지않아 있다. 그렇기 때문에 어떤 모델은 어떠한 이유로 좋은 성능을 낼 것이라고 기대할 수 있는지에 대한 근거가 부족했다. 모델에 대한 공부가 다른 처음 시도하는 것들에 밀려 차순위가 되어버린 느낌이 있어서 아쉬웠고, 마찬가지로 데이터에 대해서도 많은 비중을 두지 못해 아쉬웠다. 일정 수준에서 성능 개선이 멈췄는데, 이는 다양한 모델에 대한 이해도 부족과 데이터에 대한 깊은 탐구의 부족이 아닐까 싶었다.
  • 한계/교훈을 바탕으로 다음 프로젝트에서 스스로 새롭게 시도해볼 것은 무엇일까? 모델과 데이터에 대한 공부 시간 늘리기, 최대한 많은 작업에서의 자동화, 모델 설계단계에서도 데이터를 꾸준히 탐구하며 어떻게 하면 인사이트를 찾을 수 있을지 고민해보기, 다양한 아이디어를 내는 회의 시간을 갖도록 하기
profile
데이터 사이언티스트 지망생

0개의 댓글