와이드 앤 딥 기본 제공 알고리즘을 사용한 학습

AI Platform Training의 기본 제공 알고리즘을 사용하여 학습하면 학습 코드를 작성하지 않고도 데이터세트를 제출하고 모델을 학습시킬 수 있습니다. 이 페이지에서는 와이드 앤 딥 기본 제공 알고리즘 작동 방식과 이를 사용하는 방법을 설명합니다.

개요

이 기본 제공 알고리즘은 다음과 같이 사전 처리 및 학습을 수행합니다.

  1. 전처리: AI Platform Training은 범주형 데이터와 수치 데이터의 조합을 모든 수치 데이터 세트로 처리하여 학습에 사용할 수 있도록 준비합니다.
  2. 학습: AI Platform Training은 제공된 데이터 세트 및 모델 매개변수와 함께 TensorFlow의 와이드 앤 딥 에스티메이터를 사용하여 학습을 실행합니다.

제한사항

와이드 앤 딥 기본 제공 알고리즘을 사용한 학습에서는 다음 기능이 지원되지 않습니다.

  • 멀티 GPU 학습. 기본 제공 알고리즘은 GPU를 한 번에 하나만 사용합니다. 머신 하나에서 GPU를 여러 개 사용하는 학습을 최대한 활용하려면 학습 애플리케이션을 만들어야 합니다. 자세한 내용은 머신 유형을 참조하세요.
  • TPU를 사용한 학습. TPU를 사용하여 학습하려면 학습 애플리케이션을 만들어야 합니다. 자세한 내용은 TPU를 사용한 학습 작업 실행 방법을 참조하세요.
  • 분산 학습. AI Platform Training에서 분산 학습 작업을 실행하려면 학습 애플리케이션을 만들어야 합니다.

지원되는 머신 유형

지원되는 AI Platform Training 확장 등급과 머신 유형은 다음과 같습니다.

입력 데이터 형식 지정

데이터 세트의 각 행은 인스턴스 1개를 나타내며, 데이터 세트의 각 열은 특성 값을 나타냅니다. 타겟 열은 예측할 값을 나타냅니다.

CSV 파일 준비

입력 데이터는 UTF-8로 인코딩된 CSV 파일이어야 합니다. 학습 데이터가 범주형 값과 숫자 값으로만 구성된 경우, Google의 전처리 모듈을 사용하여 누락된 숫자 값을 입력하고, 데이터 세트를 분할하고, 누락 값이 10% 이상인 행을 삭제할 수 있습니다. 그렇지 않은 경우 자동 전처리를 사용 설정하지 않고 학습을 실행할 수 있습니다.

다음 요구사항을 충족하는 입력 CSV 파일을 준비해야 합니다.

  • 헤더 행을 삭제합니다. 헤더 행에는 각 열의 라벨이 있습니다. 학습 데이터의 일부인 나머지 데이터 인스턴스와 함께 제출되지 않도록 헤더 행을 삭제합니다.
  • 타겟 열이 첫 번째 열인지 확인합니다. 타겟 열에는 예측할 값이 포함됩니다. 분류 알고리즘의 경우, 타겟 열의 모든 값은 클래스 또는 카테고리입니다. 회귀 알고리즘의 경우, 타겟 열의 모든 값은 숫자 값입니다.

정수 값 처리

정수 값의 의미가 모호하여 자동 사전 처리에서 정수 값의 열이 문제가 될 수 있습니다. AI Platform Training은 정수 값을 처리하는 방법을 자동으로 결정합니다. 기본적으로

  • 모든 정수 값이 고유한 경우 열은 인스턴스 키로 취급됩니다.
  • 고유한 정수 값이 몇 개만 있는 경우 열은 범주형으로 처리됩니다.
  • 그렇지 않으면 열의 값이 부동으로 변환되고 숫자로 처리됩니다.

이러한 기본 결정을 재정의하려면 다음 안내를 따르세요.

  • 데이터를 숫자로 처리해야 하는 경우 열의 모든 정수 값을 부동 소수점으로 변환합니다(예: {101.0, 102.0, 103.0}).
  • 데이터를 범주형으로 처리해야 하는 경우 열의 모든 정수 값 앞에 숫자가 아닌 프리픽스를 추가합니다(예: {code_101, code_102, code_103}).

Cloud Storage 버킷 권한 확인

데이터를 저장하려면 AI Platform Training 작업을 실행하는 데 사용하는 것과 동일한 Google Cloud 프로젝트에서 Cloud Storage 버킷을 사용합니다. 그렇지 않으면 데이터가 저장된 Cloud Storage 버킷에 AI Platform Training 액세스 권한을 부여합니다.

와이드 앤 딥 학습 작업 제출

이 섹션에서는 와이드 앤 딥 기본 제공 알고리즘을 사용하여 학습 작업을 제출하는 방법을 설명합니다.

