본문 바로가기
AI 이론 스터디

Adam (Adaptive Moment Estimation)

by 솩코딩 2024. 5. 4.

인공지능 모델 학습할 때, loss function 값 줄이려고 gradient descent해서 weight값들 update시켜나가듯이,

'Adam' 역시 weight 업데이트하는 방법 중 하나이다.

 

Adam은 momentum (방향을 담당함)과 RMSprop (보폭을 담당한)를 합친 방법으로,

쉽게 말하면 momentum은 시점에 대해 gradient를 누적하는 방법으로 weight를 업데이트 하는 것, 즉, 관성처럼 움직이고,

RMSprop는 크기를 누적한 값을 나누어줘서 전체적으로 weight값을 평준화시키는 방법으로 업데이트 하는 것이다.

즉, 너무 폭을 좁게 서치했다 싶으면 큼직하게 서치하고, 너무 폭을 크게 서치했다 싶으면 좁게 서치하는 것이다.

 

수식으로 보자면, momentum은 이전 시점의 값에 weight를 지수적으로 감소하게끔 주기 때문에 

마치, 과거 시점의 gradient는 잊어버리고 이동하면서 average 취하는 것이니까, exponential moving average라고도 한다.

RMSprop는 해당 시점의 값을 제곱해서 루트를 취하기 때문에 크기를 누적하는 방식이다.

gradient는 벡터고, 벡터는 제곱을 할 수가 없다. 하지만, 여기서는 element-wise를 가정하고 진행한다.

또한, 분모에 epsilon을 더해주는 것은, 분모가 0이 되지 않게 즉, 값 전체가 튀는 걸 방지한다.

(global minimum에 근접했는데 갑자기 값이 저 멀리 튀어버리는 그런 상황을 막자는 거지)