Gradient Descent와 Stochastic Gradient Descent의 차이점은 무엇입니까?

경사 하강 법과 확률 적 경사 하강 법의 차이점은 무엇입니까?

잘 모르겠습니다. 간단한 예를 들어 차이점을 설명해 주시겠습니까?

답변

간단한 설명 :

경사 하강 법 (GD)과 확률 적 경사 하강 법 (SGD) 모두에서 반복적 인 방식으로 매개 변수 집합을 업데이트하여 오류 함수를 최소화합니다.

GD에서는 특정 반복의 매개 변수에 대한 단일 업데이트를 수행하기 위해 교육 세트의 모든 샘플을 실행해야합니다. 반면 SGD에서는 교육 샘플 중 하나 또는 하위 세트 만 사용합니다. 특정 반복에서 매개 변수에 대한 업데이트를 수행하도록 훈련 세트. SUBSET을 사용하는 경우 Minibatch Stochastic Gradient Descent라고합니다.

따라서 훈련 샘플 수가 많고 실제로 매우 큰 경우 Gradient Descent를 사용하는 경우 시간이 너무 오래 걸릴 수 있습니다. 매개 변수 값을 업데이트하고 있으며 전체 학습 세트를 실행하고 있습니다. 반면에 SGD를 사용하면 학습 샘플을 하나만 사용하고 첫 번째 샘플부터 바로 개선되기 시작하므로 더 빠릅니다.

SGD는 GD에 비해 수렴 속도가 훨씬 빠르지 만 오류 기능은 그렇지 않습니다. GD의 경우처럼 최소화됩니다. 대부분의 경우, 매개 변수 값에 대해 SGD에서 얻는 근사치로 충분합니다. 최적 값에 도달하고 계속 진동하기 때문입니다.

실제 사례에 대한 예제가 필요한 경우 확인하십시오. 여기에서 Andrew NG의 메모는 두 사례에 관련된 단계를 명확하게 보여줍니다. cs229-notes

출처 : 쿼라 스레드

댓글

  • 감사합니다. 간단히 이렇게 하시겠습니까? Gradient Descent : Batch, Stochastic 및 Minibatch : Batch는 모든 훈련 샘플이 평가 된 후 가중치를 업데이트합니다. Stochastic, 가중치는 각 훈련 샘플 후에 업데이트됩니다. Minibatch는 두 세계의 장점을 결합합니다. 전체 데이터 세트를 사용하지는 않지만 단일 데이터 포인트를 사용하지 않습니다. 데이터 세트에서 무작위로 선택된 데이터 세트를 사용합니다. 이러한 방식으로 계산 비용을 줄이고 확률 적 버전보다 분산을 낮 춥니 다.
  • 위의 cs229-notes 링크가 다운되었습니다. 그러나 포스트 날짜와 일치하는 Wayback Machine이 제공합니다. web.archive.org/web/20180618211933/ http://cs229.stanford.edu/…

답변

확률 적 단어 포함 단순히 학습 데이터의 무작위 샘플이 경사 하강 법 .

이렇게하면 오류를 계산하고 가중치를 더 빠르게 반복 할 수있을뿐만 아니라 (한 번에 소량의 샘플 만 처리하기 때문에) 더 빨리 최적입니다. 여기에서 답변을 확인 하여 훈련에 확률 적 미니 배치를 사용하는 것이 이점을 제공하는 이유에 대한 자세한 내용을 확인하세요.

한 가지 단점은 최적의 경로 (항상 동일한 최적 값이라고 가정)가 훨씬 더 시끄러울 수 있습니다. 따라서 경사 하강 법의 각 반복에서 오류가 어떻게 감소하는지 보여주는 멋진 부드러운 손실 곡선 대신 다음과 같은 내용을 볼 수 있습니다.

노이즈 손실 곡선

시간이 지남에 따라 손실이 감소하는 것을 분명히 볼 수 있지만, 에포크마다 (훈련 배치에서 훈련 배치로) 큰 차이가 있으므로 곡선에 노이즈가 있습니다.

이것은 단순히 반복 할 때마다 전체 데이터 세트에서 확률 적으로 / 무작위로 선택한 하위 집합에 대한 평균 오차를 계산하기 때문입니다. 일부 샘플은 높은 오류를 생성하고 일부는 낮습니다. 따라서 평균은 경사 하강 법의 한 번 반복에 무작위로 사용한 샘플에 따라 달라질 수 있습니다.

