Main Content

実験マネージャー

深層学習ネットワークの学習および比較に向けた実験の設計と実行

R2020a 以降

説明

実験マネージャー アプリを使用すると、複数の初期条件でネットワークに学習させ、結果を比較するための深層学習実験を作成できます。たとえば、深層学習実験を使用して次のことができます。

  • ハイパーパラメーター値の範囲のスイープ、またはベイズ最適化の使用による最適な学習オプションの検出。ベイズ最適化には、Statistics and Machine Learning Toolbox™ が必要です。

  • 組み込み関数 trainNetwork の使用、または独自のカスタム学習関数の定義。関数 trainNetwork には Deep Learning Toolbox™ が必要です。

  • さまざまなデータ セットを使用した結果の比較、またはさまざまな深いネットワークのアーキテクチャのテスト。

実験をすばやくセットアップするために、事前構成済みのテンプレートを使用して開始できます。実験テンプレートは、イメージ分類とイメージ回帰、シーケンス分類、オーディオ分類、セマンティック セグメンテーション、およびカスタム学習ループといったワークフローをサポートします。

実験マネージャーは、学習プロットや混同行列などの可視化ツール、実験結果を絞り込むためのフィルター、および観測結果を記録するための注釈を提供します。再現性を向上させるために、実験マネージャーは、実験を実行するたびに、実験定義のコピーを保存します。過去の実験定義にアクセスして、各結果を生成するハイパーパラメーターの組み合わせを継続的に追跡できます。

実験マネージャーは、実験および結果をプロジェクトに整理します。

  • 同じプロジェクトに複数の実験を保存できる。

  • 各実験には、毎回の実験に対する "結果" のセットが含まれる。

  • 結果の各セットは、ハイパーパラメーターのさまざまな組み合わせに対応する 1 つ以上の "試行" で構成される。

既定では、実験マネージャーは一度に 1 つの試行を実行します。Parallel Computing Toolbox™ がある場合は、複数の GPU、1 つのクラスター、またはクラウドで複数の試行を同時に実行したり、試行を一度に 1 つずつ実行したりするように実験を構成できます。MATLAB® Parallel Server™ を使用している場合は、リモート クラスターのバッチ ジョブとして実験をオフロードすることで、学習しながら作業を続行することも MATLAB セッションを閉じることもできます。詳細については、実験マネージャーを使用したネットワークの並列学習およびOffload Experiments as Batch Jobs to Clusterを参照してください。

[実験ブラウザー] ペインには、プロジェクトの実験と結果の階層が表示されます。たとえば、このプロジェクトには 2 つの実験があり、それぞれにいくつかの結果があります。

Experiment Browser showing two experiments. Experiment1 is a built-in training experiment with four results. Experiment2 is a custom training experiment with two results.

青のフラスコ は、関数 trainNetwork を使用する組み込みの学習実験を表します。緑のビーカー は、さまざまな学習関数に依存するカスタムの学習実験を表します。実験の構成を開いてその結果を表示するには、実験の名前または結果のセットをダブルクリックします。

Experiment Manager app

実験マネージャー アプリを開く

  • MATLAB ツールストリップ: [アプリ] タブの [機械学習および深層学習] にあるアプリ アイコンをクリックします。

  • MATLAB コマンド プロンプト: experimentManager と入力します。

すべて展開する

この例では、ハイパーパラメーターのスイープによるイメージ分類のために実験テンプレートを使用する方法を示します。このテンプレートを使用すると、関数trainNetworkを使用する組み込みの学習実験をすばやくセットアップできます。関数 trainNetwork には Deep Learning Toolbox が必要です。

例を開き、検査と実行が可能な事前構成済みの実験を含むプロジェクトを読み込みます。実験を開くには、[実験ブラウザー] ペインで、Experiment1 をダブルクリックします。

または、次の手順に従って、自分で実験を構成することもできます。

1.実験マネージャーを開きます。プロジェクトが MATLAB で既に開いている場合、実験マネージャーは現在のプロジェクトを読み込むように求めます。それ以外の場合、ダイアログ ボックスには、入門チュートリアルや最近使用したプロジェクトへのリンク、新規プロジェクトを作成するボタン、ドキュメンテーションのサンプルを開くボタンが表示されます。

2.[新規][プロジェクト] を選択します。ダイアログ ボックスには、イメージ分類とイメージ回帰、シーケンス分類、オーディオ分類、セマンティック セグメンテーション、およびカスタム学習ループといったワークフローをサポートするいくつかの実験テンプレートが一覧表示されます。

