Pytorch_About_SGD

stochastic gradient descent(SGD)에 대하여

  • 데이터 학습을 할 때 optimizer로 많이 사용되는 SGD에 대해 알아보고자 한다.

  • SGD는 Batch Gradient Descent(BGD)같이 전체 데이터셋에 대한 미분값을 계산하지 않고, mini-bathc 만큼의 데이터셋에 대해서만 계산을 진행한다.

  • 이렇게 되면 전체 데이터셋을 메모리에 올릴 필요가 없으므로 큰 메모리가 요구되지 않게 됩니다.

  • stochastic 이라고 말하는 이유 또한 mini-batch만 보기 때문입니다.

    • BGD가 전체 데이터셋을 다룬다는 의미는 같은 데이터를 계속 살펴본다는 의미이다. 그렇기 때문에 gradient 값이 하나로 주어지게 되며 이를 deterministic 하다고 말합니다.

    • 하지만, SGD의 경우 mini-batch로 데이터를 보기 때문에 mini-batch를 어떻게 선택하냐에 따라서 gradient값이 다르게 나오게 됩니다.

    • 따라서 gradient의 흐름이 정해지지 않고 확률적으로 나타난다는 의미에서 stochastic 이라고 말하게 됩니다.

  • SGD의 장점

    • mini-batch로 step을 진행하므로 더 빠른 학습이 가능하다.

    • local-minima을 피할 수 있게 된다.

    • gradient descent

    • 위의 그림을 보면 BGD는 전체 데이터셋에 대한 계산을 진행하기 때문에 minimum 방향으로 곧장 나아가게 된다.

    • 하지만 SGD는 어떤 batch를 선택했느냐에 따라 minimum을 향해가는 방향이 달라지게 된다. 이렇게 minima의 방향을 알고서 향해가는 것이 아니기 때문에 local minima를 피해갈 수 있게 된다.

  • SGD의 단점

    • SGD는 하나의 축에 대해서는 minima이지만 다른 축에 대해서는 아닌 saddle point를 벗어나지 못하는 문제점이 있다.

    • SGD saddle point

    • 이를 해결하기 위한 SGD의 변형 알고리즘인 Momentum, NAG, Adadelta 등이 존재하며 이는 다음 포스트에서 살펴보려고 한다.

  • 출처

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×