TensorFlow 機械学習ガイド : テキスト分類 (2) モデルの選択 (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 08/19/2018
* 本ページは、developers.google.com サイトの Machine Learning Guides : Text classification の以下のページを
翻訳した上で適宜、補足説明したものです:
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
Step 2.5: モデルを選択する
この時点で、データセットを集めてデータの主要な特性への洞察を得ました。次に、Step 2 で集めたメトリックに基づいて、どの分類モデルを使用するのが良いかを考えるべきです。これは次のような質問を尋ねることを意味します。「数値入力を想定するアルゴリズムに対してどのようにテキストデータを提供するか?」(これはデータ前処理とベクトル化と呼ばれます)、「モデルのどのタイプを使用するべきか?」、「モデルのためにどの構成パラメータを使用するべきか?」、等々。
数十年の研究のおかげで、データ前処理とモデル構成オプションの巨大な配列へのアクセスを持ちます。けれども、そこから選択する実行可能なオプションの非常に巨大な配列の利用可能性は手元の特定の問題の複雑さとスコープを多大に増大させます。最善のオプションが明白でないと仮定すると、素朴な解法は直感を通して幾つかの選択肢を除去しながら、総ての可能なオプションを徹底的に試すことでしょう。けれども、それは非常に高価でしょう。
このガイドでは、テキスト分類モデルを選択する過程を著しく単純化することを試みます。与えられたデータセットに対して、私達の目標は訓練に必要な計算時間を最小化しながら最大精度近くを達成するアルゴリズムを見つけることです。私達は12 データセットを使用し、各データセットに対して異なるデータ前処理技術と異なるモデル・アーキテクチャ間で変更することにより、異なるタイプ (特にセンチメント解析とトピック分類問題) の問題に渡り巨大な数 (~450K) の実験を実行しました。これは最適な選択に影響を与えるデータセット・パラメータを識別するのに役立ちます。
モデル選択アルゴリズムと下のフローチャートは私達の実験の要約です。それらで使用される用語の総てをまだ理解しない場合でも心配しないでください ; このガイドの次のセクションがそれらを深く説明します。
データ準備とモデル構築のためのアルゴリズム
- number of samples/number of words per sample (= サンプル数 / サンプル毎単語数) の比率を計算する。
- この比率が 1500 未満であれば、テキストを n-gram としてトークン化してそれらを分類するために単純な多層パーセプトロン (MLP) モデルを使用する (下のフローチャートの左側の枝) :
- サンプルを単語 n-gram に分割する ; n-gram をベクトルに変換する。
- ベクトルの重要性を点数づけしてそれからそのスコアを使用して top 20K を選択する。
- MLP モデルを構築する。
- 比率が 1500 より大きい場合、テキストをシークエンスとしてトークン化してそれらを分類するために sepCNN モデルを使用します (下のフローチャートの右側の枝) :
- サンプルを単語に分割する ; それらの頻度に基づいて top 20K 単語を選択する。
- サンプルを単語シークエンス・ベクトルに変換する。
- 元の number of samples/number of words per sample 比率が 15K 未満である場合、sepCNN モデルとともに再調整されて事前訓練された埋め込みの使用はおそらく最善の結果を提供するでしょう。
- データセットのための最善のモデル構成を見つけるために異なるハイパーパラメータでモデル性能を測定する。
下のチャートでは、黄色いボックスはデータとモデル準備の過程を示します。灰色のボックスと緑色のボックスは各過程のために考慮した選択を示します。緑色のボックスは各過程のための推奨される選択を示します。
このフローチャートを貴方の最初の実験を構築する開始点として使用できます、何故ならばそれは低い計算コストで良い精度を与えるからです。それから続く反復に渡り初期モデルを改良し続けることができます。
Figure 5: テキスト分類フローチャート
このフローチャートは 2 つの主要な質問に答えます :
- どの学習アルゴリズムかモデルを使用するべきでしょう?
- テキストとラベルの関係を効率的に学習するためにどのようにデータを準備するべきでしょう?
2 つ目の質問への答えは最初の質問への答えに依存します ; モデルに供給されるデータを前処理する方法はどのモデルを選択するかに依存します。モデルはおおまかに 2 のカテゴリに分類されます : 単語順序 (= ordering) 情報 (シークエンス・モデル) を使用するものと、テキストを単語の「バッグ」(セット) (= bags of words) (n-gram モデル) として単に見るものです。シークエンスモデルのタイプは畳み込みニューラルネットワーク (CNN)、リカレント・ニューラルネットワーク (RNN)、そしてそれらの変種を含みます。n-gram モデルのタイプはロジスティック回帰、単純な多層パーセプトロン (MLP、あるいは完全結合ニューラルネットワーク)、勾配ブースティング木そしてサポートベクターマシンを含みます。
私達の実験から、“number of samples” (S) の “number of words per sample” (W) への比率はどのモデルが上手く遂行するかに相関関係があることを観察しました。
この比率の値が小さい (<1500) とき、入力として n-gram を取る小さい多層パーセプトロン (オプション A と呼びます) はより良いあるいは少なくともシークエンスモデルと同程度に良いです。MLP は定義して理解するために単純で、そしてそれらはシークエンスモデルよりも遥かに少ない計算時間しかかかりません。この比率の値が大きい (>= 1500) とき、シークエンスモデル (オプション B) を使用します。
続くステップでは、 samples/words-per-sample に基づき選択したモデル・タイプのための関連するサブセクション (ラベル付けされた A または B) にスキップすることができます。
IMDb レビュー・データセットの場合では、samples/words-per-sample 比率は ~144 です。これは MLP モデルを作成することを意味します。
Note: 上のフローチャートを使用するとき、幾つかの理由のために、それは貴方の問題に対して最適な結果に必ずしも導かないかもしれないことに留意してください :
- 貴方の目標は異なるかもしれません。最短の可能な計算時間で達成され得る最善の精度のために最適化しました。代わりのフローはより良い結果を生成するかもしれません、例えば、AUC (area under the curve, 曲線下面積) のために最適化するときです。
- 典型的で一般的なアルゴリズムを選択しました。分野は発展し続けていますので、新しい最先端のアルゴリズムと拡張が貴方のデータに関係してより良く遂行するかもしれません。
- フローチャートを導出して検証するために幾つかのデータセットを使用した一方で、他のフローを使用することが好ましい貴方のデータセットに特有の性質があるかもしれません。
以上