1. 개인적인 학습 목표
- Git을 통해 많은 인원들이 협업하는 프로젝트에서 효율적이고, 전략적으로 활용하는 것이 목표였습니다.
- 하이퍼 파라미터 셋팅에서 수동적으로 오래걸리는 Searching 과정을 효율적으로 줄이기 위한 방법을 강구하는 것이 목표였습니다.
2. 나는 내 학습목표 달성을 위해 무엇을 어떻게 했는가?
- 프로젝트 목표에 따라 다양한 방식으로 문제 접근을 하고 EDA, HPO을 바탕으로 최대 성능을 달성하기 위한 노력을 하였습니다.
- 가설 - 추론 - 검증 단계를 통해 프로젝트 목표 달성을 위한 전체적인 아이디어를 제안했습니다.
- 결과를 바탕으로 잘못된 가설을 분석하기 위해 다방면으로 생각하고 실험하였습니다.
- Git 협업에 익숙해지기 위해 구현하고자하는 내용을 제안하고 Branch를 통해 commit, push, merge 등 명령어에 익숙해졌습니다.
3. 나는 어떤 방식으로 모델을 개선했는가?
- Hyper Parameter Optimization (HPO)를 도입하여 모델 별 최적으로 파라미터와 최적의 Augmentation을 찾기 위한 시도를 하였습니다.
- 찾은 결과를 바탕으로 모델을 학습하고 모델 별 성능을 통해 사용할 최종 모델을 선정하였습니다.
- Optuna와 같은 하이퍼 파라미터 및 데이터 증강을 위한 코드를 작성하고 실험하였습니다.
4. 내가 한 행동의 결과로 어떤 지점을 달성하고, 어떤 깨달음을 얻었는가?
- 실험 상 Jupyter 환경이 익숙했지만, IDLE 환경에서 실험하면서 코드 모듈화 및 리팩토링의 중요성을 더 잘 알게 되었고, 이전보다 능숙하게 실험을 진행할 수 있게 되었습니다.
- 베이스코드 및 코드 트리를 미리 구성하고 그 구조에 맞게 코드를 작성하고 공유하는 과정이 유용하고 협업에 쉽고 깔끔하다는 것을 배우게 되었습니다.
- 데이터 불균형을 처리하는 과정의 중요성에 대해서 생각하였고, K-fold와 같은 데이터 분할 기법에 대해서 직접적으로 실험을 통해 중요성을 알게 되었습니다. 이 부분을 해결하기 위해 데이터셋 split 구성이나 데이터 증강과 같은 데이터 전처리 과정에서 많은 실험을 하였고, 대회 데이터에서도 예상하는대로 실험 결과가 잘 나오지 않는데, open world 데이터에서는 더욱이 중요할 것이라는 생각을 하였습니다. 또한, 잘못 레이블링 된 데이터를 제거하는 것이 학습 성능을 개선시키는데 도움이 될 것입니다.
- 많은 인원이 한 번에 같은 목표를 위해 협업하는 경험이 처음이었고, 각자 맡을 일을 분담하여 관리하는 것이 어려웠습니다. 하지만 팀원들 모두 적극적으로 아이디어를 내어 많은 시도를 해볼 수 있었고 그 안에서 개인 분담 역할, 목표 설정, 아이디어 제안 등 많은 내용을 배웠습니다.
5. 마주한 한계는 무엇이며, 아쉬웠던 점은 무엇인가?
- Git을 이용해서 협업을 제대로 해보았고, 코드 관리, 버전 관리는 필수적으로 중요한 사실을 더 깨닫고 자신이 구현하고자 하는 코드의 목표를 명확하게 설정하고 전달하는 것이 중요한 것이라고 생각했습니다. 그래도 아직까지 Git에서 제공하는 많은 기능들을 다양하게 사용해보지 못한 것 같습니다.
- 가설을 설정하는데 주관적인 판단보다 실험이나 논문의 내용을 토대로 팀원들을 설득하는 것이 중요할 것이라고 생각했습니다. 실험을 진행하는데 근거 부족으로 실험 결과에 대한 확신없이 검증하는 단계를 설정해서 예상과 다른 결과가 나왔습니다.
- Data Imbalance 문제를 해결하기 위한 여러가지 방법을 시도하였으나, Accuracy 및 F1 Score가 높게 나왔음에도 Testset에서 좋지 못한 성능을 보인 것이 아쉬웠습니다.
- 시간을 조금 더 효율적으로 활용하기 위해서 시간관리와 자원관리의 중요성을 배웠습니다. 여러가지 기법들을 적용해보았지만, 이 마저도 시간이 부족해 시도를 못한 부분도 있었다고 생각합니다.
6. 한계/교훈을 바탕으로 다음 프로젝트에서 시도해볼 것은 무엇인가?
- 프로젝트 시작 전 대회 요지, 목표, 시간 관리 등을 명확하게 설정해서 임해야 할 것입니다.
- 코드의 효율성을 위해 코드 작성 능력 및 분석 능력을 높여야겠습니다.
- 시간 낭비를 하는 무분별한 학습을 지양하고 해당 문제의 중요한 부분을 파악하고 전략적으로 접근해야할 것 같습니다.
- 팀원들 간의 역할을 명확히 하여 중복 코드 작성이나 실험으로 시간 및 자원 낭비를 피해야 할 것 같습니다.
'Naver Boostcamp AI Tech > Level 1' 카테고리의 다른 글
| < Boostcamp > AI Math 2 (0) | 2023.12.27 |
|---|---|
| < Boostcamp > Python 2 (0) | 2023.12.27 |
| < Boostcamp > Python 1 (0) | 2023.12.27 |
| < Boostcamp > AI Math 1 (0) | 2023.12.27 |
| < Boostcamp > Level 1 Image Classification (0) | 2023.12.15 |