확률 적 구배 하강의 Adam 방법은 어떻게 작동합니까?


44

신경망 훈련을위한 기본 그래디언트 디센트 알고리즘에 익숙합니다. 나는 Adam : ADAM : 확률 적 최적화를위한 방법을 제안하는 논문을 읽었다 .

나는 적어도 약간의 통찰력을 얻었지만 , 논문은 전체적으로 나에게 너무 높은 수준으로 보입니다. 예를 들어, 비용 함수 는 종종 많은 다른 함수들의 합이므로 그 값을 최적화하기 위해 방대한 양의 계산이 이루어져야합니다. 주제를 이해하는 한 확률 적 그라디언트 하강은 이러한 함수의 하위 집합에 대해서만 최적화를 계산합니다. 나에게 이것이 아담이 어떻게하고 왜 이것이 전체 J ( θ )에 대해 훈련 오류가 감소하는지 불분명하다 .제이(θ)제이(θ)

Adam은 이전 그라디언트를 고려하여 그라디언트를 업데이트한다고 생각합니다. 그들은 운동량을 활용하는 것과 같은 것이라고? 이 운동량은 정확히 무엇입니까? 논문 2 페이지의 알고리즘에 따르면, "정규"그래디언트의 첫 번째 및 두 번째 모멘트의 추정치와 같은 일종의 이동 평균입니까?

실제로 Adam은 그라디언트를 줄이기 위해 더 큰 효과적인 단계 크기를 사용할 수 있으므로 확률 적 근사와 함께 훈련 오류가 발생할 수 있다고 생각합니다. 따라서, 결과적인 업데이트 벡터는 일반적인 그래디언트 디센트 알고리즘과 같은 일부 곡선을 설명하는 대신 공간 차원에서 더 많이 "점프"해야합니다.

누군가가 아담의 작동 방식을 이해할 수 없는가? 특히 그것이 어떻게 수렴되는지, 특히 아담의 방법이 왜 효과가 있으며 정확히 어떤 이점이 있습니까?


1
질문에 더 나은 제목을 제공해야합니다. 아담에 대해 정확히 물어보고 싶은 것은 무엇입니까? 일반적인 경우라도 좀 더 검색 가능하도록 만드십시오.
Charlie Parker

답변:


39

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에 통합.


2
(+1) "아담과 그 이상의 융합에 대하여" openreview.net/forum?id=ryQu7f-
복원 Monica Monica

2
나는 시간이 좀 얻을 때 감사 @Sycorax, 나는 업데이트하려고합니다
user20160

1

마지막으로, 이 답변 은 Adam과 rmsprop의 모멘텀 차이에 대해 설명하고 Adam의 모멘텀 유사 동작이 일반적인 모멘텀 유사 동작과 어떻게 다른지에 중점을 둡니다. (이 답변에는 다양한 방법의 동작을 시뮬레이션하고 그래픽으로 보여주는 Python 코드도 포함되어 있습니다.)
Oren Milman
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.