구름 교육에서 ELECTRA model을 이용한 긍/부정 class 분류 project를 시행했다.
BERT 파생 model을 이용해본 첫 project라 code도 깔끔하지 않고 생각대로 잘 안 되었지만, 그래도 많은 것을 얻어갔고 발전해보는 정말 의미 있는 시간이었다.
각 component에 따른 결과 값을 정리해보았고, 자세한 code는 깃허브 참조 바람.
프로젝트 개요
프로젝트 개요
팀 구성 및 역할
프로젝트 진행 프로세스
7/13 - BERT base를 활용한 전체적인 model process 파악
7/14~7/15 – ELECTRA를 활용하여 Learning rate, Batch size 등을 수정하며 model 성능 개선
7/16~7/17 – Scheduler, Weight decay 등을 활용하여 overfitting을 극복
Batch size – Base batch size인 32를 시작으로 64, 128, 256의 batch size 적용
Learning rate – Base learning rate인 5e-5를 시작으로 1e-7, 1e-6, 1e-5, 1e-4, 1e-3의 learning rate 적용
Scheduler – Linear scheduler와 Cosine Annealing scheduler 적용
Weight decay – 0 (No weight decay), 1e-4, 1e-5의 weight decay 적용
Batch size
| Train Batch size | Val Batch size | Time | GPU Resource |
| 32 | 64 | 57:46 | 20% |
| 64 | 128 | 46:13 | 40% |
| 128 | 256 | 43:33 | 60% |
| 256 | 512 | 40:37 | 90~100% |
| 512 | 102 | Out-Of-Memory | |
원래는 Batch size가 크면 train 성능이 떨어지지만, AdamW optimizer 사용으로 극복
따라서, Train Batch size=256, Val Batch size=512로 GPU 허용량 내 최대 Batch size 사용

Batch size가 클수록 loss가 더 낮아지는 것을 확인. But, Overfitting 문제 존재
Scheduler
· Linear scheduler
· Cosine Annealing LR scheduler

Train 속도 향상과 성능 개선을 위해 Linear scheduler 사용
Why use Linear scheduler?
→ model의 saddle point를 빠르게 벗어날 수 있다는 장점
→ But, Base model이 원래 안정적인 loss 감소 형태를 보였기 때문에 이러한 Cosine scheduler의 이점을 살리지 못하고 있다고 판단
∴ Linear scheduler를 사용하여 안정적인 Learning rate의 scheduler 과정 수행하기로 결론
Learning rate
· 5e-5
(Baseline Learning rate)
· 1e-4
· 1e-5
· 1e-6
· 1e-7


LR=1e-7일시, 전형적인 low learning rate 형태
5e-5와 1e-4가 가장 좋은 성능을 보였고, 그 중 5e-5(Baseline)가 더 안정적인 loss 변화를 보여줌
1e-4 vs. 5e-5 (Baseline Learning rate)

Lr=5e-5일 때, 더 안정적인 learning rate 변화를 보여주고, 1e-4일 때보다 overshotting 될 확률이 적다고 판단
하지만, 여전히 약간의 Overfitting 중이기 때문에 Weight decay를 적용 시켜야겠다는 결론 도출
Weight decay
· Weight decay = 1e-5
· Weight decay = 1e-4
· Weight decay = 0 (No weight decay)

Weight decay를 적용시켰기 때문에 Train loss는 약간 늘었지만, Val loss가 줄어들면서 어느 정도 overfitting 해소
Weight decay를 계속 늘려도 overfitting이 진행되어 최종적으로 weight decay=1.5로 선정
Final model select
Final model
(Batch size=256, Learning rate=5e-5, Weight_decay=1.5, Linear scheduler)

Conclusion
Next step
느낀 점
GitHub - JeongDongYoung/goorm_project_1
Contribute to JeongDongYoung/goorm_project_1 development by creating an account on GitHub.
github.com
'Project' 카테고리의 다른 글
| 프로젝트 최종 발표 PPT (0) | 2022.08.23 |
|---|