3.[イメージ分類実験][ハイパーパラメーターのスイープによるイメージ分類] を選択します。

4.新しいプロジェクトの名前と場所を指定します。実験マネージャーによって、プロジェクトで新しい実験が開きます。[実験] ペインには、実験を定義する説明、ハイパーパラメーター、セットアップ関数、およびメトリクスが表示されます。

5.[説明] フィールドに、実験の説明を次のように入力します。

Classification of digits, using various initial learning rates.

6.[ハイパーパラメーター] で、myInitialLearnRate の値を 0.0025:0.0025:0.015 に置き換えます。[手法]Exhaustive Sweep に設定されていることを確認します。

7.[セットアップ関数][編集] をクリックします。MATLAB エディターでセットアップ関数が開きます。セットアップ関数では、実験用の学習データ、ネットワーク アーキテクチャ、および学習オプションを指定します。この実験のセットアップ関数には、以下のセクションがあります。

  • "学習データの読み込み" では、実験用の学習データと検証データを含むイメージ データストアを定義します。実験では、0 ~ 9 の数字から成る 28 x 28 ピクセルのグレースケール イメージ 10,000 個で構成される数字データ セットを使用します。このデータセットの詳細については、イメージ データセットを参照してください。

  • ネットワーク アーキテクチャの定義では、深層学習による分類用のシンプルな畳み込みニューラル ネットワークのアーキテクチャを定義します。

  • "学習オプションの指定"では、実験用の trainingOptions オブジェクトを定義します。この実験のセットアップ関数では、ハイパーパラメーター テーブルの myInitialLearnRate エントリから初期学習率の値を読み込みます。

実験を実行すると、実験マネージャーはセットアップ関数で定義されたネットワークに 6 回学習させます。各試行で、ハイパーパラメーター テーブルで指定された学習率の 1 つが使用されます。既定では、実験マネージャーは一度に 1 つの試行を実行します。Parallel Computing Toolbox を使用している場合は、複数の試行を同時に実行したり、クラスター内のバッチ ジョブとして実験をオフロードしたりできます。

  • 一度に 1 つの実験を実行するには、"実験マネージャー" ツールストリップの [モード][Sequential] を選択し、[実行] をクリックします。

  • 複数の試行を同時に実行するには、[モード][Simultaneous] を選択し、[実行] をクリックします。現在の並列プールがない場合、実験マネージャーは既定のクラスター プロファイルを使用して並列プールを起動します。その後、実験マネージャーは、並列プールにあるワーカーと同じ数の同時試行を実行します。最良の結果を得るには、実験を実行する前に、GPU と同じ数のワーカーで並列プールを起動します。詳細については、実験マネージャーを使用したネットワークの並列学習GPU 計算の要件 (Parallel Computing Toolbox)を参照してください。

  • 実験をバッチ ジョブとしてオフロードするには、[モード][Batch Sequential] または [Batch Simultaneous] を選択し、[クラスター][Pool Size] を指定して、[実行] をクリックします。詳細については、Offload Experiments as Batch Jobs to Clusterを参照してください。

結果テーブルに、各試行の精度と損失が表示されます。

実験の実行中に学習プロットを表示して各試行の進行状況を追跡するには、[結果の確認][学習プロット] をクリックします。MATLAB コマンド ウィンドウで学習の進行状況を監視することもできます。

完了した各試行の検証データの混同行列を表示するには、[結果の確認][検証データ] をクリックします。

実験の完了後、列ごとにテーブルを並べ替えたり、[フィルター] ペインを使用して試行をフィルター処理したりできます。結果テーブルに注釈を追加して、観測結果を記録することもできます。詳細については、実験結果の並べ替え、フィルター処理、および注釈追加を参照してください。

各試行の性能をテストするには、試行で使用した学習済みネットワークまたは試行の学習情報をエクスポートします。[実験マネージャー] ツールストリップで、[エクスポート][学習済みネットワーク] を選択するか、[エクスポート][学習情報] を選択します。詳細については、netおよびinfoを参照してください。結果テーブルの内容を MATLAB ワークスペースにtable配列として保存するには、[エクスポート][結果テーブル] を選択します。

実験を閉じるには、[実験ブラウザー] ペインでプロジェクトの名前を右クリックし、[プロジェクトを閉じる] を選択します。実験マネージャーによって、プロジェクトに含まれるすべての実験と結果が閉じられます。

