배치 구배 하강 대 확률 구배 하강


101

i = 1 , , m에 대한 훈련 세트 (x(i),y(i)) 가 있다고 가정 합니다. 또한 훈련 세트에서 일종의 감독 학습 알고리즘을 실행한다고 가정하십시오. 가설은 h θ ( x ( i ) ) = θ 0 + θ 1 x ( i ) 1 + + θ n x ( i ) n으로 표시됩니다i=1,,mhθ(x(i))=θ0+θ1x(i)1++θnx(i)n. 우리는 매개 변수를 찾을 필요가 θ 사이의 "거리"최소화 y(i)hθ(x(i)) . J ( θ ) = 1 이라고하자

J(θ)=12i=1m(y(i)hθ(x(i))2

그런 다음 J ( θ ) 를 최소화하는 θ 를 찾고 싶습니다 . 경사 하강에서는 각 매개 변수를 초기화하고 다음 업데이트를 수행합니다. θ j : = θ jα J(θ)

θj:=θjαθjJ(θ)

배치 구배 하강과 확률 구배 하강의 주요 차이점은 무엇입니까?

둘 다 위의 업데이트 규칙을 사용합니다. 그러나 하나는 다른 것보다 낫습니까?

답변:


121

배치 또는 확률 적 경사 하강의 적용 가능성은 실제로 예상되는 오차 매니 폴드에 따라 다릅니다.

배치 그라디언트 디센트는 전체 데이터 세트를 사용하여 그라디언트를 계산합니다. 볼록하거나 비교적 부드러운 오류 매니 폴드에 좋습니다. 이 경우 우리는 로컬 또는 글로벌 최적의 솔루션으로 직접 이동합니다. 또한, 어닐링 된 학습 속도를 고려할 때 배치 구배 하강은 결국 매력의 유역에 위치한 최소값을 찾을 것입니다.

스토캐스틱 그래디언트 디센트 (SGD)는 단일 샘플을 사용하여 그래디언트를 계산합니다. SGD의 대부분의 응용 프로그램은 실제로 몇 가지 샘플의 미니 배치를 사용합니다. SGD는 로컬 최대 / 최소값이 많은 오류 매니 폴드에 대해 잘 작동합니다 (잘 모르겠지만 배치 그라디언트 디센트보다 낫습니다). 이 경우, 감소 된 수의 샘플을 사용하여 계산 된 다소 시끄러운 그래디언트는 모델을 로컬 최소 점에서 희망적으로 더 최적 인 영역으로 저크하는 경향이 있습니다. 단일 샘플은 잡음이 심하지 만 미니 배치는 소음의 평균을내는 경향이 있습니다. 따라서 미니 배치를 사용할 때 저크의 양이 줄어 듭니다. 미니 배치 크기가 작은 로컬 최소값을 피할 수있을만큼 작지만 크기가 크면 균형이 잘 잡 힙니다. 글로벌 최소 또는 더 나은 성능의 로컬 최소를 피하십시오. (우연히, 이것은 최고의 최소값이 더 크고 더 깊은 유인 지대를 가지며 따라서 빠지기 쉽다고 가정합니다.)

SGD의 이점 중 하나는 계산 상 훨씬 빠릅니다. 대용량 데이터 세트는 종종 RAM에 보관할 수 없으므로 벡터화가 훨씬 덜 효율적입니다. 대신, 각 샘플 또는 샘플 배치를로드하고, 작업하고, 결과를 저장해야합니다. 반면, 미니 배치 SGD는 일반적으로 계산적으로 다루기 쉬울 정도로 의도적으로 작게 만들어집니다.

일반적으로이 계산상의 이점은 SGD를 더 많이 반복하여 기존의 배치 경사 하강보다 더 많은 단계를 수행함으로써 활용됩니다. 이것은 일반적으로 배치 구배 하강 또는 더 나은 방법으로 찾을 수있는 모델과 매우 유사한 모델이됩니다.

SGD의 작동 방식을 생각하는 방식은 입력 분포를 나타내는 하나의 포인트가 있다고 상상하는 것입니다. 내 모델이 입력 분포를 배우려고합니다. 입력 분포 주변에는 샘플링 할 수있는 모든 미니 배치의 입력 분포를 나타내는 음영 영역이 있습니다. 일반적으로 미니 배치 입력 분포는 실제 입력 분포에 근접한 것으로 가정합니다. 모든 단계에서 배치 그라디언트 디센트는 가장 가파른 경로를 사용하여 실제 입력 분포에 도달합니다. 반면 SGD는 음영 영역 내에서 임의의 점을 선택하고이 점을 향한 가장 가파른 경로를 취합니다. 그러나 매번 반복 할 때마다 새로운 포인트를 선택합니다. 이 모든 단계의 평균은 실제 입력 분포와 거의 비슷합니다.


13
실제로, 아무도 Batch Gradient Descent를 사용하지 않습니다. 그것은 많은 이익을 얻지 못하기 때문에 계산 비용이 너무 비쌉니다. (실제로 "진정한"그라디언트를 내리고 있다는 이점이 있습니다.) 볼록하지 않은 비 손실 기능이있는 경우 대부분 올바른 방향으로 밟기 만하면 결국 로컬 최소값으로 수렴하게됩니다. 따라서 미니 배치 SGD.
sabalaba

@Jason_L_Bens이 알고리즘에 대해 더 많이 읽을 수있는 참고 문헌 (논문 또는 온라인 텍스트)이 있습니까?
user110320

1
@ user110320 매우 일반적인 알고리즘 임에도 불구하고 제 머릿속에 있지는 않습니다. 따라서이 주제에 대해 약간의 검색이 가능한 수많은 리소스가 있어야합니다. 일반적인 접근 방식을 찾고 있다면 Yoshua Bengio의 인공 지능 학습 딥 아키텍처를 읽어 보는 것이 좋습니다. 내가 시작한 곳입니다.
Jason_L_Bens

6

다른 답변에서 알 수 있듯이 SGD를 사용하는 주된 이유는 그라디언트의 계산 비용을 줄이면서 많은 미니 배치 또는 샘플에 대해 평균을 낼 때 그라디언트 방향을 크게 유지하는 것입니다.

  1. 왜 minibatch 작품 .

pdatap^data

g=Epdata(J(θ)θ)
SE(g^(n))SE(g^(m))=mn
m
Ep^data(g^(m))=Ep^data(J(θ)θ)
m
  1. 왜 minibatch이 더 잘 작동 할 수 있습니다 .

첫째, 미니 배치는 배치 크기가 작을수록 계산 요구가 감소하여 기술적으로 해결할 수없는 일부 학습 문제를 해결할 수 있습니다.

둘째, 배치 크기가 줄어든다고해서 기울기 정확도가 줄어드는 것은 아닙니다. 많은 훈련 샘플에는 많은 소음이나 특이 치 또는 바이어스가 있습니다. 무작위로 표본 추출 된 미니 배치는 원래의 전체 배치보다 실제 데이터 생성 분포를 더 좋게 (또는 더 나쁘게) 반영 할 수 있습니다. 미니 배치 그라디언트 업데이트의 일부 반복이 더 나은 추정을 제공하는 경우 전체 획기적으로 계산 된 그라디언트보다 하나의 에포크의 평균 결과가 더 나을 수 있습니다.

셋째, 미니 배치는 불쾌한 데이터 샘플을 처리하는 데 도움이 될뿐만 아니라 로컬 최소값이 많은 불쾌한 비용 함수를 처리하는 데 도움이됩니다. Jason_L_Bens가 언급했듯이, 때때로 오류 매니 폴드가 정규 그라디언트를 로컬 최소값으로 트랩하는 것이 더 쉬운 반면 미니 배치로 계산 된 임시 임의 그라디언트를 트랩하는 것이 더 어려울 수 있습니다.

마지막으로 경사 하강에서는 한 번에 전체 최소값에 도달하지 않고 오류 매니 폴드에서 반복됩니다. 그라디언트는 주로 반복 방향을 제공합니다. 미니 배치를 사용하면 훨씬 빠르게 반복 할 수 있습니다. 많은 경우 반복이 많을수록 더 나은 지점에 도달 할 수 있습니다. 전 세계적으로나 심지어는 현지에서 최적의 날씨가 될 수 있습니다. 허용 가능한 일반화 오류를 발생시키는 합리적인 모델에 도달하려고합니다. 미니 배치가 더 쉬워집니다.

Ian Goodfellow 등의 "Deep learning"이라는 책을주의 깊게 읽으면이 주제에 대해 꽤 좋은 토론을 할 수 있습니다.


볼록 최적화 문제의 경우 말한 것이 좋습니다. 그러나 볼록하지 않은 함수에서 그래디언트 방법을 사용하려면 배치 GD보다 SGD가 더 좋은 매우 중요한 이유를 놓쳤습니다. 내 답변보기 datascience.stackexchange.com/questions/16807/…
horaceT

@horaceT 귀하의 의견에 감사드립니다. 위에서 언급 한 요점은 Jason_L_Bens에 의해 위에서 자세히 설명되었으므로 마지막 세 번째 단락에서 그의 대답을 반복적으로 참조하면서 귀찮게하지 않았습니다. 경사 하강 최적화 문제를 위해, 볼록하지 않은 부분은 새들 포인트를 포함한 지역 최소값에 의해 반영됩니다 (마지막 세 번째 단락 참조). 설명을 위해 내 대답은 SGD를 미니 배치로 설명하지만 배치 크기는 1입니다 (세 번째 단락 참조).
Xiao-Feng Li

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.