ステップ 2.5: モデルを選択する

この時点で、データセットを組み立てて、データの主な特性に関する分析情報を取得しました。次に、ステップ 2 で収集した指標に基づいて、使用する必要がある分類モデルを検討する必要があります。つまり、「数値入力を想定するアルゴリズムにテキストデータをどのように提示するか」(データの前処理とベクトル化と呼びます)、「どのタイプのモデルを使用するか」、「モデルにどのような構成パラメータを使用するか」などです。

数十年にわたる調査の結果、さまざまなデータ前処理とモデル構成オプションを利用できるようになりました。ただし、非常に多くの実行可能なオプションを選択できる場合、複雑さと当面の問題が大幅に増加します。最善のオプションが明確でない可能性もあるため、単純なソリューションでは、考えられるすべてのオプションを完全に試行し、直感で選択を排除します。ただし、この方法は非常にコストがかかります。

このガイドでは、テキスト分類モデルを選択するプロセスを大幅に簡素化する方法について説明します。特定のデータセットの目標は、トレーニングに必要な計算時間を最小限に抑えつつ、ほぼ正確に近いアルゴリズムを実現することです。Google は、さまざまなタイプの問題(特に感情分析とトピック分類の問題)で多数のテスト(約 45 万)を実行しました。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: テキスト分類のフローチャート

このフローチャートでは次の 2 つの重要な質問に答えています。

  1. どの学習アルゴリズムまたは学習モデルを使用すべきか?

  2. テキストとラベルの関係を効率的に学習するために、データをどのように準備すればよいでしょうか。

2 番目の質問への回答は、最初の質問の答えによって異なります。モデルに供給されるデータの前処理方法は、選択したモデルによって異なります。モデルは、単語順序情報を使用するモデル(シーケンス モデル)と、テキストを単語の「バッグ」(セット)として捉えるモデル(n グラムモデル)の 2 つのカテゴリに分類できます。シーケンス モデルのタイプには、畳み込みニューラル ネットワーク(CNN)、再帰型ニューラル ネットワーク(RNN)およびそのバリエーションがあります。n グラム型モデルには、ロジスティック回帰シンプルな多層パーセプトロン(MLP、完全接続ニューラル ネットワーク)、勾配ブースティング ツリーサポート ベクターマシンなどがあります。

Google のテストでは、「サンプル数」(S)と「サンプルあたりの単語数」(W)の比率が、どのモデルのパフォーマンスが高いかと相関していることがわかっています。

この比率の値が小さい(< 1,500)場合、入力として n-gram を取る小さな多層パーセプロン(これをオプション A と呼びます)は、シーケンス モデルよりも優れたパフォーマンスを発揮します。MLP は、定義と理解が単純であり、シーケンス モデルよりもはるかに短いコンピューティング時間で済みます。この比率の値が大きい(>= 1500)場合は、シーケンス モデルを使用します(オプション B)。以下の手順では、サンプル数 / サンプルあたりの単語数の割合に基づいて選択したモデルタイプに関連するサブセクション(A または B というラベルが付いているセクション)までスキップできます。

IMDb レビュー データセットの場合、サンプルあたりのサンプル数の割合は約 144 です。これは、MLP モデルを作成することを意味します。