この例では、ハイパーパラメーターのスイープによるイメージ回帰のために実験テンプレートを使用する方法を示します。このテンプレートを使用すると、関数trainNetworkを使用する組み込みの学習実験をすばやくセットアップできます。関数 trainNetwork には Deep Learning Toolbox が必要です。

例を開き、検査と実行が可能な事前構成済みの実験を含むプロジェクトを読み込みます。実験を開くには、[実験ブラウザー] ペインで、Experiment1 をダブルクリックします。

または、次の手順に従って、自分で実験を構成することもできます。

1.実験マネージャーを開きます。プロジェクトが MATLAB で既に開いている場合、実験マネージャーは現在のプロジェクトを読み込むように求めます。それ以外の場合、ダイアログ ボックスには、入門チュートリアルや最近使用したプロジェクトへのリンク、新規プロジェクトを作成するボタン、ドキュメンテーションのサンプルを開くボタンが表示されます。

2.[新規][プロジェクト] を選択します。ダイアログ ボックスには、イメージ分類とイメージ回帰、シーケンス分類、オーディオ分類、セマンティック セグメンテーション、およびカスタム学習ループといったワークフローをサポートするいくつかの実験テンプレートが一覧表示されます。

3.[イメージ回帰実験][ハイパーパラメーターのスイープによるイメージ回帰] を選択します。

4.新しいプロジェクトの名前と場所を指定します。実験マネージャーによって、プロジェクトで新しい実験が開きます。[実験] ペインには、実験を定義する説明、ハイパーパラメーター、セットアップ関数、およびメトリクスが表示されます。

5.[説明] フィールドに、実験の説明を次のように入力します。

Regression to predict angles of rotation of digits, using various initial learning rates.

6.[ハイパーパラメーター] で、myInitialLearnRate の値を 0.001:0.001:0.006 に置き換えます。[手法]Exhaustive Sweep に設定されていることを確認します。

7.[セットアップ関数][編集] をクリックします。MATLAB エディターでセットアップ関数が開きます。セットアップ関数では、実験用の学習データ、ネットワーク アーキテクチャ、および学習オプションを指定します。この実験のセットアップ関数には、以下のセクションがあります。

  • 学習データの読み込みでは、実験用の学習データと検証データを 4 次元配列として定義します。学習データと検証データはそれぞれ数字データ セットからの 5000 個のイメージで構成されています。各イメージは 0 ~ 9 の数字で、特定の角度の回転が付けられています。回帰値は、回転角度に対応しています。このデータセットの詳細については、イメージ データセットを参照してください。

  • "ネットワーク アーキテクチャの定義" では、深層学習による回帰用のシンプルな畳み込みニューラル ネットワークのアーキテクチャを定義します。

  • "学習オプションの指定"では、実験用の trainingOptions オブジェクトを定義します。この実験のセットアップ関数では、ハイパーパラメーター テーブルの myInitialLearnRate エントリから初期学習率の値を読み込みます。

実験を実行すると、実験マネージャーはセットアップ関数で定義されたネットワークに 6 回学習させます。各試行で、ハイパーパラメーター テーブルで指定された学習率の 1 つが使用されます。既定では、実験マネージャーは一度に 1 つの試行を実行します。Parallel Computing Toolbox を使用している場合は、複数の試行を同時に実行したり、クラスター内のバッチ ジョブとして実験をオフロードしたりできます。

  • 一度に 1 つの実験を実行するには、"実験マネージャー" ツールストリップの [モード][Sequential] を選択し、[実行] をクリックします。

  • 複数の試行を同時に実行するには、[モード][Simultaneous] を選択し、[実行] をクリックします。現在の並列プールがない場合、実験マネージャーは既定のクラスター プロファイルを使用して並列プールを起動します。その後、実験マネージャーは、並列プールにあるワーカーと同じ数の同時試行を実行します。最良の結果を得るには、実験を実行する前に、GPU と同じ数のワーカーで並列プールを起動します。詳細については、実験マネージャーを使用したネットワークの並列学習GPU 計算の要件 (Parallel Computing Toolbox)を参照してください。

  • 実験をバッチ ジョブとしてオフロードするには、[モード][Batch Sequential] または [Batch Simultaneous] を選択し、[クラスター][Pool Size] を指定して、[実行] をクリックします。詳細については、Offload Experiments as Batch Jobs to Clusterを参照してください。

