드디어 첫번째 딥러닝 프로젝트를 완료했다. 처음이라 시행착오도 많았고 프로젝트 기간인 2주가 생각보다 빨리 지나가서 시도해보지 못한 것이 남아 아쉬운 마음도 있지만, 그래도 진행하면서 Discussion 게시판을 통해 다른 캠퍼분들과 토의하고 Peer Session을 통해 함께 성장해나가는 경험은 모두가 대회를 성공적으로 진행하고 마무리하는데 큰 도움이 되지 않았나 하는 생각이 든다. 짧지만 내 인생의 첫번째 딥러닝 프로젝트가 되어준 P Stage 1 → Mask Classification Problem 에서 경험한 함께 성장했던 과정을 마무리하며 남겨보려고 한다. 이 기간 동안 느낀 점들과 경험한 것들이 앞으로 내가 다른 프로젝트를 진행함에 있어서 소중한 자원이 되어줄거라 믿어 의심치 않는다.

0. Project Description

1. First Project Summarize

<aside> 💡 What I learned in First Deep Learning Project

</aside>


  1. 모든 Task의 첫 시작은 EDA와 함께다. 딥러닝은 결국 데이터로 부터 시작하는 것이므로 내가 풀고자 하는 데이터가 어떤 형태이며, 어떤 특징을 가지는지에 대해 insight를 얻는 것은 중요하다. EDA를 바탕으로 얻은 insight가 실험의 시작이 되는 entry point가 되며, 가정을 바탕으로 실험이 어떤 결론에 도달했는지는를 Sheet에 기록하면서 진행하는 것이 Key Point다.

    여기에 더불어 각 Task별로 EDA를 할 때 바로 적용할 수 있는 나만의 EDA Kit을 만들어 두는 것도 좋을 것 같다. 효율성을 위해 자연어, Computer Vision 등 각 분야에 있어 기본적으로 해야할 EDA를 바로 진행할 수 있도록 Kit을 갖추는 작업이 필요하다.

  2. 풀고자 하는 Task가 요구하는 Input & Output의 특징과 형태를 분석해서 둘 사이를 어떤 방법으로 Model을 통해 연결할지 고민이 필요하다. 문제 설계를 어떻게 하느냐에 따라서 여러 관점이 존재할 수 있고 해당 관점이 데이터 처리 및 모델 설계를 할 때 어떤 부분에 중심을 둬야하는지에 대한 방향을 결정하기 때문에, 문제를 세분화 해서 바라볼 필요가 있다.

  3. (For Competition) 문제에 맞는 My Own Deep Learning Baseline를 최대한 빠르게 완성하고, First Submission을 통해 풀고자 하는 문제에 대한 감을 익히는 것이 중요하다. 성공적으로 첫 시도를 완료한 뒤, 천천히 가설과 검증을 통해서 실험의 방향성을 구체적으로 설계해나가는 것이 포인트다. 특히 다양한 Task에 적용할 수 있는, 결점이 없는 Baseline을 미리 구성해둬서 다른 Task를 진행하는데 있어서 활용할 필요가 있다.

  4. Validation Strategy평가 MetricGeneralization 성능 평가 및 검증의 핵심이기에 프로젝트를 하는동안 계속 생각해야 하는 부분이다. 특히 지금 하고 있는 Task에 맞춰서 어떤 Metric를 정하는 것이 적합한지 함께 고려해줘야할 부분이다. Validation 결과와 Test 결과가 다르다면 그 이유가 무엇인지 치열하게 고민해야 한다.

  5. 모든 Task에 대해서 항상 정답인 기법은 없다.(Data Augmentation, Optimizer, Backbone Model 등) Data를 통해 얻은 insight를 바탕으로 의미있는 가정을 세우고 Task에 대한 적합도를 생각하며 결국 다양한 실험을 통해 결론에 도달하는 것이 올바른 방법인 것 같다.

  6. Training을 돌리는 동안 다음 실험을 준비하는 코드를 작성하고, 그 마저도 끝나면 다른 작업을 하면서 생산성을 높이는 것도 중요한 부분이라는 것을 느낄 수 있었다.