국문과 유목민

[일일리포트] Day 29 (Level1_PStage_3) 본문

IT 견문록/2022_부스트캠프 AITech 3기(100일)

[일일리포트] Day 29 (Level1_PStage_3)

논곰 2022. 3. 1. 23:47
해당 일일리포트에서는 네이버 커넥트에서 진행하는 '부스트캠프 AI Tech 3기'에서 배운 내용을 다루고 있습니다. 저작권 이슈 때문에 관련 자료를 올릴 수는 없기에 핵심 이론과 코드를 요약해서 올리고 있기에 내용이 부족할 수 있습니다.

▶ Today I Learned (핵심 요약 정리)

AutoML

우선 어제 돌렸던 NNI를 이용한 AutoML은 완전히 말아버렸다...어제 새벽 2시까지 작업을 하다 잤는데 16번정도는 돌았어야 하는 모델이 겨우 3번 정도 밖에 안 돌았다. 이유를 확인해보니 GPU를 이용하지 않고 학습을 하고 있었던 것 같다. 그래도 왜 안 되는지는 알았으니 GPU세팅을 해서 다음번에 해봐야겠다고 생각이 들었다.

프로젝트

오늘은 쉬는 날이었지만 팀원들이 각자 부분부분 작업해왔던 baseline 코드를 하나로 합쳐서 공통된 코드로 작업하기로 했다. EarlyStop이나 f1-score tracking, DataSet Preprocess 등 git을 활용해서 하나로 합쳤는데 꽤나 마음에 든다. 뭔가 누군가와 협업으로 git을 활용했던 적은 있지만 이렇게까지 branch도 파고 의견도 공유해가면서 버전을 관리해 나가는 경험이 새로우면서도 기분이 좋다.

git final train code branch merge

오늘도 역시 모델링에 빠져서 허우적댔는데 어제까지 AutoML을 잡고 있다가 ResNet을 제대로 돌려보지도 못했다. 그래서 새로 받은 baseline 코드를 이용해서 ResNet을 돌려보고자 했는데 썩 성능이 좋지 않았다. 우선, Resnet200을 활용해서 모델링을 진행했는데 해당 모델의 경우 Pretrained된 파일을 받을 수 없다고 하더라... 아무튼 모델의 성능은 좋지 않았다. 그래서 Optimizer를 AdamW로 변경해서 돌려보니 성능이 이전보다 괜찮게 나오긴 했지만 역시 만족스럽지 못했다. 그 이후 동일한 조건에서 모델만 Resnet152를 사용해서 모델을 학습하니 이제야 전보다 훨씬 높은 score를 보여줬다.
하지만 두 모델 다 고질적으로 Epoch가 3, 4 정도만 되어도 overfitting이 되는 현상이 나타나서 일찌감치 EarlyStop 되어버리는 문제가 발생했다.

Resnet 테스트 결과

그러던 와중 인터넷을 검색하다가 lr을 더 낮게 주면 Overfitting이 나아진다는 글을 보게 됐다. '이거다'라는 생각과 함께 해당 글에서는 EfficientNet을 사용하고 있었으므로, 이전에 모델링했던 Efficientnet을 다시 사용하기로 했다. 해당 글을 참고해서 lr을 1e4보다 더 낮게 줬고, focal loss로 바꾸고 resize 크기도 키워서 학습을 진행했다. 이렇게 학습을 진행하니 처음부터 꽤나 준수한 loss와 accuracy를 보여줬다. 하지만 해당 모델도 얼마 안 가서 loss가 튀는 모습을 보여줬다. 코드를 살펴봤는데 팀원분 중 한 분께서 GradualWarmupScheduler라는 것을 넣어놓으셨다. 그래서 이번에는 scheduler를 CosineAnnealingLR로 변경해서 돌렸는데 조금 더 괜찮은 성능이 나오는 것을 확인할 수 있었다. 그리고 마지막으로 StepLR을 사용해서도 모델링을 진행했는데 마지막에는 확실히 괜찮은 성능을 보여줬다.

3시간 동안 모델링 테스트를 이것저것 하다가 제일 Score가 좋았던 StepLR을 사용한 EfficientNet모델을 제출했다. 하지만 결과는 좋지 못했는데, Output 결과를 EDA출력해본 결과 그래프의 분포가 너무 좋지 않았다. 너무 빨리 loss가 낮게 수렴하는 모델도 좋지 않은 모델이라는 것 같다. 그런데 오늘은 뭔가 새로운 실마리를 찾은 것 같아서 느낌이 나쁘지 않은 것 같다는 생각이 들었다.

보통은 0~4까지 분포가 많아야 좋은 모델인데, 이상하게 13을 잡고 있다

▶ Review (생각)

오늘 생각은 위에서 실험한 것들을 기준으로 조금 얘기를 해서 간단하게만 정리하도록 하겠다. 사실 오늘 학습을 하면서 도무지 감이 안 잡혔었는데 lr을 더 내리는 생각을 하게 된 순간 새로운 길이 열렸었다. 다만, 아직 익숙하지 않아 많은 실험을 해봐야할 것 같다. 추가적으로 Tensor Board도 꽤나 유용하게 쓰고 있지만, 팀원들과 실험 결과를 더 수월하게 공유하기 위해 wandb를 사용해봐야겠다.

오늘 하루 정리

주식이나...Accuracy나..

Comments