초매개변수 조정 개요

초매개변수 조정에서는 모델을 학습시킬 때 Google Cloud의 처리 인프라를 활용하여 다양한 초매개변수 구성을 테스트합니다. 이를 통해 초매개변수 값을 최적화하여 모델의 예측 정확성을 극대화할 수 있습니다.

초매개변수란?

초매개변수는 학습 프로세스 자체를 제어하는 데이터를 포함합니다.

학습 애플리케이션은 모델을 학습시키면서 다음과 같은 세 가지 데이터 카테고리를 처리합니다.

  • 입력 데이터(학습 데이터)는 머신러닝 문제와 관련하여 중요한 특성을 포함하는 개별 레코드(인스턴스)의 컬렉션입니다. 학습 중에 이 데이터는 비슷한 데이터의 새 인스턴스를 정확히 예측할 수 있도록 모델을 구성하는 데 사용됩니다. 그러나 입력 데이터의 값은 어떠한 경우에도 모델에 직접 포함되지 않습니다.

  • 모델의 매개변수는 선택한 머신러닝 기법에서 데이터를 조정하는 데 사용하는 변수입니다. 예를 들어 심층신경망(DNN)은 처리 노드(뉴런)로 구성되며, 데이터가 네트워크를 통과하면서 각 노드에서 데이터에 대한 작업이 수행됩니다. DNN을 학습시킬 때 각 노드의 가중치 값은 해당 노드가 최종 예측에 영향을 미치는 정도를 나타냅니다. 이러한 가중치가 모델 매개변수의 예입니다. 모델의 매개변수는 비슷한 데이터로 작동하는 같은 유형의 여러 모델을 서로 구분하므로 모델 자체라고 보아도 무방합니다.

  • 초매개변수는 학습 프로세스 자체를 제어하는 변수입니다. 예를 들어 DNN을 디자인할 때는 입력 및 출력 레이어 사이에 사용할 숨겨진 노드 수를 결정하고 숨겨진 각 레이어에 사용할 노드 수를 결정하는 과정이 포함됩니다. 이러한 변수는 학습 데이터와 직접 관련되지 않는 구성 변수입니다. 매개변수는 학습 작업 중에 변화할 수 있지만, 초매개변수는 일반적으로 작업 중에 일정합니다.

모델 매개변수는 모델의 작업을 통해 데이터를 실행하고, 결과 예측을 각 데이터 인스턴스의 실제 값과 비교하고, 정확성을 평가하고, 최선의 값을 찾아낼 때까지 조정하는 학습 프로세스에 의해 최적화, 다른 표현으로 '조정'됩니다. 초매개변수는 전체 학습 작업을 실행하고 집계된 정확성을 확인하고 조절하는 방식으로 조정됩니다. 두 경우 모두 모델의 구성을 수정하면서 문제를 처리하는 최상의 조합을 찾아냅니다.

Vertex AI 초매개변수 조정과 같은 자동화 기술이 없다면 학습을 수없이 실행하면서 초매개변수를 직접 조정하여 최적의 값을 찾아내야 합니다. 초매개변수 조정은 최상의 초매개변수 설정을 판단하는 과정을 쉽고 간편하게 만들어 줍니다.

초매개변수 조정의 원리

초매개변수 조정은 지정된 제한 범위 내에 설정된 선택한 초매개변수의 값으로 애플리케이션을 여러 번에 걸쳐 학습하려는 시도에 따라 작동합니다. Vertex AI는 각 시행 결과를 추적하고 후속 시행에 맞게 조정합니다. 작업이 끝나면 모든 시행 요약과 함께 지정한 기준에 따라 가장 효과적으로 판명된 값 구성을 확인할 수 있습니다.

초매개변수 조정 시에는 Vertex AI와 학습 애플리케이션 간의 명시적인 통신이 필요합니다. 학습 애플리케이션은 모델에 필요한 모든 정보를 정의합니다. 조정할 초매개변수(변수) 및 각 시도를 평가하는 데 사용되는 타겟 변수를 정의합니다.

초매개변수 조정을 위한 Bayesian 최적화에 대해 자세히 알아보세요.

Bayesian 최적화 이외에 Vertex AI는 초매개변수 조정 작업 간 최적화를 수행합니다. 목표 함수만 변경하거나 새 입력 열을 추가하면서 유사한 여러 모델로 초매개변수 조정을 수행하면 Vertex AI는 시간에 따라 점점 개선되며 초매개변수 조정을 효율화할 수 있습니다.