댓글

  • 감사합니다. Gradient Descent에는 Batch, Stochastic 및 Minibatch의 세 가지 변형이 있습니다. Batch는 모든 훈련 샘플이 평가 된 후 가중치를 업데이트합니다. 확률 적 가중치는 각 훈련 샘플 후에 업데이트됩니다. Minibatch는 두 세계의 장점을 결합합니다. 전체 데이터 세트를 사용하지는 않지만 단일 데이터 포인트는 사용하지 않습니다. 데이터 세트에서 무작위로 선택된 데이터 세트를 사용합니다. 이러한 방식으로 계산 비용을 줄이고 확률 적 버전보다 분산을 낮 춥니 다.
  • ' 배치가 있고 배치가 전체 학습 세트 (기본적으로 한 epoch) 인 경우 미니 배치가 있습니다. 부분 집합이 사용됩니다 (따라서 전체 집합 $ N $보다 작은 숫자).이 부분 집합은 무작위로 선택되므로 확률 적입니다. 단일 샘플을 사용하는 것은 온라인 학습 이라고하며 미니 배치의 하위 집합입니다 … 또는 단순히 n=1를 사용한 미니 배치입니다.
  • tks, 분명합니다!

답변

경사 하강 또는 배치 경사 하강 , 우리는 epoch 당 전체 훈련 데이터를 사용하는 반면, Stochastic Gradient Descent에서는 epoch 당 하나의 훈련 예제 만 사용하고 Mini-batch Gradient Descent는이 두 극단 사이에 위치하므로 미니 배치 (작은 부분)를 사용할 수 있습니다. ) 에포크 당 훈련 데이터의 미니 배치 크기를 선택하는 규칙은 32, 64, 128 등과 같이 2의 제곱입니다.
자세한 내용 : cs231n 강의 노트

댓글

  • 감사합니다. Gradient Descent에는 Batch, Stochastic 및 Minibatch의 세 가지 변형이 있습니다. Batch는 모든 훈련 샘플이 평가 된 후 가중치를 업데이트합니다. 확률 적 가중치는 각 훈련 샘플 후에 업데이트됩니다. Minibatch는 두 세계의 장점을 결합합니다. 전체 데이터 세트를 사용하지는 않지만 단일 데이터 포인트는 사용하지 않습니다. 데이터 세트에서 무작위로 선택된 데이터 세트를 사용합니다. 이러한 방식으로 계산 비용을 줄이고 확률 적 버전보다 분산을 낮 춥니 다.

답변

Gradient Descent $ J (\ Theta) $ <를 최소화하는 알고리즘입니다. / span>!

아이디어 : theta의 현재 값에 대해 $ J (\ Theta) $ , 그런 다음 음의 기울기 방향으로 작은 걸음을 옮깁니다. 반복합니다.

Gradient_Descent

방정식 업데이트 = UpdateEqn

알고리즘 :

while True: theta_grad = evaluate_gradient(J,corpus,theta) theta = theta - alpha * theta_grad 

하지만 문제는 $ J (\ Theta) $ 가 창에있는 모든 말뭉치의 함수이므로 계산하는 데 매우 비쌉니다.

확률 적 경사 하강 법 창을 반복적으로 샘플링하고 각 창마다 업데이트합니다.

확률 적 경사 하강 법 알고리즘 :

while True: window = sample_window(corpus) theta_grad = evaluate_gradient(J,window,theta) theta = theta - alpha * theta_grad 

보통 샘플 창 크기는 2의 제곱, 즉 32, 64 미니 배치입니다.

답변

두 알고리즘 모두 매우 유사합니다. 유일한 차이점은 반복하는 동안 발생합니다. Gradient Descent에서는 손실과 미분을 계산할 때 모든 점을 고려하고, Stochastic Gradient Descent에서는 손실 함수의 단일 점과 그 미분을 무작위로 사용합니다. 이 두 기사를 확인하십시오. 둘 다 상호 관련이 있고 잘 설명되어 있습니다. 도움이 되었기를 바랍니다.

  1. Gradient Descent 알고리즘

  2. 확률 적 경사 하강 법 .

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다