[ML] 딥러닝의 깊이 있는 이해를 위한 머신러닝 12-2 (K-MOOC)

daeungdaeung·2021년 8월 24일
0

Machine-Learning

목록 보기
22/25

학습내용

  • Stochastic Gradient Descent

  • Mini-batch Gradient Descent

  • 여러 Gradient Descent의 장점과 단점

학습목표

  • Stochastic Gradient Descent 가 무엇인지 이해할 수 있다.

  • Mini-batch Gradient Descent 가 무엇인지 이해할 수 있다.

  • 적절한 Gradient Descent 방법을 선택할 수 있다.

Stochastic Gradient Descent

  • 샘플이 많아진다면 x\vec{x} 행의 개수가 늘어나게 됩니다.

  • 피쳐의 개수가 많아지게 된다면 x\vec{x}의 컬럼 수가 늘어나게 됩니다.

  • 이는 미분을 계산할 때 연산량이 많아지게 합니다.

    • f(w)=xT(xwy)\nabla f(\vec{w}) = \vec{x}^T (\vec{x} \vec{w} - \vec{y})
  • 모든 데이터를 활용해서 기울기값을 계산하는 것이 많은 시간과 연산량을 필요로 함

    • 연산량 감소를 위해 SGD 활용
  • 여러 개의 데이터 샘플 중에 한개만 선택하여 기울기값을 계산

  • SGD는 빠르게 기울기값을 계산할 수 있습니다.

  • 여러 번 반복되는 업데이트를 통해 거의 모든 데이터를 보는 것과 마찬가지의 움직임을 보입니다.

  • 반복되는 과정을 멈추는 것은 기존 GD 와 차이가 납니다.

    • 이유: 한 개의 샘플에 대해 기울기값이 충분히 0에 가까워질 수는 있지만 다른 샘플에 대해서는 또 0에 가깝지 않은 결과 출력

    • 여러 번의 업데이트를 충분히 보고 난 다음에, 각 업데이트에서 얻은 기울기 값들이 계속 0에 충분히 가까울 때 반복과정을 멈추게 됨

  • SGD 는 어떤 업데이트에서는 글로벌 미니멈에서 멀어지고 혹은 가까워질 수 있습니다.

  • 하지만 업데이트 속도가 빠르기 때문에 GD 보다 더 빠르게 미니멈에 수렴할 수도 있습니다.

  • 이니셜 포인트에서 글로벌 미니멈으로 찾아가는 방향성 자체는 틀리지 않음

  • 각각의 업데이트를 위해 들어가는 시간과 메모리 양이 훨씬 작기 때문에 전체 계산량은 일반적으로 GD 보다 더 적음

  • SGD는 로컬 미니멈에 자주 빠집니다.

  • 데이터의 크기가 커질수록 데이터 한 개 샘플의 비중은 작아집니다. => SGD 한개 이터레이션의 효과가 GD 효과에 비해 훨씬 더 작아짐

    • 비효율적인 업데이트가 많아지고 좋지 않은 로컬 미니멈에 쉽게 빠집니다.

Mini-batch Gradient Descent

  • 스토캐스틱 그래디언트 디센트와 그래디언트 디센트 타협

  • 기존 그래디언트 디센트는 모든 데이터를 활용, SGD는 한개 샘플만 활용

  • 미니배치 GD의 경우에는 여러 개의 샘플 선택

  • Implementation

    • 시작점을 랜덤으로 잡아 데이터에서 총 m개 추출 (미니 배치 추출)

    • 해당되는 에러 함수 계산 -> 에러 함수의 기울기값을 얻음

      • wt+1=wtαfu(wt)w_{t+1} = w_t - \alpha \nabla f_{\vec{u}}(w_t)
    • 위 과정을 반복 (종료 조건을 만족할 때까지)

profile
개발자가 되고싶읍니다...

0개의 댓글