Google Cloud Console에서 각 초매개변수에 대한 간략한 설명과 기본 제공 와이드 앤 딥 알고리즘의 참조에서 자세한 설명을 확인할 수 있습니다.

콘솔

  1. Google Cloud Console의 AI Platform Training 작업 페이지로 이동합니다.

    AI Platform Training 작업 페이지

  2. 새 학습 작업 버튼을 클릭합니다. 아래 표시된 옵션 중에서 기본 제공 알고리즘 학습을 클릭합니다.

  3. 새 학습 작업 만들기 페이지에서 기본 제공 와이드 앤 딥을 선택하고 다음을 클릭합니다.

  4. 사용 가능한 모든 매개변수에 대해 자세히 알아보려면 Google Cloud Console의 링크를 클릭해 기본 제공 와이드 앤 딥 참조의 자세한 설명을 참조하세요.

gcloud

  1. [VALUES-IN-BRACKETS]에 고유 값을 입력하여 작업 환경 변수를 설정합니다.

       # Specify the name of the Cloud Storage bucket where you want your
       # training outputs to be stored, and the Docker container for
       # your built-in algorithm selection.
       BUCKET_NAME='[YOUR-BUCKET-NAME]'
       IMAGE_URI='gcr.io/cloud-ml-algos/wide_deep_learner_cpu:latest'
    
       # Specify the Cloud Storage path to your training input data.
       TRAINING_DATA='gs://[YOUR_BUCKET_NAME]/[YOUR_FILE_NAME].csv'
    
       DATASET_NAME='census'
       ALGORITHM='wide_deep'
       MODEL_TYPE='classification'
    
       DATE='date '+%Y%m%d_%H%M%S''
       MODEL_NAME="${DATASET_NAME}_${ALGORITHM}_${MODEL_TYPE}"
       JOB_ID="${MODEL_NAME}_${DATE}"
    
       JOB_DIR="gs://${BUCKET_NAME}/algorithm_training/${MODEL_NAME}/${DATE}"
    
  2. gcloud ai-platform jobs training submit를 사용하여 학습 작업을 제출합니다.

       gcloud ai-platform jobs submit training $JOB_ID \
          --master-image-uri=$IMAGE_URI --scale-tier=BASIC --job-dir=$JOB_DIR \
          -- \
          --preprocess --model_type=$MODEL_TYPE --batch_size=250 --learning_rate=0.1 \
          --dnn_learning_rate=0.005 --dnn_dropout=0.1 --hidden_units=10,10,10 \
          --use_wide --embed_categories \
          --max_steps=1000 --training_data_path=$TRAINING_DATA
    
  3. gcloud로 로그를 확인하여 학습 작업 상태를 모니터링합니다. gcloud ai-platform jobs describegcloud ai-platform jobs stream-logs를 참조하세요.

       gcloud ai-platform jobs describe ${JOB_ID}
       gcloud ai-platform jobs stream-logs ${JOB_ID}
    

사전 처리 작동 방식

범주형 데이터 및 수치 데이터에 자동 전처리가 수행됩니다. 전처리 루틴은 먼저 데이터를 분석한 후 변환합니다.

분석

먼저 AI Platform Training이 각 열의 데이터 유형을 자동으로 감지하고 각 열의 처리 방법을 식별하고 열의 데이터 통계 일부를 계산합니다. 이 정보는 metadata.json 파일에 저장됩니다.

AI Platform Training은 타겟 열의 유형을 분석하여 제공된 데이터 세트가 회귀용 또는 분류용인지 식별합니다. 이러한 분석이 개발자가 선택한 model_type과 충돌하면 오류가 발생합니다. 확실하지 않은 경우에는 데이터 형식을 명확하게 지정하여 타겟 열 처리 방법을 명시해야 합니다.

  • 유형: 열은 숫자형 또는 범주형일 수 있습니다.

  • 처리: AI Platform Training은 각 열의 처리 방법을 다음과 같이 식별합니다.

    • 열의 모든 행에 단일 값이 있으면 열은 상수로 처리됩니다.
    • 열이 범주형이고 모든 행에 고유 값이 있으면 열은 row_identifier로 처리됩니다.
    • 열이 부동 소수점 값이 있는 숫자형 또는 정수 값이 있는 숫자형이고 고유 값이 여러 개 있으면 열은 숫자로 처리됩니다.
    • 열이 정수 값이 있는 숫자형이고 열에 고유 값이 부족하면 열은 정수 값이 ID 또는 어휘인 범주형 열로 처리됩니다.
      • 열에 있는 고유 값 수가 입력 데이터 세트에 있는 행 수의 20% 미만이면 열은 고유 값이 부족한 것으로 간주됩니다.
    • 열이 범주형이고 카디널리티가 높으면 열은 해싱으로 처리됩니다. 여기서 해시 버킷 수는 열에 있는 고유 값 수의 제곱근과 동일합니다.
      • 고유 값 수가 데이터 세트에 있는 행 수의 제곱근보다 크면 범주형 열은 카디널리티가 높다고 간주됩니다.
    • 열이 범주형이고 고유 값 수가 데이터 세트에 있는 행 수의 제곱근보다 작거나 같으면 열은 어휘가 있는 일반 범주형 열로 처리됩니다.
  • 통계: AI Platform Training은 식별된 열 유형 및 처리 방식을 토대로 이후 단계에서 열을 변환하는 데 사용되는 통계를 다음과 같이 계산합니다.

    • 열이 숫자형이면 평균 값과 분산 값을 계산합니다.
    • 열이 범주형이고 처리 방식이 ID 또는 어휘이면 열에서 고유 값을 추출합니다.
    • 열이 범주형이고 처리 방식이 해싱이면 열의 카디널리티에 대한 해시 버킷 수를 계산합니다.