結果テーブルに、各試行の平方根平均二乗誤差 (RMSE) と損失が表示されます。

実験の実行中に学習プロットを表示して各試行の進行状況を追跡するには、[結果の確認][学習プロット] をクリックします。MATLAB コマンド ウィンドウで学習の進行状況を監視することもできます。

実験の完了後、列ごとにテーブルを並べ替えたり、[フィルター] ペインを使用して試行をフィルター処理したりできます。結果テーブルに注釈を追加して、観測結果を記録することもできます。詳細については、実験結果の並べ替え、フィルター処理、および注釈追加を参照してください。

各試行の性能をテストするには、試行で使用した学習済みネットワークまたは試行の学習情報をエクスポートします。[実験マネージャー] ツールストリップで、[エクスポート][学習済みネットワーク] を選択するか、[エクスポート][学習情報] を選択します。詳細については、netおよびinfoを参照してください。結果テーブルの内容を MATLAB ワークスペースにtable配列として保存するには、[エクスポート][結果テーブル] を選択します。

実験を閉じるには、[実験ブラウザー] ペインでプロジェクトの名前を右クリックし、[プロジェクトを閉じる] を選択します。実験マネージャーによって、プロジェクトに含まれるすべての実験と結果が閉じられます。

この例では、カスタム学習ループを使用したイメージ分類のために学習実験テンプレートを使用する方法を示します。このテンプレートを使用すると、カスタムの学習実験をすばやくセットアップできます。

例を開き、検査と実行が可能な事前構成済みの実験を含むプロジェクトを読み込みます。実験を開くには、[実験ブラウザー] ペインで、Experiment1 をダブルクリックします。

または、次の手順に従って、自分で実験を構成することもできます。

1.実験マネージャーを開きます。プロジェクトが MATLAB で既に開いている場合、実験マネージャーは現在のプロジェクトを読み込むように求めます。それ以外の場合、ダイアログ ボックスには、入門チュートリアルや最近使用したプロジェクトへのリンク、新規プロジェクトを作成するボタン、ドキュメンテーションのサンプルを開くボタンが表示されます。

2.[新規][プロジェクト] を選択します。ダイアログ ボックスには、イメージ分類とイメージ回帰、シーケンス分類、オーディオ分類、セマンティック セグメンテーション、およびカスタム学習ループといったワークフローをサポートするいくつかの実験テンプレートが一覧表示されます。

3.[イメージ分類実験][カスタム学習ループを使用したイメージ分類] を選択します。

4.新しいプロジェクトの場所と名前を選択します。実験マネージャーによって、プロジェクトで新しい実験が開きます。[実験] ペインには、実験を定義する説明、ハイパーパラメーター、および学習関数が表示されます。

3.[説明] フィールドに、実験の説明を次のように入力します。

Classification of digits, using various initial learning rates.

4.[ハイパーパラメーター] で、myInitialLearnRate の値を 0.0025:0.0025:0.015 に置き換えます。[手法]Exhaustive Sweep に設定されていることを確認します。

5.[学習関数][編集] をクリックします。MATLAB エディターで学習関数が開きます。学習関数では、実験で使用される学習データ、ネットワーク アーキテクチャ、学習オプション、および学習手順を指定します。この実験の学習関数には、以下のセクションがあります。

  • "学習データの読み込み" では、実験用の学習データを 4 次元配列として定義します。実験では、0 ~ 9 の数字から成る 28 x 28 ピクセルのグレースケール イメージ 5,000 個で構成される数字データ セットを使用します。このデータセットの詳細については、イメージ データセットを参照してください。

  • ネットワーク アーキテクチャの定義では、深層学習による分類用のシンプルな畳み込みニューラル ネットワークのアーキテクチャを定義します。カスタム学習ループを使用してネットワークに学習させるため、この学習関数はネットワークをdlnetworkオブジェクトとして表現します。

  • "学習オプションの指定" では、実験で使用される学習オプションを定義します。この実験の学習関数では、ハイパーパラメーター テーブルの myInitialLearnRate エントリから初期学習率の値を読み込みます。

  • "モデルの学習" では、実験で使用されるカスタム学習ループを定義します。カスタム学習ループでは、各エポックについて、データをシャッフルしてデータのミニバッチを繰り返し実行します。カスタム学習ループでは、各ミニバッチについて、モデルの勾配、状態、および損失を評価し、時間ベースの減衰学習率スケジュールの学習率を決定し、ネットワーク パラメーターを更新します。学習の進行状況を追跡して学習損失の値を記録するため、この学習関数は experiments.Monitor オブジェクト monitor を使用します。

