본문 바로가기

NLP/error

[error] pretraind language model 이 같은 값만 뱉는 경우

 

이런 사람들에게

  • bert model 이 똑같은 인코딩 값만 뱉어요.
  • loss 는 줄어드는데, 정확도는 늘지 않아요.

 

3줄 요약

  • BERT 와 같은 pretrained language model 이 똑같은 값만 출력하는 경우
  • learning rate 가 높아서 그렇다.
  • lr 을 낮추자.

 


 

 

관련 글 모음

 

BERT encoding layer produces same output for all inputs during evaluation (PyTorch)

I don't understand why my BERT model returns the same output during evaluation. The output of my model during training seems correct, as the values were different, but is totally the same during

stackoverflow.com

 

 

해당 글에서도 learning rate 를 적절하게 사용하라고 권한다. 논문에서 사용한 값들을 활용해보자.

→ recommended learning rates from the official paper: 5e-5, 3e-5, 2e-5

 

 

BERT encoding layer produces same output for all inputs during evaluation · Issue #735 · huggingface/transformers

I am having issues with differences between the output of the BERT layer during training and evaluation time. I am fine-tuning BertForSequenceClassification, but have traced the problem to the pret...

github.com

 

이 글에서도 코드상의 문제인지 확인해달라고 하지만, 마지막에 해결하는 글들은 죄다 learning rate 를 낮추면서 해결한다. 특히 마지막에 0.01 에서 5e-5 로 바꾸면서 해결했다고 한다.

 

(혹시나 해서 하는 말인데, 5e-5 는 0.00005 다. e 앞에 적힌 숫자에 10 의 -5 제곱을 곱한 것과 같다. 나는 이 표현을 처음 봤을 때, 검색하는 방법도 감이 오질 않아서 헤맸던 기억이 있어서 남겨둔다.)

 

나 같은 경우는 lr = 0.01 로 사용했었는데, 1 epoch 만에 input에 관계없이 모두 똑같은 hidden state vectors 가 나왔다.

 

부디 learning rate 를 무시하지 말자. 믿었던 pretrained model 에서 변덕스러운 짓을 한다. 나는 주변 사람의 도움이 아니었다면, 절대 알아채지 못했을 실수였다....