Adam 논문은 "... 다수의 목적 함수는 서로 다른 데이터의 하위 샘플에서 평가 된 여러 하위 함수로 구성되어 있습니다.이 경우 개별 하위 함수를 사용하여 그래디언트 단계를 수행하여 최적화를 더욱 효율적으로 수행 할 수 있습니다 ..." 목적 함수는 학습 예제에 대한 오류의 합계이며 개별 예제 또는 미니 배치에서 학습을 수행 할 수 있습니다. 이는 SGD (stochastic gradient descent)와 동일하며, 매개 변수 업데이트가 더 빈번하기 때문에 배치 훈련보다 대규모 문제에 더 효율적입니다.
Adam이 작동하는 이유는 몇 가지 트릭을 사용합니다.
이러한 트릭 중 하나는 모멘텀이며 더 빠른 수렴을 제공 할 수 있습니다. 길고 좁은 협곡 모양의 객관적인 기능이 점차적으로 최소쪽으로 기울어지는 것을 상상해보십시오. 그래디언트 디센트를 사용하여이 기능을 최소화하고 싶다고 가정 해 봅시다. 캐년 벽의 특정 지점에서 시작하면 음의 기울기가 가장 가파른 하강 방향, 즉 대부분 캐년 바닥을 향합니다. 협곡 벽이 협곡의 점진적 경사보다 최소로 가파르 기 때문입니다. 학습 속도 (예 : 단계 크기)가 작 으면 협곡 바닥으로 내려간 다음 최소 수준으로 따라갈 수 있습니다. 그러나 진보는 느려질 것입니다. 학습 속도를 높일 수는 있지만 단계의 방향은 바뀌지 않습니다. 이 경우, 협곡 바닥을 넘어서 반대쪽 벽으로 향하게됩니다. 그런 다음이 패턴을 반복하여 벽에서 벽으로 진동하면서 최소 방향으로 천천히 진행합니다. 이 상황에서 모멘텀이 도움이 될 수 있습니다.
모멘텀은 단순히 이전 업데이트의 일부가 현재 업데이트에 추가되어 특정 방향으로 반복 업데이트를 의미합니다. 우리는 그 방향으로 더 빠르고 더 빠르게 움직입니다. 협곡의 경우 모든 업데이트에 해당 방향의 구성 요소가 있으므로 최소 방향으로 추진력을 구축합니다. 반대로, 협곡 벽을 가로 질러 앞뒤로 움직이면 방향이 계속 역전되므로 운동량은 그 방향으로 진동을 완화시키는 데 도움이됩니다.
Adam이 사용하는 또 다른 트릭은 각 매개 변수에 대해 별도의 학습 속도를 적응 적으로 선택하는 것입니다. 일반적으로 작거나 빈도가 적은 업데이트를받는 매개 변수는 Adam을 통해 더 큰 업데이트를받습니다 (반대도 마찬가지 임). 이는 적절한 학습률이 매개 변수마다 다른 경우 학습 속도를 높입니다. 예를 들어, 딥 네트워크에서는 초기 계층에서 그라디언트가 작아 질 수 있으며 해당 매개 변수에 대한 학습 속도를 높이는 것이 좋습니다. 이 방법의 또 다른 이점은 학습 속도가 자동으로 조정되므로 수동 튜닝이 덜 중요하다는 것입니다. 표준 SGD는 학습 속도의 신중한 조정 (및 온라인 조정)이 필요하지만 Adam 및 관련 방법에서는 그렇지 않습니다. 하이퍼 파라미터를 선택해야합니다.
관련 방법 :
모멘텀은 종종 표준 SGD와 함께 사용됩니다. 개선 된 버전을 Nesterov 운동량 또는 Nesterov 가속 그라디언트라고합니다. 각 매개 변수에 대해 자동으로 조정 된 학습 속도를 사용하는 다른 방법에는 Adagrad, RMSprop 및 Adadelta가 있습니다. RMSprop 및 Adadelta는 학습을 중단시킬 수있는 Adagrad 관련 문제를 해결합니다. Adam은 운동량면에서 RMSprop와 유사합니다. Nadam은 Adam이 클래식 운동량 대신 Nesterov 운동량을 사용하도록 수정했습니다.
참고 문헌 :
Kingma and Ba (2014) . Adam : 확률 적 최적화 방법.
Goodfellow et al. (2016) . 딥 러닝, 8 장.
Geoff Hinton의 과정에서 나온 슬라이드
Dozat (2016) . Nesterov Momentum을 Adam에 통합.