実験を実行すると、実験マネージャーは学習関数で定義されたネットワークに 6 回学習させます。各試行で、ハイパーパラメーター テーブルで指定された学習率の 1 つが使用されます。既定では、実験マネージャーは一度に 1 つの試行を実行します。Parallel Computing Toolbox を使用している場合は、複数の試行を同時に実行したり、クラスター内のバッチ ジョブとして実験をオフロードしたりできます。

  • 一度に 1 つの実験を実行するには、"実験マネージャー" ツールストリップの [モード][Sequential] を選択し、[実行] をクリックします。

  • 複数の試行を同時に実行するには、[モード][Simultaneous] を選択し、[実行] をクリックします。現在の並列プールがない場合、実験マネージャーは既定のクラスター プロファイルを使用して並列プールを起動します。その後、実験マネージャーは、並列プールにあるワーカーと同じ数の同時試行を実行します。最良の結果を得るには、実験を実行する前に、GPU と同じ数のワーカーで並列プールを起動します。詳細については、実験マネージャーを使用したネットワークの並列学習GPU 計算の要件 (Parallel Computing Toolbox)を参照してください。

  • 実験をバッチ ジョブとしてオフロードするには、[モード][Batch Sequential] または [Batch Simultaneous] を選択し、[クラスター][Pool Size] を指定して、[実行] をクリックします。詳細については、Offload Experiments as Batch Jobs to Clusterを参照してください。

結果テーブルに、各試行の学習損失が表示されます。

実験の実行中に学習プロットを表示して各試行の進行状況を追跡するには、[結果の確認][学習プロット] をクリックします。

実験の完了後、列ごとにテーブルを並べ替えたり、[フィルター] ペインを使用して試行をフィルター処理したりできます。結果テーブルに注釈を追加して、観測結果を記録することもできます。詳細については、実験結果の並べ替え、フィルター処理、および注釈追加を参照してください。

各試行の性能をテストするには、試行における学習の出力をエクスポートします。[実験マネージャー] ツールストリップで [エクスポート][学習の出力] を選択します。この実験の学習の出力は、学習損失の値と学習済みネットワークを含む構造体です。結果テーブルの内容を MATLAB ワークスペースにtable配列として保存するには、[エクスポート][結果テーブル] を選択します。

実験を閉じるには、[実験ブラウザー] ペインでプロジェクトの名前を右クリックし、[プロジェクトを閉じる] を選択します。実験マネージャーによって、プロジェクトに含まれるすべての実験と結果が閉じられます。

この例では、実験マネージャーを使用して組み込みの学習実験を設定する方法を示します。組み込みの学習実験は、関数 trainNetwork によって、イメージ分類、イメージ回帰、シーケンス分類、セマンティック セグメンテーションといったワークフローをサポートします。関数 trainNetwork には Deep Learning Toolbox が必要です。

組み込みの学習実験は、説明、ハイパーパラメーターのテーブル、セットアップ関数、および実験の結果を評価するためのメトリクス関数の集合で構成されます。

[説明] フィールドに実験の説明を入力します。

[ハイパーパラメーター] では、手法を選択し、実験に使用するためのハイパーパラメーターを指定します。

 網羅的なスイープ

 ベイズ最適化

[セットアップ関数] は、実験用の学習データ、ネットワーク アーキテクチャ、および学習オプションを構成します。セットアップ関数への入力は、ハイパーパラメーター テーブルのフィールドをもつ構造体です。セットアップ関数の出力は、関数 trainNetwork の入力と一致しなければなりません。以下の表は、セットアップ関数でサポートされているシグネチャの一覧です。

