대학교 팀 프로젝트로 BERT를 fine tuning 시켜야 하는데, fine-tuing overfitting이 심하게 발생했습니다. 이를 해결하기 위해 찾다가 이 논문을 보게 되었습니다.

 

1. Introduction

 이 논문은 NLP에 관한 논문입니다. BERT 같이 pretrain된 모델을 fine tuning할 때, 오버피팅이 된다고 이 논문에서 지적합니다. 오버피팅이 되는 이유는 모델의 복잡성과 fine tuning할 domain의 데이터 부족, aggressive fine-tuing이 원인이라고 논문 저자들은 언급합니다. 

 높은 복잡성을 제어하기 위해서 이 논문에서는 Smoothness inducing Adversarial Regularization 방법을 이용합니다. 이는 input에 noise를 약간 주더라도 크게 output값이 크게 변하지 않도록 해줍니다.

  aggresive updating을 예방하기 위해서 Bergma Proximal Point Optimization 방법을 제안합니다. 이는 이전 iteration에서 너무 벗어나지 않게끔 업데이트합니다.

 

2. Method

2.1 Smoothness-Inducing Adversarial Regularization

 

L은 ce loss입니다. R이 smoothness-inducing adversarial regularizer 입니다.

 

x~은 noise를 더해준 값을 의미합니다. 

 

R의 max 부분이 전 잘 이해가 안갔습니다. divergence는 스칼라 값 하나인데, 여기서 최댓값을 

https://www.youtube.com/watch?v=ma4QTdCqODE 이 분의 발표를 참고했습니다.

max 부분은 noise를 준 것과 기존의 것의 차이를 최대 입실론만큼 떨어트리는 역할을 합니다. 변화가 있더라도, 값이 크게 변하지 않게 해줍니다. 

 

실제로 크게 변하지 않는 것을 확인할 수 있습니다.

 

2.2 Bregman Proximal Point Optimization

 

 이는 모델이 aggresive updating을 막아줍니다.

 

이는 vanilla 방법입니다. pretrain 모델과 fine-tuning 모델의 파라미터 거리를 뮤를 통해서 조절해줍니다.

 

모멘텀으로 학습 속도를 늘릴 수 있습니다.

 

exponential moving average(EMA)라고 해서 이 방법은 self-supervised에서 좀 자주 쓰입니다.  다른 분야에서도 주로 쓰이니 알아두는 편이 좋습니다. 베타는 0.99로 주로 설정해줍니다.

 

전체적인 알고리즘입니다. 어떻게 입실론값을 최대로 하는 노이즈를 어떻게 찾는 지 궁금했는데, 이 알고리즘을 보니 이해가 가네요.

 

 

ViT도 fine-tuning을 많이 하는데, 다른 task에도 적용해도 좋을 것 같습니다.

반응형

+ Recent posts