Stochastic Gradient Descent
Mini-batch Gradient Descent
여러 Gradient Descent의 장점과 단점
Stochastic Gradient Descent 가 무엇인지 이해할 수 있다.
Mini-batch Gradient Descent 가 무엇인지 이해할 수 있다.
적절한 Gradient Descent 방법을 선택할 수 있다.
샘플이 많아진다면 행의 개수가 늘어나게 됩니다.
피쳐의 개수가 많아지게 된다면 의 컬럼 수가 늘어나게 됩니다.
이는 미분을 계산할 때 연산량이 많아지게 합니다.
모든 데이터를 활용해서 기울기값을 계산하는 것이 많은 시간과 연산량을 필요로 함
여러 개의 데이터 샘플 중에 한개만 선택하여 기울기값을 계산
SGD는 빠르게 기울기값을 계산할 수 있습니다.
여러 번 반복되는 업데이트를 통해 거의 모든 데이터를 보는 것과 마찬가지의 움직임을 보입니다.
반복되는 과정을 멈추는 것은 기존 GD 와 차이가 납니다.
이유: 한 개의 샘플에 대해 기울기값이 충분히 0에 가까워질 수는 있지만 다른 샘플에 대해서는 또 0에 가깝지 않은 결과 출력
여러 번의 업데이트를 충분히 보고 난 다음에, 각 업데이트에서 얻은 기울기 값들이 계속 0에 충분히 가까울 때 반복과정을 멈추게 됨
SGD 는 어떤 업데이트에서는 글로벌 미니멈에서 멀어지고 혹은 가까워질 수 있습니다.
하지만 업데이트 속도가 빠르기 때문에 GD 보다 더 빠르게 미니멈에 수렴할 수도 있습니다.
이니셜 포인트에서 글로벌 미니멈으로 찾아가는 방향성 자체는 틀리지 않음
각각의 업데이트를 위해 들어가는 시간과 메모리 양이 훨씬 작기 때문에 전체 계산량은 일반적으로 GD 보다 더 적음
SGD는 로컬 미니멈에 자주 빠집니다.
데이터의 크기가 커질수록 데이터 한 개 샘플의 비중은 작아집니다. => SGD 한개 이터레이션의 효과가 GD 효과에 비해 훨씬 더 작아짐
스토캐스틱 그래디언트 디센트와 그래디언트 디센트 타협
기존 그래디언트 디센트는 모든 데이터를 활용, SGD는 한개 샘플만 활용
미니배치 GD의 경우에는 여러 개의 샘플 선택
Implementation
시작점을 랜덤으로 잡아 데이터에서 총 m개 추출 (미니 배치 추출)
해당되는 에러 함수 계산 -> 에러 함수의 기울기값을 얻음
위 과정을 반복 (종료 조건을 만족할 때까지)