実験の目的セットアップ関数のシグネチャ
images で指定したイメージと応答、および options で定義した学習オプションを使用して、イメージ分類タスクとイメージ回帰タスクのためのネットワークに学習させます。
function [images,layers,options] = Experiment_setup(params)
...
end
images で指定したイメージ、および responses で指定した応答を使用してネットワークに学習させます。
function [images,responses,layers,options] = Experiment_setup(params)
...
end
sequences で指定したシーケンスと応答を使用して、シーケンス分類タスク、時系列分類タスク、および回帰タスクのためのネットワーク (LSTM ネットワークや GRU ネットワークなど) に学習させます。
function [sequences,layers,options] = Experiment_setup(params)
...
end
sequences で指定したシーケンス、および responses で指定した応答を使用してネットワークに学習させます。
function [sequences,reponses,layers,options] = Experiment_setup(params)
...
end
features で指定した特徴データと応答を使用して、特徴分類タスクまたは回帰タスクのためのネットワーク (多層パーセプトロン (MLP) ネットワークなど) に学習させます。
function [features,layers,options] = Experiment_setup(params)
...
end
features で指定した特徴データ、および responses で指定した応答を使用してネットワークに学習させます。
function [features,responses,layers,options] = Experiment_setup(params)
...
end

ヒント

セットアップ関数を記述するときは、次のガイドラインに従ってください。

  • すべてのワーカーがアクセスできる場所から、学習データと検証データを読み込みます。たとえば、プロジェクトの外部にデータを保存し、絶対パスを使用してデータにアクセスします。あるいは、データストアの AlternateFileSystemRoots プロパティを設定して、別のマシン上のデータにアクセスできるデータストア オブジェクトを作成します。詳細については、異なるマシンまたはクラスターで処理するためのデータ ストアの設定を参照してください。

  • バッチ正規化層が含まれているネットワークで、BatchNormalizationStatistics 学習オプションが population の場合、実験マネージャーが、学習時に評価される検証メトリクスとは異なる最終検証メトリクスを表示することがよくあります。値の違いは、ネットワークの学習終了後に実行された追加の演算によるものです。詳細については、バッチ正規化層を参照してください。

  • 実験に使用できる実行モードは、学習オプション ExecutionEnvironment および DispatchInBackground で指定した設定によって異なります。

    実行モードExecutionEnvironment に対して有効な設定DispatchInBackground に対して有効な設定
    Sequential"auto", "cpu", "gpu", "multi-gpu", "parallel"true, false
    Simultaneous"auto", "cpu", "gpu"false
    Batch Sequential"auto", "cpu", "gpu", "parallel"true, false
    Batch Simultaneous"auto", "cpu", "gpu"false

    詳細については、実験マネージャーを使用したネットワークの並列学習およびOffload Experiments as Batch Jobs to Clusterを参照してください。

[メトリクス] セクションは、実験結果を評価するための関数を指定します。メトリクス関数への入力は、以下の 3 つのフィールドをもつ構造体です。

  • trainedNetwork は、関数 trainNetwork によって返される SeriesNetwork オブジェクトまたは DAGNetwork オブジェクトです。詳細については、学習済みネットワークを参照してください。

  • trainingInfo は、関数 trainNetwork によって返される学習情報を含む構造体です。詳細については、学習に関する情報を参照してください。

  • parameters は、ハイパーパラメーター テーブルのフィールドをもつ構造体です。

メトリクス関数の出力は、スカラー数、logical 値、または string でなければなりません。

実験でベイズ最適化を使用する場合は、[最適化] リストから最適化するメトリクスを選択します。[方向] リストで、このメトリクスの [最大化] または [最小化] を指定します。実験マネージャーは、このメトリクスを使用して、実験に最適なハイパーパラメーターの組み合わせを決定します。学習または検証の標準的メトリクス (精度、RMSE、損失など) を選択することも、テーブルからカスタム メトリクスを選択することもできます。

この例では、実験マネージャーを使用してカスタムの学習実験を設定する方法を示します。カスタムの学習実験は、trainNetwork 以外の学習関数を必要とするワークフローをサポートします。このワークフローには次が含まれます。

  • 層グラフによって定義されていないネットワークの学習。

  • カスタム学習率スケジュールを使用した、ネットワークの学習。

  • カスタム関数を使用した、ネットワークの学習可能パラメーターの更新。

  • 敵対的生成ネットワーク (GAN) の学習。

  • シャム ネットワークの学習。

カスタムの学習実験は、説明、ハイパーパラメーターのテーブル、および学習関数で構成されます。

[説明] フィールドに実験の説明を入力します。

[ハイパーパラメーター] では、手法を選択し、実験に使用するためのハイパーパラメーターを指定します。

 網羅的なスイープ

 ベイズ最適化

[学習関数] では、実験で使用される学習データ、ネットワーク アーキテクチャ、学習オプション、および学習手順を指定します。学習関数への入力は以下のとおりです。

  • ハイパーパラメーター テーブルのフィールドをもつ構造体

  • 学習の進行状況を追跡し、結果テーブルで情報フィールドを更新し、学習で使用したメトリクスの値を記録し、学習プロットを生成するために使用できる experiments.Monitor オブジェクト