초매개변수 조정의 최적화 대상

초매개변수 조정은 초매개변수 측정항목이라고 부르는 지정된 타겟 변수를 최적화합니다. 일반적인 측정항목은 평가 실행 시 계산되는 모델 정확성입니다. 측정항목은 숫자여야 합니다.

초매개변수 조정 작업을 구성할 때는 각 측정항목의 이름과 목표를 정의합니다. 이 목표에 따라 이 측정항목의 값을 최대화 또는 최소화하기 위해 모델을 조정할지 여부가 지정됩니다.

Vertex AI가 측정항목을 가져오는 방법

cloudml-hypertune Python 패키지를 사용하여 측정항목을 Vertex AI로 전달합니다. 이 라이브러리는 Vertex AI에 측정항목을 보고하는 도우미 함수를 제공합니다.

초매개변수 측정항목 보고에 대해 자세히 알아보기

초매개변수 값의 흐름

초매개변수 조정을 사용하지 않고 학습 애플리케이션에서 원하는 방법을 사용하여 초매개변수를 직접 설정할 수 있습니다. 예를 들어 기본 애플리케이션 모듈에 명령줄 인수를 전달하거나 애플리케이션에 구성 파일로 입력하여 초매개변수를 구성할 수 있습니다.

초매개변수 조정을 사용할 때는 다음 절차에 따라 조정에 사용하는 초매개변수 값을 설정해야 합니다.

  • 기본 학습 모듈에서 조정 대상인 각 초매개변수에 대한 명령줄 인수를 정의합니다.

  • 애플리케이션의 코드에서 이러한 인수에 전달된 값을 사용하여 초매개변수를 설정합니다.

초매개변수 조정 작업을 구성할 때는 조정할 각 초매개변수, 데이터 유형, 시도할 값 범위를 정의합니다. 기본 모듈에서 정의한 해당 인수와 동일한 이름으로 각 초매개변수를 식별합니다. 학습 서비스는 애플리케이션을 실행할 때 해당 이름을 사용하는 명령줄 인수를 포함합니다.

명령줄 인수 파싱을 위한 요구사항 자세히 알아보기

조정할 초매개변수 선택

조정할 초매개변수를 선택하는 방법에 대해서 보편적으로 권장되는 사항은 거의 없습니다. 사용하는 머신러닝 기법을 다루어 본 경험이 있다면 초매개변수의 동작을 어느 정도 파악하고 있을 것입니다. 머신러닝 커뮤니티에서 조언을 구할 수도 있습니다.

무엇보다 선택에 따른 영향을 정확히 이해하는 것이 중요합니다. 조정하기로 선택한 모든 초매개변수는 조정 작업이 성공하는 데 필요한 시행 수를 증가시킬 가능성이 있습니다. Vertex AI에서 초매개변수 조정 작업을 실행할 때 청구되는 금액은 초매개변수 조정 작업으로 시작된 시도 기간을 기준으로 합니다. 조정할 초매개변수를 신중하게 선택함으로써 초매개변수 조정 작업의 시간과 비용을 줄일 수 있습니다.

초매개변수 데이터 유형

ParameterSpec 객체에서 매개변수 값 사양의 인스턴스로 초매개변수 데이터 유형을 지정합니다. 다음 표에서는 지원되는 매개변수 값 사양을 보여줍니다.

유형 데이터 유형 값 범위 값 데이터
DoubleValueSpec DOUBLE minValuemaxValue 부동 소수점 값
IntegerValueSpec INTEGER minValuemaxValue 정수 값
CategoricalValueSpec CATEGORICAL categoricalValues 카테고리 문자열 목록
DiscreteValueSpec DISCRETE discreteValues 오름차순 값 목록

초매개변수 조정

