실험을 돌렸는데 epoch 10 정도부터 overfitting이 발생하였고
이에 대한 해결책으로 weight decay값 조정을 하라고 조언 받음
그래도 50 epoch까지는 돌리는걸 목적으로 하자!
그래서 weight decay가 뭔데..?
일반적으로 overfittng을 해결하기 위해
학습 데이터셋의 양을 늘리는 방법을 쓸 수 있지만
현실적으로 리소스 부족으로 인해 매우 어렵다.
(훈련 데이터를 더 구하는 게 매우 비쌀 것이고, GPU도 따라줘야 하니..)
그래서 사용하는 함수의 복잡도를 조정하는 것이 더 좋은데
많이 사용하는 기법 중에 하나로 가중치 감쇠(weight decay)가 있다
weight decay
: loss function이 작아지는 방향으로만 단순히 학습을 진행하면
특정 가중치 값들이 커지면서 overfitting이 발생할 수 있다.
따라서, 학습된 모델의 복잡도를 줄이기 위해 학습 중 weight가 너무 큰 값을 가지지 않도록 loss function에서 wieght가 커질 경우에 패널티 항목을 집어 넣는 것
- 많이 쓰이는 패널티 항목: L1 Regularization, L2 Regularization
일반적으로 0과 0.1 사이의 값으로 스케일링 하며 (0.1, 0.01, 0.001, ...)
어떤 값이 더 좋은지는
모델마다 데이터마다 다르기 때문에 직접 실험을 돌려보는 수밖에 없다.
값을 늘릴수록 overfitting을 막을 수 있는건 맞지만 그래도 주의해야 한다.
지나치게 값을 크게 하면 복잡도를 지나치게 많이 줄어버리는 것이기 때문에
갑자기 underfitting이 발생할 수도 있다는 것을 명심해야 한다.
loss = loss +
weight decay parameter* L2 norm of the weights
[참고블로그]
https://light-tree.tistory.com/216
https://ko.d2l.ai/chapter_deep-learning-basics/weight-decay.html
https://wiki.cloudfactory.com/docs/mp-wiki/solvers-optimizers/weight-decay