学習マネージャーでは学習関数の出力が保存されるため、学習完了時にこの出力を MATLAB ワークスペースにエクスポートできます。

ヒント

学習関数を記述するときは、次のガイドラインに従ってください。

  • すべてのワーカーがアクセスできる場所から、学習データと検証データを読み込みます。たとえば、プロジェクトの外部にデータを保存し、絶対パスを使用してデータにアクセスします。あるいは、データストアの AlternateFileSystemRoots プロパティを設定して、別のマシン上のデータにアクセスできるデータストア オブジェクトを作成します。詳細については、異なるマシンまたはクラスターで処理するためのデータ ストアの設定を参照してください。

  • 実験の結果テーブルでは、情報列とメトリクス列の両方に数値が表示されます。さらに、メトリクス値が学習プロットに記録されます。結果テーブルには表示する必要があるものの学習プロットには表示したくないと考えている値については、情報列を使用してください。

  • 学習が完了すると、ツールストリップの [結果の確認] ギャラリーに、学習関数で作成した各 figure のボタンが表示されます。 (R2023a 以降)[可視化] ペインに Figure を表示するには、ギャラリーの [カスタム プロット] セクションで対応するボタンをクリックします。figure の Name プロパティを使用して、ボタンの名前を指定します。Figure に名前を付けない場合、実験マネージャーは座標軸または Figure のタイトルからボタンの名前を派生させます。

実験でベイズ最適化を使用する場合は、[最適化][メトリクス] セクションで最適化するメトリクスの名前を入力します。[方向] リストで、このメトリクスの [最大化] または [最小化] を指定します。実験マネージャーは、このメトリクスを使用して、実験に最適なハイパーパラメーターの組み合わせを決定します。experiments.Monitor オブジェクトを使用して学習関数用に定義した任意のメトリクスを選択できます。

実験マネージャーでは、実験を中断するための 2 つのオプションが用意されています。

  • [停止] は、実行中の試行を [停止] とマークし、その結果を保存します。実験が停止した後、この試行に関する学習プロットを表示することや学習結果をエクスポートすることができます。

  • [キャンセル] は、実行中の試行を [キャンセル済み] とマークし、その結果を破棄します。実験を停止した後に、この試行に関する学習プロットを表示することや学習結果をエクスポートすることはできません。

どちらのオプションでも、完了した試行の結果が保存され、キューに登録されている試行がキャンセルされます。通常、[キャンセル] のほうが [停止] よりも高速で処理されます。

実験全体を中断する代わりに、実行中の試行を個別に停止することや、キューに登録されている試行を個別にキャンセルすることができます。結果テーブルの [アクション] 列で、試行の停止ボタン またはキャンセル ボタン をクリックします。

Results table showing Stop icon for a running trial.

実験のサイズを減らすには、関連しなくなった試行の結果を破棄します。結果テーブルの [アクション] 列で、試行の破棄ボタン をクリックします。実験マネージャーによって、試行の学習結果、学習プロット、および混同行列がプロジェクトから削除されます。

Results table showing Discard icon for a completed trial.

学習が完了すれば、停止、キャンセル、または破棄した試行を再開できます。結果テーブルの [アクション] 列で、試行の再開ボタン をクリックします。

Results table showing Restart icon for a stopped trial.

あるいは、実験マネージャーのツールストリップで [再開] リストを開き、再開条件を 1 つ以上選択し、[再開] をクリックすることで、複数の試行を再開することもできます。再開条件として、["キャンセル済み" をすべて]["停止" をすべて]["エラー" をすべて]、および ["破棄" をすべて] を選択できます。

メモ

停止、キャンセル、再開のオプションは、すべての実験タイプ、戦略、または実行モードで利用できるわけではありません。

この例では、実験を実行した後に結果を比較したり観測結果を記録したりする方法を示します。

実験を実行すると、実験マネージャーはセットアップ関数で定義されたネットワークに複数回学習させます。試行ごとに、ハイパーパラメーターの異なる組み合わせが使用されます。実験が終了すると、各試行の学習メトリクスおよび検証メトリクス (RMSE や損失など) がテーブルに表示されます。実験の結果を比較するため、これらのメトリクスを使用して、結果テーブルを並べ替えたり、試行をフィルター処理したりできます。

