Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

実験マネージャーを使用したネットワークの並列学習

この例では、実験マネージャーを使用してネットワークの並列学習を行う方法を説明します。実験を並列で実行することにより、異なる学習構成を同時に試すことができます。学習の進行中に MATLAB® を使うこともできます。並列実行には、Parallel Computing Toolbox™ が必要です。

この例では、2 つのネットワークに学習させて、0 ~ 9 の数字のイメージを分類します。この実験では、ランダムな平行移動と水平方向の反転を数字データ セットに適用することで生成された、拡張イメージ データを使用してネットワークの学習を行います。データ拡張は、ネットワークで過適合が発生したり、学習イメージの正確な詳細が記憶されたりすることを防止します。実験を実行すると、実験マネージャーは、並列プールを起動し、使用可能な並列ワーカーの数に応じて、複数の同時試行を実行します。試行ごとに、ネットワークと学習オプションの異なる組み合わせが使用されます。学習の進行状況を監視しながら、パフォーマンスが低下していると思われる試行は停止できます。

代わりに、parfor または parfeval を使用し、複数のネットワークの学習をプログラムによって並列で行うこともできます。詳細については、深層学習ネットワークの並列学習を参照してください。

実験を開く

まず、例を開きます。実験マネージャーによって、検証と実行が可能な事前構成済みの実験を含むプロジェクトが読み込まれます。実験を開くには、[実験ブラウザー] ペインで、実験の名前 (AugmentedDataExperiment) をダブルクリックします。

実験の定義は、説明、ハイパーパラメーターのテーブル、セットアップ関数、および実験の結果を評価するためのメトリクス関数の集合 (オプション) で構成されます。詳細については、深層学習実験の構成を参照してください。

[説明] ボックスには、実験を説明するテキストが表示されます。この例の説明は次のようになります。

Classification using data image augmentation to apply random
translations and horizontal reflections to the Digits data set.

[ハイパーパラメーター] セクションでは、実験で使用する手法 (Exhaustive Sweep) とハイパーパラメーター値を指定します。実験を実行すると、実験マネージャーは、ハイパーパラメーター テーブルで指定されたハイパーパラメーター値のすべての組み合わせを使用してネットワークに学習させます。この例では、Network および TrainingOptions という、2 つのハイパーパラメーターを使用します。

Network は、学習を行うネットワークを指定します。このハイパーパラメーターがとり得る値は次のとおりです。

TrainingOptions は、ネットワークの学習に使用するオプションのセットを示します。このハイパーパラメーターがとり得る値は次のとおりです。

  • "fast" — 実験マネージャーは、初期学習率を 0.1 として、最大で 10 エポック、ネットワークの学習を行います。

  • "slow" — 実験マネージャーは、初期学習率を 0.001 として、最大で 15 エポック、ネットワークの学習を行います。

[セットアップ関数] は、実験用の学習データ、ネットワーク アーキテクチャ、および学習オプションを構成します。セットアップ関数を検査するには、[セットアップ関数][編集] をクリックします。MATLAB エディターでセットアップ関数が開きます。

この例では、セットアップ関数への入力は、ハイパーパラメーター テーブルのフィールドをもつ構造体です。このセットアップ関数は、イメージ分類問題用のネットワークに学習させるために使用する 3 つの出力を返します。このセットアップ関数には 3 つのセクションがあります。

  • イメージ データの読み込みは、数字データ セットからイメージを読み込み、このデータ セットを学習セットと検証セットに分割します。学習データについて、この例では、ランダムな平行移動と水平方向の反転を適用することにより、augmentedImageDatastoreオブジェクトを作成します。検証データは、imageDatastore オブジェクト内に拡張なしで格納されます。このデータセットの詳細については、イメージ データセットを参照してください。

  • ネットワーク アーキテクチャの定義では、深層学習による分類用の畳み込みニューラル ネットワークのアーキテクチャを定義します。この例では、ハイパーパラメーター Network について指定したネットワークの学習を行います。

  • 学習オプションの指定では、実験用の trainingOptions オブジェクトを定義します。この例では、ハイパーパラメーター TrainingOptions について指定した値により、学習オプション 'InitialLearnRate' および 'MaxEpochs' が決定されます。

学習オプション 'ExecutionEnvironment''multi-gpu' または 'parallel' に設定するか、学習オプション 'DispatchInBackground' を有効にした場合、実験マネージャーは並列実行をサポートしないことに注意してください。詳細については、深層学習実験の構成を参照してください。

[メトリクス] セクションは、実験結果を評価するオプションの関数を指定します。この例では、カスタムのメトリクス関数は含まれていません。

並列プールの起動

GPU が複数ある場合、並列実行では、通常、実験の速度が上がります。最良の結果を得るには、実験を実行する前に、GPU と同じ数のワーカーで並列プールを起動します。関数 gpuDeviceCount を使用することで、利用可能な GPU の数を確認できます。

numGPUs = gpuDeviceCount;
parpool(numGPUs);

ただし、GPU が 1 つの場合、すべてのワーカーがその GPU を共有するため、学習を高速化できず、GPU のメモリ不足が発生する可能性が高まります。MATLAB の使用を継続しながら 1 つの GPU で深層ネットワークの学習を行うには、実験を並列で実行する前に、単一のワーカーで並列プールを起動します。

実験の並列実行

実験を実行するには、[実験マネージャー] ツールストリップで、[並列の使用][実行] の順にクリックします。現在の並列プールがない場合、実験マネージャーは既定のクラスター プロファイルを使用して並列プールを起動します。次に、実験マネージャーは、使用可能な並列ワーカーの数に応じて、複数の同時試行を実行します。試行ごとに、ハイパーパラメーター値の異なる組み合わせが使用されます。

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

実験の実行中、各試行の学習プロットを表示することにより、実験の進行状況を追跡できます。試行を選択し、[学習プロット] をクリックします。

試行の停止、キャンセル、再開

実験マネージャーは、並列プールにあるワーカーと同じ数の同時試行を実行します。実験における他のすべての試行は、後で評価するためにキューに入れられます。実験を実行している間、実行中の試行を停止したり、キューに入れられた試行をキャンセルしたりできます。結果テーブルの [進行状況] 列で、停止またはキャンセルする各試行の赤い正方形のアイコンをクリックします。

たとえば、"7 layers" ネットワークを使用する試行の検証損失が、わずか数回の反復で未定義となったとします。

これらの試行について学習を継続しても、有益な結果は得られません。そのため、学習の完了前に、これらの試行を停止することができます。実験マネージャーは、残りの試行に対する学習を継続します。

学習が完了すれば、停止またはキャンセルした試行を再実行できます。結果テーブルの [進行状況] 列で、試行の緑の三角形アイコンをクリックします。

あるいは、[実験マネージャー] ツールストリップで [キャンセル済みをすべて再開] をクリックすることで、キャンセルした試行をまとめて再実行することもできます。

実験を閉じる

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

参考

| | | | | | | (Parallel Computing Toolbox) | (Parallel Computing Toolbox) | (Parallel Computing Toolbox) | (Parallel Computing Toolbox)

関連するトピック