sangmandu / SangSangPlus

Boostcamp NLP Team
2 stars 5 forks source link

[KLUE 대회] MLM pre-train 적용 여부 결과 #118

Open whatchang opened 2 years ago

whatchang commented 2 years ago

들어가기에 앞서서 제가 wandb에 loss, eval_f1, eval_auprc 등의 그래프를 사용하는 방법을 잘 몰라서 ai stage 리더보드 결과에 대한 내용밖에 없는점 양해부탁드립니다 ㅠㅠ

제가 해본 실험은 다음과 같습니다.

  1. MLM 적용 X - klue/roberta-large모델을 epoch 4만큼 fine-tuning하기
  2. original dataset으로 MLM 적용 - klue/roberta-large모델을 train dataset을 이용해서 MLM pre-train을 epoch 2만큼 수행해주고 나온 모델을 fine-tuning에서 epoch 4만큼 학습시키기.
  3. undersampling dataset으로 MLM적용 - klue/roberta-large모델을 undersampling('no_relation'데이터 수를 줄인 dataset)한 dataset으로 MLM pre-train을 epoch 2만큼 수행해주고 나온 모델을 fine-tuning에서 epoch 4만큼 학습시키기.

제가 예상한 결과 오피스아워때 train dataset으로 MLM을 적용시킨 후 fine-tuning하면 좋다고 했던것 같아서 MLM을 적용시킨 모델들이 좋은 결과를 낼 것 같았고 이때 MLM은 pre-training이므로 label정보를 사용하지 않고 학습하므로 label분포에 따른 문제(데이터 불균형)와 상관없이 데이터가 많으면 많을수록 좋을 것 같다고 생각했습니다.

그래서 제가 예상한 결과는 다음과 같습니다.

1등 : original dataset으로 MLM 적용한 결과 2등 : undersampling dataset으로 MLM적용한 결과 3등 : MLM 적용 X 결과

각 실험에 대한 결과(리더보드 기준)은 다음과 같습니다.

  1. MLM 적용 X 스크린샷 2021-10-02 오후 9 33 51
  2. original dataset으로 MLM 적용 스크린샷 2021-10-02 오후 9 32 42
  3. undersampling dataset으로 MLM적용 스크린샷 2021-10-02 오후 9 34 46

위를 통해서 알 수 있었던 점

의문이 드는점

  1. 데이터의 분포에 따른 문제가 MLM학습에서도 영향을 주는가?
  2. MLM학습시 데이터가 많으면 많을수록 좋지 않나?
  3. MLM을 했을때 어떤 경우는 적용하지 않았을때보다 성능이 좋고 어떤 경우는 안 좋았는데 왜 그럴까? 둘 다 좋거나 또는 둘 다 안 좋아야 할 것 같은데...

이상 제가 실험한 결과에 내용입니다. 부족한 실험 내용와 시각 자료이었지만 읽어주셔서 감사합니다.

그리고 제가 생각한 의문점에 대해서 의견을 공유해주시면 감사할 것 같습니다~! 또는 다른 생각과 관점 혹은 공유하면 좋을 것 같은 내용도 상관없습니다 ㅎㅎㅎㅎ

sangmandu commented 2 years ago

멋집니다!! 이부분 더 개선하시면 우리팀 성적 향상이 될 것 같아요! 좋은 인사이트 얻고갑니다!

SinGonKim commented 2 years ago

original data로 MLM_pretrained 횟수에 따른 비교를 했습니다.

abc

train 결과 별 차이 없다고 봐도 무방할 것 같습니다.. 대회 private_score는 어떠한 차이가 있을지 epoch=3을 추가해서 보겠습니다.?

●MLM_pretrained_epochs=3 1

●MLM_pretrained_epochs=2 2

●MLM_pretrained_epoch=0 (MLM_pretrained X) 3

wandb 그래프로 보았을 때는 거의 비슷했으며 auprc_score 같은 경우 MLM_pretrained epochs=3 이 안정적으로 점수가 점차 높아져 선두를 유지하였지만 정작 private_score에서 auprc_score은 점수가 상당히 낮아져 MLM_Pretrained 없이 바로 train 한 점수와 근접했으며 f1_score 같은 경우는 훨씬 뒤쳐졌습니다.

MLM_pretrained epochs =2 인 경우 f1_score이 선두였지만 더 빨리 early_stopping이 되었고 모두 거의 점수가 비슷하였습니다. 결과적으로 MLM_pretrained에 밀리긴 했지만 점수가 큰 차이가 안난다는 것을 알 수 있습니다.

하지만 여기서 짐작을 하나 얻을 수 있었습니다.

"불균형 데이터에서는 MLM_pretrained가 좋은 성능을 발휘하긴 어렵다"

"MLM_pretrained_epochs는 쓴다면 정말 2번이 적당하다."

no_relation의 상당한 불균형 특히나 MLM_pretrained_epochs=3 같은 경우 심한 과적합이 일어났다라는 것을 느낄 수 있습니다.

graph

데이터를 OverSampling보다 UnderSampling이 더 좋을 것이라는 생각을 가지고

undersampling 하면 MLM_pretrained의 사용성과를 우창님 실험을 통해 알 수 있습니다.

그러면 더 좋은 성과를 확인하기 위해서는 "Undersampling 을 몇%로 해서 MLM_pretrained_epochs=2를 돌리냐" 가 MLM_pretrained 의 마지막 실험 과제가 될 것 같습니다.

이 부분에 대해서 실험을 해보아야 겠습니다.