최적화

1. 하이퍼파라미터

  • 모델의 가중치 파라미터(Weight Parameter)는 보통 경사하강법을 통해 데이터를 기반으로 자동으로 최적화
  • 하이퍼파라미터는 모델의 성능에 영향을 끼치지만 자동으로 최적화되지 않는 파라미터
  • 대표적인 하이퍼파라미터는 신경망의 깊이와 너비, 학습률, 활성함수의 종류 등이 있음
  • 성능에 큰 영향을 주는 하이퍼파라미터들을 위주로 먼저 튜닝하여 최소한의 실험을 통해 최고의 성능을 이끌어 내야 함

 

1.1. 학습률

  • 대표적인 하이퍼파라미터
  • 학습률의 설정에 따라 모델의 학습 경향이 매우 달라질 수 있음
  • 학습 초반에는 큰 학습률이 선호되고 학습 후반에는 작은 학습률이 선호됨
  • 이를 응용하여 각 가중치 파라미터별 학습 진행 정도에 따라 학습률을 다르게 자동 적용할 수 있음

 

2. 최적화

  • ML 모델의 궁극적인 목표는 손실 함수의 최소값에 도달하는 것
  • 최적화는 모델에 대한 최적의 매개변수를 찾는 프로세스
  • Optimizer는 모델의 매개변수를 조정하여 손실 함수를 최소화하는 데 기여하고 모델을 최적화

출처: Deep Learning with Python

 

2.2. 주요 Optimzer

출처: https://insideaiml.com/blog/Optimizers-in-Machine-Learning-and-Deep-Learning.-1048

2.2.1. 경사 하강법 (Gradient Descent)

  • 손실 함수의 기울기 방향으로 파라미터를 업데이트하여 최솟값을 찾는 가장 기본적인 방법
  • 간단하고 구현이 쉽지만, 학습률에 민감하며 지역 최솟값에 빠질 위험이 있음
  • Batch Gradient Descent: 전체 데이터를 이용하여 기울기를 계산하고 한 번에 파라미터를 업데이트. 메모리 소모가 크고, 큰 데이터셋에서는 계산 시간이 오래 걸림
  • Stochastic Gradient Descent (SGD): 한 개의 데이터를 이용하여 기울기를 계산하고 파라미터를 업데이트. 빠르지만, 학습 과정이 불안정할 수 있음
  • Mini-batch Gradient Descent: 배치 사이즈만큼의 데이터를 이용하여 기울기를 계산하고 파라미터를 업데이트. Batch GD와 SGD의 장점을 모두 가지고 있음

 

2.2.2. 모멘텀 (Momentum)

  • 시작부터 매번 계산된 그래디언트를 누적하는 형태
  • 지역 최소값에 빠질 가능성을 줄임
  • 최솟값으로 향하는 속도를 가속화할 수 있음
  • 여전히 학습률의 튜닝이 필요함

 

 

2.2.3. AdaGrad

  • 최초로 제안된 적응형 학습률 알고리즘
  • 가중치 파라미터마다 별도의 학습률을 가짐
  • 각 가중치 파라미터의 학습률은 가중치 파라미터가 없데이터될수록 반비례하여 작아짐
  • 업데이트가 많이 된 파라미터의 경우 작은 학습률을 갖게되고, 업데이터가 적게된 파라미터의 경우 큰 학습률을 갖게 됨
  • 단점으로는 학습이 진행됨에 따라 파라미터 없데이터가 많이 될 경우 학습률이 매우 작아져서 그래디언트가 크더라도 업데이트가 잘 되지 않을 수 있음

 

2.2.4. Adam

  • 기존 적응형 학습률 방식에 모멘텀이 추가된 알고리즘으로 가장 보편적으로 쓰이는 알고리즘
  • 기존 하이퍼파라미터인 학습률 이외에도 하이퍼파라미터가 2개 추가됨