https://pytorch.org/docs/stable/generated/torch.optim.RMSprop.html
RMSprop 수도코드는 아래와 같다.
차근차근 위 내용을 설명해보자.
일단 RMSprop이 왜나왔나부터 보면
AdaGrad의 학습이 진행될 때 학습률(Learning rate)이 꾸준히 감소한다는 문제. RMSProp은 이러한 한계점을 보완한 최적화 기법으로 EMA(Exponential Moving Average)를 사용한 gradient update를 사용.
이전 parameter에서 theta에 대한 gradient를 구한다.
weight decay 있다면, 해당 weight decay 만큼 더해준다. (추후 weight decay 설명)
여기서 의 의미는 gradient를 얼만큼 업데이트 해줄 지 정해주는 값.
RMSprop에서 centered
옵션은 옵티마이저가 가중치 업데이트를 계산할 때, 변화량(gradient)을 처리하는 방식에 변화를 준다.
centered=True
옵션을 사용하는 경우, RMSprop은 gradient의 제곱값만 사용하는 대신, 중심화된 (centered) 방법으로 변형. 이는 다음과 같은 추가 단계를 포함.:
평균 변화량 의 추정:
이 식은 gradient의 이동 평균을 추정.
중심화된 제곱 변화량의 추정:
이 식은 gradient의 제곱값에서 평균의 제곱을 빼서 중앙값을 조정한 것입니다. 이는 변수의 분산과 유사하게 동작.
가중치 업데이트:
이게 아니라면 그대로 업데이트.