변환

데이터 세트의 초기 분석이 완료되면 AI Platform Training은 데이터 세트에 적용된 유형, 처리 방식, 통계를 기준으로 데이터를 변환합니다. AI Platform Training은 다음 순서로 변환을 수행합니다.

  1. 분할률을 지정하는 경우 학습 데이터 세트를 검증 데이터 세트와 테스트 데이터 세트로 분할합니다.
  2. 특성이 10% 이상 누락된 행을 삭제합니다.
  3. 열 평균 값을 사용하여 누락된 숫자 값을 입력합니다.

변환 예시

누락된 값이 10%인 행을 삭제합니다. 다음 예시에서는 행에 값이 10개 있다고 가정합니다. 각 예시 행에는 간단한 설명을 위해 일부 내용만 표시되어 있습니다.

행 문제 원래 값 변환된 값 설명
예시 행에 누락 값 없음 [3, 0.45, ...,
'fruits', 0, 1]
[3, 0.45, ...,
1, 0, 0, 0, 1]
'fruits' 문자열이 원-핫 인코딩에서 '1, 0, 0' 값으로 변환됩니다. 이 작업은 나중에 TensorFlow 그래프에서 수행됩니다.
누락 값이 너무 많음 [3, 0.45, ...,
'fruits', __, __]
행이 삭제됨 행의 값이 10% 이상 누락되었습니다.
숫자 값 누락 [3, 0.45, ...,
'fruits', 0, __]
[3, 0.45, ...,
1, 0, 0, 0, 0.54]
  • 누락된 숫자 값이 열 평균 값으로 대체됩니다. 이 예시에서 평균 값은 0.54입니다.
  • 'fruits' 문자열이 원-핫 인코딩에서 '1, 0, 0' 값으로 변환됩니다. 이 작업은 나중에 TensorFlow 그래프에서 수행됩니다.
범주형 값 누락 [3, 0.45, ...,
__, 0, 1]
[3, 0.45, ...,
0, 0, 0, 0, 1]
  • 누락된 범주형 값이 원-핫 인코딩에서 '0, 0, 0' 값으로 변환됩니다. 이 작업은 나중에 TensorFlow 그래프에서 수행됩니다.

특성 열

변환 중에는 열이 처리되지 않습니다. 대신 분석 중에 생성된 메타데이터가 AI Platform Training에 전달되어 특성 열이 생성됩니다.

열 유형 열 처리 결과 특성 열
숫자 (모든 열 처리 유형) tf.feature_column.numeric_column

평균과 분산 값은 값을 표준화하는 데 사용됩니다.
new_value = (input_value - mean) / sqrt(variance)
특성은 모델의 심층신경망 부분으로 이동합니다.

범주형 ID tf.feature_column.categorical_column_with_identity
범주형 어휘 tf.feature_column.categorical_column_with_vocabulary_list
범주형 해싱 tf.feature_column.categorical_column_with_hash_bucket
범주형 상수 또는 행 식별자 무시됩니다. 특성 열이 생성되지 않습니다.

추가 특성 열

DNN 모델의 와이드 파트(use_wide)에서 범주형 열을 사용하거나 모델의 딥 파트(embed_categories)에 이를 임베딩할 수 있습니다. 선택에 따라 다음과 같은 특성 열이 추가됩니다.

use_wide 사용 설정됨 embed_categories 사용 설정됨 결과
True True 또는 False 특성이 모델의 와이드 파트로 이동합니다.
True 또는 False True 범주형 열의 임베딩 특성 열이 생성됩니다. 여기서 임베딩 차원은 해당 열에 있는 범주 개수의 제곱근의 올림으로 설정됩니다. 이 임베딩 특성 열은 모델의 딥 파트로 이동합니다.
False False 범주형 열의 표시 열이 생성됩니다. 이 표시 특성 열은 모델의 딥 파트로 이동합니다.

자동 사전 처리가 완료되면 AI Platform Training은 처리된 데이터세트를 작업 요청에서 지정된 디렉터리의 Cloud Storage 버킷으로 다시 업로드합니다.

다음 단계