훈련 세트가 있다고 가정합니다. $ (x _ {(i)}, $ i = 1, \ dots, m $ 의 경우 y _ {(i)}) $ . 또한 훈련 세트에서 어떤 유형의지도 학습 알고리즘을 실행한다고 가정합니다. 가설은 $ h _ {\ theta} (x _ {(i)}) = \ theta_0 + \ theta_ {1} x _ {(i) 1} + \ cdots + \ theta_ { n} x _ {(i) n} $ . $ y _ {(i) 사이의 “거리”를 최소화하는 매개 변수 $ \ mathbf {\ theta} $ 를 찾아야합니다. )} $ 및 $ h _ {\ theta} (x _ {(i)}) $ . $$ J (\ theta) = \ frac {1} {2} \ sum_ {i = 1} ^ {m} (y _ {(i)}-h _ {\ theta } (x _ {(i)}) ^ {2} $$
그런 다음 $ \ theta $ 를 찾고 $ J (\ theta) $ 를 최소화합니다. 경사 하강 법에서는 각 매개 변수를 초기화하고 다음 업데이트를 수행합니다. $$ \ theta_j : = \ theta_j- \ alpha \ frac {\ partial} {\ partial \ theta_ {j}} J (\ theta) $$
배치 경사 하강 법과 확률 적 경사 하강 법의 주요 차이점은 무엇입니까?
둘 다 위의 업데이트 규칙을 사용합니다. 그러나 하나가 다른 것보다 낫습니까?
답변
배치 또는 확률 적 경사 하강 법의 적용 가능성은 실제로 예상되는 오류 매니 폴드에 따라 다릅니다.
배치 경사 하강 법은 전체 데이터 세트를 사용하여 경사도를 계산합니다. 이것은 볼록하거나 상대적으로 부드러운 오류 매니 폴드에 적합합니다.이 경우 일부를 이동합니다. 로컬 또는 글로벌에서 최적의 솔루션을 직접 추구합니다. 추가적으로, 어닐링 된 학습률이 주어지면 배치 경사 하강 법은 궁극적으로 인력 분지에있는 최소값을 찾습니다.
확률 적 경사 하강 법 (SGD)은 단일 샘플을 사용하여 경사도를 계산합니다. SGD는 실제로 여러 샘플의 미니 배치를 사용합니다. 이유는 나중에 설명하겠습니다. SGD는 로컬 최대 값 / 최소값이 많은 오류 매니 폴드에 대해 잘 작동합니다 (잘 모르겠지만 배치 경사 하강 법보다 낫습니다). 예를 들어, 감소 된 샘플 수를 사용하여 계산 된 다소 노이즈가 많은 그래디언트는 로컬 최소값에서 더 최적의 영역으로 모델을 찌르는 경향이 있습니다. 단일 샘플은 실제로 노이즈가있는 반면 미니 배치는 약간의 노이즈를 평균하는 경향이 있습니다. , 미니 배치를 사용할 때 저크의 양이 줄어 듭니다. 미니 배치 크기가 부족한 로컬 최소값을 피할 수있을만큼 작지만 글로벌 최소값 또는 더 나은 성능을 피하지 못할만큼 충분히 큰 경우 균형이 잘 잡 힙니다. ocal 최소값. (실수로, 이것은 최고의 최소값이 더 크고 더 깊은 끌어 당김의 유역을 가지고있어서 더 쉽게 빠지기 쉽다고 가정합니다.)
SGD의 한 가지 이점은 계산적으로 훨씬 빠르다는 것입니다. 데이터 세트는 종종 RAM에 보관할 수 없으므로 벡터화의 효율성이 떨어집니다. 오히려 각 샘플 또는 샘플 배치를로드하고, 작업하고, 결과를 저장해야합니다. 반면에 Minibatch SGD는 일반적으로 계산적으로 다루기 쉽도록 의도적으로 작게 만들어집니다.
일반적으로이 계산상의 이점은 SGD를 더 많이 반복하여 기존의 배치 경사 하강 법보다 더 많은 단계를 수행함으로써 활용됩니다. . 이것은 일반적으로 배치 경사 하강 법을 통해 찾을 수있는 모델에 매우 가깝거나 더 나은 모델을 만듭니다.
SGD의 작동 방식을 생각하는 방식은 한 가지 점이 있다고 상상하는 것입니다. 내 입력 분포를 나타냅니다. 내 모델은 입력 분포를 배우려고합니다. 입력 분포 주변에는 샘플링 할 수있는 가능한 모든 미니 배치의 입력 분포를 나타내는 음영 영역이 있습니다. 일반적으로 미니 배치 입력 분포가 실제 입력 분포에 가깝다는 것은 공정한 가정입니다. 배치 경사 하강 법은 모든 단계에서 실제 입력 분포에 도달하기 위해 가장 가파른 경로를 사용합니다. 반면에 SGD는 다음을 선택합니다. 음영 처리 된 영역 내에서 임의의 지점이 있고이 지점을 향한 가장 가파른 경로를 취합니다.하지만 각 반복에서 새 지점을 선택합니다.이 모든 단계의 평균은 실제 입력 분포에 근접하며 일반적으로 꽤 좋습니다.
댓글
- 실제로 배치 경사 하강 법을 사용하는 사람은 없습니다. (이득은 ‘ 실제로 ” true ” 그래디언트.) 볼록하지 않은 손실 함수가 매우 높은 경우 대부분 올바른 방향으로 이동하면 ‘ 결국 수렴됩니다. n 로컬 최소값. 따라서 미니 배치 SGD.
- @Jason_L_Bens 이러한 알고리즘에 대해 더 자세히 읽을 수있는 참고 자료 (문서 또는 온라인 텍스트)가 있습니까?
- @ user110320 ‘ 매우 일반적인 알고리즘이므로 약간의 검색을 통해 주제에 대한 많은 리소스를 사용할 수 있습니다. 일반적인 접근 방식을 찾고 있다면 ‘ ‘ Yoshua Bengio ‘ s Learning Deep Architectures for AI. 내가 시작한 곳은 ‘입니다.
답변
다른 답변에서 알 수 있듯이 SGD를 사용하는 주된 이유는 많은 미니 배치 또는 샘플에서 평균을 낼 때 그래디언트 방향을 크게 유지하면서 그래디언트 계산 비용을 줄이는 것입니다. 이는 확실히 로컬 최소값에 도달하는 데 도움이됩니다.
- 미니 배치가 작동하는 이유 .
이 원리는 다음과 같습니다. 즉, 비용 함수의 ” true ” 기울기 (일반화 오류 또는 무한히 큰 샘플 세트에 대한 기울기)가 기대치입니다. 실제 데이터 생성 분포 $ p_ {data} $ 에 대한 기울기 $ g $ ; 샘플 배치에 대해 계산 된 실제 그라디언트 $ \ hat {g} $ 는 항상 경험적 데이터 분포 $ \ hat {p} _ {data} $ . $$ \ hat {g} = E _ {\ hat {p} _ {data}} ({\ partial J (\ theta) \ over \ partial \ theta}) $$ 일괄 경사 하강 법은 모든 데이터 샘플에서 가능한 ” 최적 ” 경사를 가져올 수 있지만
true ” 그래디언트입니다. 더 작은 배치 (예 : 미니 배치)는 전체 배치만큼 최적은 아니지만 둘 다 근사치이므로 단일 샘플 미니 배치 (SGD)도 마찬가지입니다.
$ m $ 샘플, 계산 된 $ \ hat {g} (m) $ 은 편향되지 않은 실제 기울기의 추정. 미니 배치 크기가 서로 다른 추정값의 (제곱) 표준 오차는 미니 배치 크기에 반비례합니다. 즉, $$ {SE ({\ hat {g} (n)}) \ over SE ({\ hat {g} (m)})} = {\ sqrt { m \ over n}} $$ 즉, 표준 오차의 감소는 표본 크기 증가의 제곱근입니다. 즉, 미니 배치 크기가 작 으면 큰 분산에 대한 안정성을 달성하기 위해 학습률도 작아야합니다. 표본이 독립적이지 않으면 편향되지 않은 추정의 속성이 더 이상 유지되지 않습니다. 샘플이 무작위로 충분히 배열되지 않은 경우 학습 전에 샘플을 섞어 야합니다.
- 미니 배치가 가능한 이유 더 잘 작동합니다 .
첫째, 미니 배치는 더 작은 배치 크기로 계산 수요가 줄어들 기 때문에 기술적으로 다루기 힘든 학습 문제를 다루기 어렵게 만듭니다.
둘째, 배치 크기 감소가 반드시 그래디언트 정확도 감소를 의미하지는 않습니다. 많은 훈련 샘플에는 많은 잡음이나 특이 치 또는 편향이 있습니다. 무작위로 샘플링 된 미니 배치는 원래 전체 배치보다 더 나은 (또는 나쁘지 않은) 실제 데이터 생성 분포를 반영 할 수 있습니다. 미니 배치 그래디언트 업데이트의 일부 반복이 더 나은 추정치를 제공한다면, 한 세대의 전체 평균 결과가 전체 배치에서 계산 된 그래디언트보다 더 나을 수 있습니다.
세 번째로, 미니 배치는 불쾌한 문제를 처리하는 데 도움이 될뿐만 아니라 데이터 샘플뿐만 아니라 로컬 최소값이 많은 불쾌한 비용 함수를 처리하는 데 도움이됩니다. Jason_L_Bens가 언급했듯이, 때로는 오류 매니 폴드가 정규 기울기를 로컬 최소값으로 트랩하는 것이 더 쉬울 수 있지만 미니 배치로 계산 된 임시 임의 기울기를 트랩하기가 더 어려울 수 있습니다.
마지막으로 기울기 하강에서는 그렇지 않습니다. 한 단계로 전역 최소값에 도달하지만 오류 매니 폴드를 반복합니다. 그래디언트는 대체로 반복 할 방향 만 제공합니다. 미니 배치를 사용하면 훨씬 더 빠르게 반복 할 수 있습니다. 많은 경우 반복 횟수가 많을수록 더 나은 지점에 도달 할 수 있습니다. 전 세계적으로 또는 지역적으로 최적의 지점이 모든 날씨에 대해 실제로 신경 쓰지 않습니다. 허용 가능한 일반화 오류를 제공하는 합리적인 모델에 도달하려고합니다. Minibatch를 사용하면이 작업이 더 쉬워집니다.
Ian Goodfellow 등의 ” 심층 학습 ” 책을 찾을 수 있습니다. 이 주제를주의 깊게 읽어 보면이 주제에 대해 꽤 좋은 토론을 할 수 있습니다.
댓글
- 볼록 최적화 문제에 대해 말씀하신 내용은 괜찮습니다.그러나 볼록하지 않은 함수에서 그래디언트 방법을 사용하려면 SGD가 배치 GD보다 낫다는 매우 중요한 이유를 놓쳤습니다. 내 응답보기 datascience.stackexchange.com/questions/16807/ …
- @horaceT 귀하의 의견에 감사드립니다. 위에서 언급 한 요점은 Jason_L_Bens가 자세히 설명했기 때문에 반복하지 않고 마지막 세 번째 단락에서 그의 답변을 적절하게 언급했습니다. 경사 하강 법 최적화 문제에 대해, 비 볼록은 안 장점을 포함한 국소 최소값에 반영됩니다 (마지막 세 번째 단락 참조). 설명을 위해 제 대답은 SGD를 미니 배치로 설명하지만 배치 크기는 1입니다 (세 번째 단락 참조).
- 왜 가상으로 *에서 마침내 한 시대에 말했습니까? 주어진 모든 샘플을 기반으로 한 기울기의 평균. *? ‘ 각 단계에서 가중치를 업데이트하기 때문에이 주장이 잘못되었다고 생각하지 않습니까?
- @Media 맞습니다. ‘ 마지막 단락을 삭제했습니다. 감사합니다.
답변
나에게 배치 그라디언트는 린 그라디언트와 비슷합니다. 린 그래디언트에서는 업데이트해야하는 모든 매개 변수도 배치에서 독립적으로 변경되지만 반드시 직교하지 않아도되도록 배치 크기가 선택됩니다. 예를 들어 배치에 실험 10 개, 행 10 개가 포함 된 경우 $ 2 ^ {10-1} = 512 $ 독립 열을 형성 할 수 있습니다. 10 개의 행을 사용하면 512 개의 매개 변수를 독립적이지만 직교가 아닌 업데이트 할 수 있습니다.