3줄 요약
- scheduler 는 lr 값을 조절하면서
- 학습이 더 잘 이뤄지도록 한다.
- 하지만 그로 인해 성능이 하락할 수도 있다.
pytorch scheduler 라고 검색하면, 다양한 종류의 scheduler 들이 쏟아진다. 그 중에서 맞는 걸 고르면 된다. 제일 좋은 방법은 scheduler 관련 논문을 읽고, 모델에 가장 적합한 걸 쓰면 된다. 하지만 결국 이론은 이론이고 다 실험해보기 전까지는 모른다.
과연 정말 좋기만 할까?
나는 lambdaLR scheduler 를 사용했다. 사용하기 전과 다르게 확실히 후반부로 갈수록 loss 감소폭이 줄었고, 학습이 느려졌음을 알 수 있었다. 문제는 EarlyStop 에 의해 이전 최고치 성능에 도달하기 전에 멈췄다. 심지어 EarlyStop 이 없었더라도 최고치 성능에 도달하려면 한참 멀었다는 걸 느꼈다.
scheduler 의 단점은 검색해도 나오질 않아서 더 의심스럽다.
하지만 아무리 구글링해도 scheduler 의 단점에 대한 글은 나오지 않았다. 좀 신기했다. 검색하면, 무조건 쓰는 방법과 종류에 대한 글만 많았다. 내가 부족해서 일어나는 일인 것인가? 확실한 것은 난 동일 조건에서 scheduler 의 유무를 통해 상당한 성능 차이가 있음을 알 수 있었다.
보통 딥러닝 관련 구글링을 하면, 이미 고수들이 stackoverflow 나 github issue, 혹은 논문을 통해 scheduler 가 어떤지에 대해 상세히 분석해놓은 글이 나오는데 이번엔 그렇지 않았다.
결론
- pytorch repoducibility 를 최대한 준수한 상황에서, scheduler 가 오히려 성능을 상당히 떨어뜨렸다.
- 내 실수일 수 있다. 하지만 여러 번 시도해봤고, 나로선 이런 결론을 내릴 수 밖에 없었다.
- 혹시 고수님들이 내 글을 본다면, 부디 가르침을 주신다면 너무나 감사하겠다.
'NLP > PyTorch' 카테고리의 다른 글
[PyTorch] torch.max returns also indices (0) | 2022.08.05 |
---|---|
[PyTorch] Auto Mixed Precision (0) | 2022.06.29 |