ParameterSpec 객체에서 이 초매개변수로 확장이 수행되도록 지정할 수 있습니다. 확장은 DOUBLE 및 INTEGER 데이터 유형에 권장됩니다. 사용 가능한 확장 유형은 다음과 같습니다.

  • SCALE_TYPE_UNSPECIFIED: 이 초매개변수에는 확장이 적용되지 않습니다.
  • UNIT_LINEAR_SCALE: 가능한 공간을 0부터 1까지 선형적으로 확장합니다.
  • UNIT_LOG_SCALE: 가능한 공간을 0부터 1까지 대수적으로 확장합니다. 전체 가능한 공간은 엄격하게 양수여야 합니다.
  • UNIT_REVERSE_LOG_SCALE: 가능한 공간을 0부터 1까지 '역방향' 대수적으로 확장합니다. 결과적으로 가능한 공간의 상단에 가까운 값은 하단 근처의 포인트보다 더 넓게 분포합니다. 전체 가능한 공간은 엄격하게 양수여야 합니다.

조건부 초매개변수

ConditionalParameterSpec 객체를 사용하면 해당 상위 초매개변수의 값이 지정된 조건과 일치할 때 시도에 초매개변수를 추가할 수 있습니다.

예를 들어 선형 회귀 또는 심층신경망(DNN)을 사용하여 최적 모델을 찾기 위한 목표로 초매개변수 조정 작업을 정의할 수 있습니다. 조정 작업이 학습 방법을 지정할 수 있도록 LINEAR_REGRESSIONDNN 옵션을 사용해서 training_method라는 범주형 초매개변수를 정의합니다. training_methodLINEAR_REGRESSION이면 조정 작업으로 학습률에 대한 초매개변수를 지정해야 합니다. training_methodDNN이면 조정 작업으로 학습률숨겨진 레이어 수에 대한 매개변수를 지정해야 합니다.

숨겨진 레이어 수는 시도의 training_methodDNN일 때만 적용될 수 있으므로, training_methodDNN일 때 num_hidden_layers라는 초매개변수를 추가하는 조건부 매개변수를 정의합니다.

학습률은 두 training_method 옵션 모두에 사용되므로 조건부 초매개변수를 공유할지 여부를 결정해야 합니다. 초매개변수가 공유된 경우에는 조정 작업에서 학습률 조정을 위해 LINEAR_REGRESSIONDNN 시도에서 학습된 항목이 사용됩니다. 이 경우 LINEAR_REGRESSION을 사용하는 모델 학습의 학습률이 DNN을 사용하는 모델 학습의 학습률에 영향을 주지 않기 때문에 각 training_method에 대해 학습률을 별개로 지정하는 것이 더 적합합니다. 따라서 다음 조건부 초매개변수를 정의합니다.

  • training_methodLINEAR_REGRESSION일 때 추가되는 learning_rate라는 초매개변수
  • training_methodDNN일 때 추가되는 learning_rate라는 초매개변수

조건부 초매개변수를 사용하면 작업을 그래프로 조정하기 위한 초매개변수를 정의할 수 있습니다. 이를 통해 고유 초매개변수 종속 항목에 따라 서로 다른 학습 기법을 사용하여 학습 프로세스를 조정할 수 있습니다.

검색 알고리즘

StudySpec 객체에 검색 알고리즘을 지정할 수 있습니다. 알고리즘을 지정하지 않으면 작업에 기본 Vertex AI 알고리즘이 사용됩니다. 기본 알고리즘은 매개변수 공간으로 검색이 보다 효율적인 최적 솔루션에 도달할 수 있도록 Bayesian 최적화를 적용합니다.

사용 가능한 값은 다음과 같습니다.

  • ALGORITHM_UNSPECIFIED: 검색 알고리즘을 지정하지 않을 때의 동작과 같습니다. Vertex AI에서 기본 알고리즘을 사용합니다. 즉, Bayesian 최적화를 적용하여 가능한 초매개변수 값의 공간을 검색하므로 초매개변수 집합에 가장 효과적인 기법을 발휘합니다.

  • GRID_SEARCH: 가능한 공간 내에서 단순 그리드 검색을 수행합니다. 이 옵션은 가능한 공간의 포인트 수보다 큰 시도 수를 지정할 때 특히 유용합니다. 이러한 경우 그리드 검색을 지정하지 않으면 Vertex AI 기본 알고리즘이 중복 제안을 생성할 수 있습니다. 그리드 검색을 사용하려면 모든 매개변수는 INTEGER, CATEGORICAL 또는 DISCRETE 유형이어야 합니다.

  • RANDOM_SEARCH: 가능한 공간 내에서 단순 무작위 검색을 수행합니다.

다음 단계