結果テーブルで試行を並べ替えるには、学習メトリクスまたは検証メトリクスに対応する列のドロップダウン リストを使用します。

  1. 並べ替える列のヘッダーをポイントします。

  2. 三角形のアイコンをクリックします。

  3. [昇順で並べ替え] または [降順で並べ替え] を選択します。

    Results table showing drop down list for the Validation Accuracy column.

結果テーブルから試行をフィルター処理するには、[フィルター] ペインを使用します。このペインに、結果テーブルの数値メトリクスのヒストグラムが表示されます。[フィルター] ペインからヒストグラムを削除するには、結果テーブルで、対応する列のドロップダウン リストを開き、[フィルターの表示] チェック ボックスをオフにします。

  1. 実験マネージャーのツールストリップで、[フィルター] を選択します。

  2. フィルター処理する学習メトリクスまたは検証メトリクスのヒストグラムの下にあるスライダーを調整します。

    Histogram for Validation Accuracy, with filter sliders set to 60 and 62.

    結果テーブルには、選択した範囲のメトリクス値をもつ試行のみが表示されます。

    Results table showing only trials with Validation Accuracy between 60 and 62.

  3. 結果テーブルのすべての試行を復元するには、[Experiment Result] ペインを閉じ、[実験ブラウザー] ペインから結果を再度開きます。

実験結果に関する観測結果を記録するには、注釈を追加します。

  1. 結果テーブルのセルを右クリックし、[注釈の追加] を選択します。あるいは、結果テーブルでセルを選択し、実験マネージャーのツールストリップで [注釈][注釈の追加] を選択します。

    Results table showing drop down list for the Validation Accuracy cell with the largest value.

  2. [注釈] ペインで、テキスト ボックスに観測結果を入力します。結果テーブルの各セルに複数の注釈を追加できます。

    Annotation text says, "Largest validation accuracy."

  3. 注釈を並べ替えるには、[並べ替え] ドロップダウン リストを使用します。作成時間または試行番号で並べ替えることができます。

    Sorting options include: Creation Time: Older to Newer (Default), Creation Time: Newer to Older, Trial Number: Lowest to Highest, and Trial Number: Highest to Lowest.

  4. 注釈に対応するセルを強調表示するには、注釈の上にあるリンクをクリックします。

  5. 注釈を削除するには、注釈の右側にある削除ボタン をクリックします。

この例では、特定の結果を生成した実験の構成を検査する方法を示します。

実験を実行した後、[Experiment ソース] ペインを開いて、実験の説明とハイパーパラメーター テーブルの読み取り専用コピー、および実験によって使用されたすべての関数へのリンクを表示できます。このペインの情報を使用して、各結果を生成するデータ、ネットワーク、および学習オプションの構成を追跡できます。

たとえば、実験を複数回実行するとします。実験を実行するたびに、セットアップ関数の内容を変更しますが、関数名は常に同じものを使用します。最初に実験を実行するときは、イメージ分類用の実験テンプレートによって提供される既定のネットワークを使用します。2 回目に実験を実行するときは、セットアップ関数を変更して、事前学習済みの GoogLeNet ネットワークを読み込み、最終層を転移学習用の新しい層に置き換えます。これら 2 つのネットワーク アーキテクチャを使用する例については、分類用の深層学習実験の作成を参照してください。

最初の [Experiment Result] ペインで、[実験のソースの表示] リンクをクリックします。実験マネージャーは、最初の結果セットを生成した実験の定義を含む [Experiment ソース] ペインを開きます。ペインの下部にあるリンクをクリックして、最初の実験の実行時に使用したセットアップ関数を開きます。このセットアップ関数をコピーし、シンプルな分類ネットワークを使用して実験を再実行できます。

2 番目の [Experiment Result] ペインで、[実験のソースの表示] リンクをクリックします。実験マネージャーは、2 番目の結果セットを生成した実験の定義を含む [Experiment ソース] ペインを開きます。ペインの下部にあるリンクをクリックして、2 回目の実験の実行時に使用したセットアップ関数を開きます。このセットアップ関数をコピーし、転移学習を使用して実験を再実行できます。

使用するすべての関数のコピーが実験マネージャーによって保存されるため、実験を変更して再実行するときに、これらの関数の名前を手動で変更する必要はありません。

関連する例

ヒント

バージョン履歴

R2020a で導入

すべて展開する