Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

実験マネージャー

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

R2020a 以降

説明

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

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

  • 組み込み関数 trainNetwork の使用、または独自のカスタム学習関数の定義。

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

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

実験マネージャーでは、実験結果の管理と観測結果の記録を行うのに役立つ可視化、フィルター、注釈の機能が提供されます。実験マネージャーでは、再現性を高めるため、実験を行うたびに実験定義のコピーが保存されます。過去の実験定義にアクセスすることで、各結果を生成するハイパーパラメーターの組み合わせを追跡できます。

実験マネージャーでは、実験と結果がプロジェクトとして整理されます。

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

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

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

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

Experiment Browser showing three experiments. Experiment1 is a general-purpose example with three results. Experiment 2 is a built-in training experiment for deep learning with two results. Experiment3 is a custom training experiment for deep learning or machine learning with two results.

オレンジの丸底フラスコ は、Deep Learning Toolbox™ のライセンスがなくても MATLAB® 内で実行できる汎用の実験を表します。青の三角フラスコ は、学習関数 trainNetwork を使用する深層学習のための組み込みの学習実験を表します。緑のビーカー は、カスタム学習関数に依存する深層学習または機械学習のためのカスタムの学習実験を表します。汎用の実験の詳細については、実験の管理を参照してください。

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

必要な製品

  • Deep Learning Toolbox: 深層学習のための組み込みまたはカスタムの学習実験を実行し、それらの実験の混同行列を表示する

  • Statistics and Machine Learning Toolbox: ベイズ最適化を使用する機械学習または実験のためのカスタム学習実験を実行する

  • Parallel Computing Toolbox: 複数の GPU、1 つのクラスター、またはクラウドで、複数の試行を同時に実行したり、試行を一度に 1 つずつ実行したりする

  • MATLAB Parallel Server: リモート クラスターのバッチ ジョブとして実験をオフロードする

Experiment Manager app

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

  • MATLAB ツールストリップ: [アプリ] タブの [MATLAB] にある [実験マネージャー] アイコンをクリックします (R2023b 以降)

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

すべて展開する

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

次の手順に従って、自分で実験を構成できます。または、例を開いて構成手順をスキップし、検査と実行が可能な事前構成済みの実験を読み込みます。

1.現在開いているプロジェクトがあればそれを閉じ、実験マネージャー アプリを開きます。

2.ダイアログ ボックスには、入門チュートリアルや最近使用したプロジェクトへのリンク、新規プロジェクトを作成するボタン、ドキュメンテーションのサンプルを開くボタンが表示されます。[新規][空のプロジェクト] を選択します。

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

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 と同じ数のワーカーで並列プールを起動します。詳細については、Run Experiments in ParallelおよびGPU 計算の要件 (Parallel Computing Toolbox)を参照してください。

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

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

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

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

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

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

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

次の手順に従って、自分で実験を構成できます。または、例を開いて構成手順をスキップし、検査と実行が可能な事前構成済みの実験を読み込みます。

1.現在開いているプロジェクトがあればそれを閉じ、実験マネージャー アプリを開きます。

2.ダイアログ ボックスには、入門チュートリアルや最近使用したプロジェクトへのリンク、新規プロジェクトを作成するボタン、ドキュメンテーションのサンプルを開くボタンが表示されます。[新規][空のプロジェクト] を選択します。

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

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 と同じ数のワーカーで並列プールを起動します。詳細については、Run Experiments in ParallelおよびGPU 計算の要件 (Parallel Computing Toolbox)を参照してください。

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

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

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

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

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

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

次の手順に従って、自分で実験を構成できます。または、例を開いて構成手順をスキップし、検査と実行が可能な事前構成済みの実験を読み込みます。

1.現在開いているプロジェクトがあればそれを閉じ、実験マネージャー アプリを開きます。

2.ダイアログ ボックスには、入門チュートリアルや最近使用したプロジェクトへのリンク、新規プロジェクトを作成するボタン、ドキュメンテーションのサンプルを開くボタンが表示されます。[新規][空のプロジェクト] を選択します。

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

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

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

Classification of digits, using various initial learning rates.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Default configuration for built-in training experiment.

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

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

 網羅的なスイープ

 ベイズ最適化

[セットアップ関数] は、実験用の学習データ、ネットワーク アーキテクチャ、および学習オプションを構成します。セットアップ関数への入力は、ハイパーパラメーター テーブルのフィールドをもつ構造体です。セットアップ関数の出力は、関数 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,responses,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

    詳細については、Run Experiments in ParallelおよびOffload Experiments as Batch Jobs to a Clusterを参照してください。

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

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

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

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

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

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

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

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

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

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

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

  • ツイン ニューラル ネットワークの学習。

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

Default configuration for custom training experiment.

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

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

 網羅的なスイープ

 ベイズ最適化

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

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

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

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

ヒント

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

  • 実験で使用するハイパーパラメーター値にアクセスするには、ドット表記を使用します。詳細については、構造体配列を参照してください。

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

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

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

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

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

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

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

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

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

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

Results table showing Stop button for a running trial.

実験のサイズを小さくするには、不要になった試行の結果と可視化を破棄します。結果テーブルの [アクション] 列で、試行の破棄ボタン をクリックします。

Results table showing Discard button for a completed trial.

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

Results table showing Restart button for a stopped trial.

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

メモ

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

実験マネージャーは、試行ごとにハイパーパラメーターの組み合わせを変えながら、実験の複数の試行を実行します。結果テーブルに、各試行のハイパーパラメーターとメトリクスの値が表示されます。結果を比較するため、これらの値を使用して結果テーブルの並べ替えや試行のフィルター処理を行うことができます。

結果テーブルで試行を並べ替えるには、列ヘッダーにあるドロップダウン リストを使用します。

  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. 結果テーブルのすべての試行を復元するには、実験結果タブを閉じ、[実験ブラウザー] ペインから結果を再度開きます。

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

  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. 注釈を削除するには、注釈の右側にある削除ボタン をクリックします。

実験マネージャーは、実験の各結果のセットを生成するハイパーパラメーター値と MATLAB コードのコピーを読み取り専用で保存します。関数名は常に同じままで、コードのバージョンを変えながら実験を複数回実行できます。前のバージョンのコードに戻す場合は、前の結果の実験ソースを開くことで、そのコードにアクセスすることができます。この情報を表示するには、次のようにします。

  1. [実験ブラウザー] ペインで、検査する結果のセットの名前をダブルクリックします。

  2. 実験結果タブで、[実験のソースの表示] をクリックします。

  3. 実験ソース タブで、結果のセットを生成した実験の説明、ハイパーパラメーター値、および関数を検査します。

  4. 実験で使用した関数を開くには、タブの下部にあるリンクをクリックします。これらの関数は読み取り専用ですが、それらをプロジェクト フォルダーにコピーして実験を再実行することで、結果を再現することができます。

関連する例

ヒント

  • ハイパーパラメーターをスイープせずにネットワークの可視化、構築、学習を行うには、ディープ ネットワーク デザイナー アプリを使用します。ネットワークに学習させた後、最適な学習オプションを見つけるための実験を生成します。詳細については、を参照してください。

  • マウスを使用できない環境で実験マネージャーを操作するには、キーボード ショートカットを使用します。詳細については、Keyboard Shortcuts for Experiment Managerを参照してください。

  • 実験のサイズを小さくするには、不要になった試行の結果と可視化を破棄します。結果テーブルの [アクション] 列で、試行の破棄ボタン をクリックします。

バージョン履歴

R2020a で導入

すべて展開する