Visual Artificial Intelligence (AI)のチューニングガイド¶
このガイドでは、9つのクラスと約1,500の画像を含むボートのデータセットを使用して、Visual Artificial Intelligence (AI)の分類精度を最大化するための推奨方法を説明します。 データセットは こちらから入手できます。
class
のターゲットでプロジェクトを開始します。 構築が完了したら、最適化指標をLogLoss
から変更してAccuracy
を表示します。 交差検定スコアでは、上位モデルの精度が83.68%を達成したことがわかります。
以下のステップを使用して結果を改善します
1. 包括的モードで実行¶
クイックモードを使用した最初のモデリング実行では、使用可能な限られたブループリントのセットを探索して結果が生成されました。 しかし、包括的モードで実行した場合、さらに多くを利用できます。 右側ペインの モデリングの設定をするオプションをクリックし、包括的モデリングモードを選択して、精度を優先しながらモデリングプロセスを再実行し、追加のモデルを構築します。
その結果、精度が91.45%のモデルが生成されます。
2. 他の画像フィーチャライザーを探索¶
画像がモデルのブループリントのタスクとして数値(「特徴量化」)に変換されると、それをモデリングアルゴリズムに渡し、他の特徴量(数値、カテゴリー、テキストなど)と組み合わせることができます。 フィーチャライザーは、画像ファイルのバイナリコンテンツを入力として受け取り、さまざまなレベルの複雑さでその画像の主要な特性を表す特徴量ベクトルを生成します。 この特徴量ベクトルは、モデラーへの入力としてダウンストリームで使用されます。 DataRobotは、事前トレーニング済みのニューラルネットワークアーキテクチャをベースとしたいくつかのフィーチャライザーを提供しています。
他の画像フィーチャライザーでの改善を確認するには、リーダーボード上のトップモデルを選択し、使用されたフィーチャライザーを示すブループリントを表示します。
高度なチューニングタブから、現在のネットワークまでスクロールしてオプションのメニューを表示します。
別のnetwork
ハイパーパラメーターを試してください(下にスクロールし、変更ごとにチューニングの開始を選択します)。 使用可能な各画像フィーチャライザーで上位の包括的モードモデルをチューニングした後、パフォーマンスが最も高いモデルでこれらのフィーチャライザーのバリエーションをさらに探索できます。
3. 特徴量の粒度¶
フィーチャライザーは、シーケンシャルレイヤーで構成される深い畳み込みニューラルネットワークであり、各レイヤーは前のレイヤーからの情報を集約します。 最初のレイヤーは、ポイント、エッジ、コーナーなど、数ピクセルで構成される低レベルのパターンをキャプチャします。 次のレイヤーでは、形状やテクスチャーをキャプチャします。 最後のレイヤーはオブジェクトをキャプチャします。 ニューラルネットワークモデルから抽出する特徴量のレベルは、ニューラルネットワーク、チューニング、および結果の最適化から選択できます(レイヤーが多いほど実行時間が長くなります)。
特徴量の粒度オプション(最高、高、中、低)のトグルは、高度なチューニングメニューのnetwork
セクションの下にあります。
これらの任意の組み合わせが使用でき、問題 / データのコンテキストから、最も有用な情報を提供する可能性のある特徴量が特定できます。
4. Image augmentation¶
フィーチャライザーのチューニングの後、 画像オーグメンテーションを使用して入力データに対する変更を探索して、モデルの精度を向上させることができます。 既存の画像をランダムに変換してトレーニング用の新しい画像を作成することで、小さすぎるデータセットを使用してインサイトに満ちたプロジェクトを構築できます。
画像オーグメンテーションは、プロジェクト設定時に 画像オーグメンテーションの高度なオプションで、またはモデリング後に高度なチューニングで利用できます。
ドメインの専門知識が、どの変換が最大のインパクトを示すかについてのインサイトを提供できます。 それ以外の場合、開始するのに適切な場所は、rotation
、次にrotation + cutout
、それに続いて別の組み合わせです。
5. Classifierハイパーパラメーター¶
分類器(特徴量化ツールから画像特徴量エンコーディングを受信するコンポーネント)のトレーニング用のハイパーパラメーターも、高度なチューニングメニューでチューニング用に公開されます。
新しいハイパーパラメーターを設定するには、次のいずれかの方法で値を入力フィールドに値を入力します。
-
事前入力された値の一つを選択します(オレンジでリストされているいずれかの値をクリックすると、その値が値フィールドに入力されます。)
-
フィールドに値を入力します。 許容可能な値フィールドを参照してください。このフィールドには、数値入力の制約またはカテゴリー入力(「selects」)の事前定義済みの許容値のいずれかがリストされます。 特定の数値を入力するには、許容値の条件を満たす値または範囲を入力します。
上記のスクリーンショットでは、0.00001から1の間の様々な値を入力できます。次に例を示します。
- 0.2 個々の値を選択します。
- 0.2, 0.4, 0.6 範囲内の値を一覧表示します。リスト内の値を区切るにはカンマを使用します。
- 0.2-0.6 と入力すると、範囲が指定され、DataRobotによって高い値と低い値の間の間隔が選択されます。ハイフンを使用して範囲を指定します。
ファインチューニングのヒント¶
-
速度を向上させるには、Early StoppingのPatienceの値を小さくします。 デフォルトは5です。5ではエポック数が40超となることがあるため、2に設定してみてください。
-
データセットが不均衡な場合、損失関数をfocal_lossに変更します。これは、focal_lossは不均衡なデータセットをうまく一般化するためです。
-
収束速度を向上させるには、reduce_lr_patienceを1に変更します(デフォルトは3)。
-
ファインチューナーの精度を向上させる場合は、model_nameを
efficientnet-b0
に変更します。 デフォルトはmobilenet-v3
です。
検索オプションを選択をクリックして、次のいずれかを選択し、検索タイプを設定します。
-
スマート検索(デフォルト)は、モデルのパフォーマンスが高いと思われる範囲に集中し、モデルに関連が薄いハイパーパラメーターポイントを無視する高度なパターン検索(最適化)を実行します。
-
総当たりは、各データポイントを評価しますが、時間とリソースへの負荷が高い場合があります。
最初に検索する推奨ハイパーパラメーターは、使用される分類器によって異なります。 例:
- Kerasモデル:バッチサイズ、学習率、非表示レイヤー、初期化
- XGBoost:特徴量の数、学習率、ツリーの数、およびツリーごとのサブサンプル
- ENet:アルファとラムダ
ボーナス:ファインチューニングされたブループリント¶
ファインチューニングされたモデルブループリントは、ImageNetと大きく異なるデータセットで役立つ場合があり、データセットは事前にトレーニングされた画像フィーチャライザーで活用されます。 これらのブループリントはモデルリポジトリ内にあり、ゼロからトレーニング(ランダムな加重の初期化)または事前トレーニング済みの加重でトレーニングできます。 上記のチューニング手順の多くは、これらのブループリントにも適用されます。ただし、ファインチューニングされたブループリントでは、トレーニング時間が長くなります。 さらに、事前トレーニング済みのブループリントは、ほとんどの場合に、ファインチューニングされたブループリントよりも優れたスコアを達成します。このことは、弊社のボートのデータセットでそうでした。
最終結果¶
ファインチューニングによって、上位のクイックモデル(83.68%)の精度スコアが上位の包括的モードモデル(91.45%)に改善されました。 プラットフォーム内の最も効果的な設定でモデルのパフォーマンスを最大化するための、ここで概説した追加ステップを実行すると、92.92%の最終精度が得られました。