주요 컨텐츠로 이동

AdaGrad

Databricks 무료로 시작하기

용어집으로 돌아가기경사하강법(Gradient descent)은 머신 러닝과 딥러닝 알고리즘에서 가장 보편적으로 쓰이는 최적화 방식입니다. 머신 러닝 모델을 트레이닝하는 데 쓰입니다.

경사하강법의 유형

경사하강법의 유형 - 배치 경사하강법, 확률적 경사하강법 및 미니 배치 경사하강법최신 머신 러닝 및 딥러닝 알고리즘에 쓰이는 경사하강법은 크게 세 가지 유형으로 나눌 수 있습니다.

  • 배치 경사하강법

배치 경사하강법(Batch Gradient Descent)이 그중 가장 간단한 유형입니다. 이것은 트레이닝 데이터세트의 각 예제를 대상으로 오류를 계산하지만, 트레이닝 예제를 모두 평가한 뒤에만 모델을 업데이트합니다.

  • 확률적 경사하강법

확률적 경사하강법(Stochastic Gradient Descent)은 트레이닝 데이터세트의 각 예제를 대상으로 오류를 계산하여 각각 업데이트합니다.

  • 미니 배치 경사하강법

미니 배치 경사하강법(Mini Batch Gradient Descent)의 경우 모든 예제를 검사하는 것이 아니라 배치 크기를 바탕으로 숫자가 작은 예제를 합친 다음 이러한 배치에 대하여 각각 업데이트를 수행합니다. 확률적 경사하강법은 보편적인 최적화 방식입니다. 개념상 단순하고, 효과적으로 구현할 수 있는 경우가 많습니다. 다만 여기에는 수동으로 조율해야 하는 매개변수(단계 크기)가 포함되어 있습니다. 이 조율 작업을 자동화할 방안으로 그간 여러 가지 선택지가 제안되었습니다. 그중 성공적인 방법으로 AdaGrad라는 것이 있습니다. 일반적인 확률적 아경도(subgradient) 방식에서는 주로 사전에 결정된 절차적 방식을 따르는데, 여기서는 관측 대상인 데이터의 특징을 무시합니다. 반대로 AdaGrad의 알고리즘은 관측 대상인 데이터 지오메트리의 지식을 초반 반복 작업 때 동적으로 포함하여 좀 더 유익한, 경사도 기반 학습을 수행합니다. AdaGrad는 두 개 버전으로 출시되었습니다. 하나는 Diagonal AdaGrad(실제로 쓰인 것은 이 버전)로, 이 버전의 주된 특징은 차원당 한 가지 학습 속도를 유지하며 변용하는 것입니다. 두 번째 버전은 Full AdaGrad라고 하며 방향당 한 가지 학습 속도를 유지합니다(예: 전체 PSD 매트릭스). Adaptive Gradient Algorithm(Adagrad)은 경사도 기반 최적화에 쓰이는 알고리즘입니다. 학습 속도가 구성 요소 면에서 매개변수에 따라 조정되는데, 이를 위해 지난 관측 결과 지식을 포함합니다.  빈도가 낮은 기능과 관련된 매개변수의 경우 큰 규모의 업데이트(예: 학습 속도가 빠름), 빈도가 높은 것인 경우 작은 규모의 업데이트(즉 학습 속도가 느림)를 수행합니다. 작은 업데이트를 수행하므로, 희소(sparse) 데이터(NLP 또는 이미지 인식)를 다루는 데 적합합니다. 각각의 매개변수마다 자기 나름의 학습 속도가 있어 희소 경사도와 관련된 문제가 발생할 때 성능을 개선해줍니다.

AdaGrad를 사용하여 얻을 수 있는 장점

  • 학습 속도를 수동으로 조율할 필요가 없어짐
  • 수렴이 더 빠르고 안정적 - 가중치 배율이 고르지 않을 때, 단순한 SGD에 비해
  • 마스터 단계의 크기에 크게 좌우되지 않음

추가 자료

용어집으로 돌아가기