확률 적 구배 하강의 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.