IT

옵티마이저(Optimizer)

rimicode 2022. 6. 4. 16:42
728x90
반응형
SMALL

옵티마이저는 경사를 내려가는 방법을 결정

일반적인 경사 하강법(GD)에서는 모든 입력 데이터에 대한 손실 함수의 기울기를 계산한 후 가중치 업데이트

즉, Iteration 마다 모든 데이터를 다 사용

입력 데이터가 적다면 이 방법으로도 빠르게 가중치 갱신 가능

 

실제로는 큰 데이터를 다루기 때문에 모든 데이터에 대해 손실을 계산하는 과정이 굉장히 오레 걸림


확률적 경사 하강법(Stochastic Gradient Descent, SGD)

전체 데이터에서 하나의 데이터를 뽑아서 신경망에 입력한 후 손실을 계산

그 손실 정보를 역전파하여 신경망의 가중치를 업데이트

Iteration 마다 1개의 데이터만 사용

가중치를 빠르게 업데이트 할 수 있다는 장점

1개의 데이터만 보기 때문에 학습 과정에서 불안정한 경사 하강을 보인다는 단점

stochastic Gradient Descent
Gradient Descent

위의 그림에서 확률적 경사 하강법과 일반적인 경사 하가업에서 경사 하강이 어떻게 일어나는지 차이를 볼 수 있음

이 두 방법을 적절히 융화한 미니 배치 (Mini-bagch) 경사 하강법이 당장

N개의 데이터로 미니 배치를 구성하여 해당 미니 배치를 신경망에 입력한 후 이 결과를 바탕으로 가중치 업데이트

즉, Iteration 마다 N(= 배치 사이즈)개 데이터 사용

일반적으로 두 방법의 장점을 적절히 융화한 미니 배치 경사 하강법을 많이 사용

Mini-Batch Gradient Descent

  • 배치 사이즈 (Batch Size)
    미니 배치 경사 하강법에서 사용하는 미니 배치의 크기
    일반적으로 배치 사이즈는 2의 배수로 설정하며, 메모리 크기가 허락한다면 큰 배치 사이즈를 쓰는 것이 학습을 안정적으로 진행할 수 있음
  • # of Data, Epoch, 배치 사잊, iteration 관계
    Epcohs는 데이터셋 전체를 몇 번이나 반복하여 학습할 지를 결정
    Iteration은 순전파-역전파 1회, 즉 가중치를 한 번 수정하는 단위
    따라서 데이터셋을 이루는 데이터의 수, 배치 사이즈, Iteration 식은 
    # of Data = Batch_size X Iteration

여러가지 옵티마이저 중에서 어떤 것이 가장 좋다고 말하기는 어려움

문제마다, 데이터마다 달라지기 때문에 여러 옵티마이저를 적용하면서 서로 비교

최적의 하이퍼파라미터를 찾아보면서 여러 옵티마이저 비교

728x90
반응형
LIST