본문 바로가기

Project

ELECTRA model을 이용한 이진 class 분류 project

구름 교육에서 ELECTRA model을 이용한 긍/부정 class 분류 project를 시행했다.

 

BERT 파생 model을 이용해본 첫 project라 code도 깔끔하지 않고 생각대로 잘 안 되었지만, 그래도 많은 것을 얻어갔고 발전해보는 정말 의미 있는 시간이었다.

 

각 component에 따른 결과 값을 정리해보았고, 자세한 code는 깃허브 참조 바람.


프로젝트 개요

프로젝트 개요

-Hugging faceELECTRA model을 기반으로 Learning rate, Scheduler, Batch size 등의 다양한 Hyperparameter를 적용하여 최적의 성능 도출 (Base Hyperparameter: lr=5e-5)

팀 구성 및 역할

-이름: 정동영
-역할: Model Test
-담당 업무: ELETRA model을 사용하여 model 성능 개선

프로젝트 진행 프로세스

-전체 일정:

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 size32를 시작으로 64, 128, 256batch size 적용

Learning rate – Base learning rate5e-5를 시작으로 1e-7, 1e-6, 1e-5, 1e-4, 1e-3learning rate 적용

Scheduler – Linear schedulerCosine Annealing scheduler 적용

Weight decay – 0 (No weight decay), 1e-4, 1e-5weight 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?

Cosine Annealing schedulerlearning ratecosine값의 최댓값과 최솟값을 저장하여 급격히 증가한 후, 감소

modelsaddle point를 빠르게 벗어날 수 있다는 장점

But, Base model이 원래 안정적인 loss 감소 형태를 보였기 때문에 이러한 Cosine scheduler의 이점을 살리지 못하고 있다고 판단

Linear scheduler를 사용하여 안정적인 Learning ratescheduler 과정 수행하기로 결론


Learning rate

· 5e-5

(Baseline Learning rate)

· 1e-4

· 1e-5

· 1e-6

· 1e-7

 

cs231n 강의의 Learning rate 판단 요소에 근거하여 최적의 Learning rate 도출하기로 판단

LR=1e-7일시, 전형적인 low learning rate 형태

5e-51e-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

최대 적용 Batch size = 256
LR = 5e-5로 적용시켰을 때, 가장 안정적인 train
Scheduler = Linear scheduler로 적용시켰을 때, 가장 안정적인 train
Weight decay = 1e-4로 적용시켰을 때, overfitting 감소
 

Next step

Label smoothing: 01로 이루어진 hard label0.25, 0.75 등의 형태로 smoothinsoft label로 변경하여 modeloverfitting을 방지하는 기법
BERT같은 pre-trained model에서 적용시키는 방법을 연구하여 다음 project에 적용
Data analysis: model 성능 개선에서만 초점을 맞춰 dataduplicate 제거 외에는 큰 component를 주지 않았는데, data 자체에 대한 변형으로 model 성능 방법 연구
 

느낀 점

Pre-trained model을 사용한 project는 처음 해보는 것이었는데, 처음에 방향성을 못 잡아서 시간을 많이 소비해서 더 다양한 component를 적용해보지 못한 것이 아쉽다.
이번 project에서 얻어간 것을 기반으로 다음 project는 처음부터 방향성을 잡아서 더 좋은 model의 성능을 도출하고 싶다.
 

Project1 pdf.pdf
0.76MB

 

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