일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 백트랙킹
- Level1
- 정렬
- 파이썬 3
- mrc
- 다이나믹프로그래밍
- 부스트캠프_AITech_3기
- Level2
- 주간회고
- 이진탐색
- ODQA
- 이코테
- dfs
- 부스트캠프_AITech3기
- 백준
- python3
- U_stage
- 알고리즘스터디
- 단계별문제풀이
- 개인회고
- 프로그래머스
- 구현
- Level2_PStage
- 그리디
- dp
- 알고리즘_스터디
- 최단경로
- 그래프이론
- 다시보기
- 기술면접
- Today
- Total
국문과 유목민
[일일 리포트] Day 27 (Level1_PStage_1) 본문
해당 일일리포트에서는 네이버 커넥트에서 진행하는 '부스트캠프 AI Tech 3기'에서 배운 내용을 다루고 있습니다. 저작권 이슈 때문에 관련 자료를 올릴 수는 없기에 핵심 이론과 코드를 요약해서 올리고 있기에 내용이 부족할 수 있습니다.
▶ Today I Learned (핵심 요약 정리)
구현해야 하는 Task
오늘부터 P-Stage를 제대로 해보고자 모델을 돌려보면서 아래의 Taske들을 할 필요가 있다는 생각이 들었다.
- 최적의 Model 찾기: 모델을 학습함에 있어서 현 Task에서 가장 잘 맞는 모델을 선정할 필요가 있음
- Data Augmentation 최적의 방법 찾기: Data 전처리 작업이 더 맞다고 할 수 있다. DataLoader에 올리기 전 Data의 Overfitting을 방지하기 위한 Image Transform 최적의 방법 찾기
- 새로운 데이터 추가 생성 방법: 데이터 Imbalance 문제를 해결하기 위해 Data Augmentation할 필요가 있음
- 데이터 Leakage 현상 해결: 현재 데이터셋이 가지는 문제점을 해결하기 위해 파일별로 이미지의 입력이 들어가도록 설정
- MLFlow 구현: 하이퍼 파라미터 튜닝을 효율적으로 하기 위해 MLFlow를 도입하면 좋을 것 같다.
pth, pt의 차이
파이토치를 구현하다보면, 모델을 저장할 때 어떤 코드에서는 'pth'로, 어떤 코드에서는 'pt'로 저장하는 것을 볼 수 있다. 그래서 두 형식의 차이점에 대해서 찾아봤는데 크게 정리된 부분을 찾을 수 없었던 것 같다. 보통은 pth를 더 많이 사용하는 것 같다.
해당 부분을 검색하며 TensorFlow에서는 '.ckpt'형식을 사용하고, Pytorch에서는 'pt'나 'pth'를 사용한다는 것을 찾았다. 딱히 pt와 pth를 구분짓지 않고 사용하는 것으로 보이고, 그냥 Tensorflow와 구분을 주려는 느낌인 것 같다.
EarlyStopping
모델을 돌리면서 Epcoch를 아무리 크게 줘도 어느정도 학습이 진행되다가 꽤 오랜 시간동안 개선이 되지 않는 경우가 많았다. 따라서 Overfitting을 방지하고, 실험의 효율을 위해 EarlyStopping을 구현했다. 다음 블로그를 통해 구현하는데 도움을 받았다. 우리의 Baseline코드의 경우 별도로 best accuracy의 모델을 저장하는 부분이 있기 때문에 해당 라이브러리에서 모델을 save하는 부분을 주석처리했다.
- 참고 링크1: https://quokkas.tistory.com/37
▶ Review (생각)
어제까지는 P-Stage를 위한 준비로 파트를 어느정도 나누고, 환경을 세팅하는 시간이었다면, 오늘은 본격적으로 Competition에 들어가는 시간이었다. 앞으로 해야할 Task들을 정리하고, 모델을 import해 와서 실험을 진행했다. 우선 Pretrained된 모델을 import해와서 모델을 만들어봤다.
우선 Efficientnet-b3을 활용해 HyperParemeter를 바꾸지 않고, 학습 후 제출했을 때 F1Score가 60정도로 나와서 우리의 Task에 맞게 하이퍼 파라미터 등을 찾아서 학습을 진행했다. 다음 모델로 Efficientnet-b2를 사용했는데, EfficientNet은 Size의 영향을 받는다는 부분을 봤었기 때문에 우리의 Task에 맞는 모델을 선정하고자 했다. 그리고 image의 size를 증가시키고 Optimizer나 Learning_rate도 바꾸고 꽤 많은 부분을 건드렸다. Train 시에는 높은 train/valid accuracy를 보여줬지만 실제 제출했을 때는 F1-Score가 훨씬 안 좋게 나오는 것을 확인했다. 하지만 너무 많은 부분을 한꺼번에 바꿔서 어디서 문제가 발생했는지 찾지 못했다...
앞으로 실험을 할 때는 한 번에 많은 것을 하려고 하지말고, 실험 결과가 Tracking될 수 있게 비슷한 부분끼리만 묶어서 학습을 진행해봐야겠다.
'IT 견문록 > 2022_부스트캠프 AITech 3기(100일)' 카테고리의 다른 글
[일일 리포트] Day 28 (Level1_PStage_2) (0) | 2022.02.28 |
---|---|
[6주차] 개인 회고 (0) | 2022.02.25 |
[일일 리포트] Day 26 (0) | 2022.02.24 |
[일일리포트] Day 25 (DL기초_Training&Inference) (0) | 2022.02.24 |
[일일리포트] Day 24 (DL기초_Model) (0) | 2022.02.22 |