2.5단계: 모델 선택

이제 데이터 세트를 조립하고 데이터의 주요 특성에 대한 유용한 정보를 얻었습니다. 다음으로 2단계에서 수집한 측정항목을 기반으로 사용할 분류 모델을 고려해야 합니다. 즉, '숫자 입력을 예상하는 알고리즘에 텍스트 데이터를 표시하는 방법'(데이터 사전 처리 및 벡터화라고 함), '어떤 유형의 모델을 사용해야 하나요?', '모델에 어떤 구성 매개변수를 사용해야 하나요?'와 같은 질문을 하게 됩니다.

수십 년간 연구한 결과 Google Cloud는 다양한 데이터 전처리 및 모델 구성 옵션에 액세스할 수 있습니다. 그러나 매우 다양한 옵션을 선택할 수 있으므로 복잡도와 문제의 구체적인 범위가 크게 증가합니다. 최선의 옵션이 명확하지 않을 수 있다는 점을 감안할 때, 직관을 통해 일부 옵션을 제거하여 가능한 모든 옵션을 철저히 시도하는 단순한 방법이 있을 것입니다. 이 경우 막대한 비용이 듭니다.

이 가이드에서는 텍스트 분류 모델을 선택하는 프로세스를 크게 간소화하려고 합니다. 특정 데이터 세트의 경우 학습에 필요한 계산 시간을 최소화하면서 정확성이 최대에 가까운 알고리즘을 찾는 것이 목표입니다. 다양한 유형의 문제 (특히 감정 분석 및 주제 분류 문제)에 대해 다수의 실험 (최대 450,000건)을 실행하여 12개의 데이터 세트를 사용하고 각 데이터 세트에 서로 다른 데이터 사전 처리 기법과 다른 모델 아키텍처를 교체했습니다. 이를 통해 최적의 선택에 영향을 주는 데이터 세트 매개변수를 식별할 수 있었습니다.

아래 모델 선택 알고리즘 및 플로우 차트는 실험을 요약한 것입니다. 이 용어에서 사용되는 모든 용어를 아직 이해하지 못하더라도 걱정하지 마세요. 다음 섹션에서는 이 섹션에 대해 더 자세히 설명합니다.

데이터 준비 및 모델 빌드 알고리즘

1. Calculate the number of samples/number of words per sample ratio.
2. If this ratio is less than 1500, tokenize the text as n-grams and use a
simple multi-layer perceptron (MLP) model to classify them (left branch in the
flowchart below):
  a. Split the samples into word n-grams; convert the n-grams into vectors.
  b. Score the importance of the vectors and then select the top 20K using the scores.
  c. Build an MLP model.
3. If the ratio is greater than 1500, tokenize the text as sequences and use a
   sepCNN model to classify them (right branch in the flowchart below):
  a. Split the samples into words; select the top 20K words based on their frequency.
  b. Convert the samples into word sequence vectors.
  c. If the original number of samples/number of words per sample ratio is less
     than 15K, using a fine-tuned pre-trained embedding with the sepCNN
     model will likely provide the best results.
4. Measure the model performance with different hyperparameter values to find
   the best model configuration for the dataset.

아래의 플로우 차트에서 노란색 상자는 데이터 및 모델 준비 프로세스를 나타냅니다. 회색 상자와 녹색 상자는 각 프로세스에서 고려한 선택사항을 나타냅니다. 녹색 상자는 각 프로세스에 권장되는 옵션입니다.

이 플로우 차트를 시작점으로 사용하여 낮은 컴퓨팅 비용으로 좋은 정확성을 얻을 수 있으므로 첫 번째 실험을 구성할 수 있습니다. 그런 다음 후속 반복을 통해 초기 모델을 계속 개선할 수 있습니다.

텍스트 분류 플로우 차트

그림 5: 텍스트 분류 플로우 차트

이 플로우 차트는 두 가지 주요 질문에 대한 답변을 제공합니다.

  1. 어떤 학습 알고리즘 또는 모델을 사용해야 할까요?

  2. 텍스트와 라벨 간의 관계를 효율적으로 학습하려면 데이터를 어떻게 준비해야 하나요?

두 번째 질문에 대한 답변은 첫 번째 질문에 대한 답변에 따라 다릅니다. 모델에 피드되는 데이터를 전처리하는 방법은 선택한 모델에 따라 다릅니다. 모델은 크게 2가지 카테고리, 즉 단어 순서 정보를 사용하는 모델 (시퀀스 모델)과 텍스트를 단순히 '가방'(텍스트 집합)으로 분류하는 모델 (N-그램 모델)으로 나눌 수 있습니다. 시퀀스 모델 유형에는 컨볼루셔널 신경망 (CNN), 순환 신경망 (RNN), 변형이 있습니다. N-그램 모델 유형에는 로지스틱 회귀, 간단한 다중 레이어 퍼셉트론(MLP 또는 완전 연결 신경망), 경사 부스팅 트리, 벡터 머신 지원이 있습니다.

실험 결과, '샘플 수'(S)와 '샘플당 단어 수'(W)의 비율이 높은 모델 상관관계를 관찰했습니다.

이 비율의 값이 작은 경우(<lt;1500), n-그램을 입력으로 취하는 작은 다중 레이어 퍼셉트론 (옵션 A라고 함)은 시퀀스 모델보다 최소한 성능이 더 우수합니다. MLP는 간단하게 이해하고 이해할 수 있으며 시퀀스 모델보다 훨씬 적은 컴퓨팅 시간을 사용합니다. 이 비율의 값이 큰 경우 (>= 1500) 시퀀스 모델(옵션 B)을 사용하세요. 다음 단계에서는 샘플/단어당 샘플 비율에 따라 선택한 모델 유형의 관련 하위 섹션 (A 또는 B 라벨이 지정됨)으로 건너뛸 수 있습니다.

IMDb 리뷰 데이터 세트의 경우 샘플/샘플당 단어 수 비율은 약 144입니다. 즉, MLP 모델을 만듭니다.