Gradients and Optimizer Update

trainingoptimizergradients

Gradient는 loss를 줄이기 위해 parameter를 어느 방향으로 바꿔야 하는지 알려주는 신호다.

parameter W가 있으면, backward pass는 같은 shape의 gradient를 만든다.

WLWW \quad \longrightarrow \quad \frac{\partial L}{\partial W}

가장 단순한 SGD 업데이트는 다음과 같다.

WWηLWW \leftarrow W - \eta \frac{\partial L}{\partial W}

여기서 η는 learning rate다.

optimizer가 하는 일

optimizer는 gradient를 받아 parameter를 업데이트한다.

parameters + gradients -> optimizer -> updated parameters

SGD는 gradient를 거의 그대로 사용한다. Adam은 gradient의 이동 평균과 제곱 이동 평균 같은 추가 state를 유지한다.

그래서 Adam을 쓰면 보통 parameter 자체뿐 아니라 optimizer state 메모리도 필요하다.

parameter W
gradient dW
Adam state m
Adam state v

이 카드에서 중요한 포인트는 optimizer를 수식으로 완전히 외우는 것이 아니다. 학습 step에서는 backward가 gradient를 만들고, optimizer가 그 gradient를 사용해 parameter를 바꾼다는 흐름을 잡는 것이다.

확인

  • gradient의 shape은 보통 무엇과 같은가?
  • SGD 업데이트 식에서 learning rate는 어떤 역할을 하는가?
  • Adam이 SGD보다 메모리를 더 쓰는 이유는 무엇인가?