MATLAB による深層学習モデルの学習
さまざまな方法で深層学習モデルの学習とカスタマイズを行うことができます。たとえば、新しいデータを使用して事前学習済みのモデルに再学習させたり (転移学習)、ネットワークにゼロから学習させたり、深層学習モデルを関数として定義してカスタム学習ループを使用したりすることができます。このフロー チャートを使用して、自分のタスクに最適な学習手法を選択できます。
ヒント
オブジェクト検出用などのコンピューター ビジョンのワークフローに関する詳細については、コンピューター ビジョンを参照してください。TensorFlow™-Keras、Caffe、および ONNX™ (Open Neural Network Exchange) モデル形式からネットワークやネットワーク アーキテクチャをインポートする方法の詳細については、外部のプラットフォームからの事前学習済みのネットワークを参照してください。
学習手法
次の表に、さまざまな学習手法の詳細を示します。
手法 | 詳細 |
---|---|
ネットワークを直接使用する | 必要なタスクが事前学習済みのネットワークによって既に実行されている場合、そのネットワークに再学習させる必要はありません。代わりに、関数 例については、GoogLeNet を使用したイメージの分類を参照してください。 |
trainet を使用したネットワークの学習 | 層配列または ネットワークの再学習 (転移学習) を行う方法を示す例については、Retrain Neural Network to Classify New Imagesを参照してください。ネットワークにゼロから学習させる方法を示す例については、分類用のシンプルな深層学習ニューラル ネットワークの作成を参照してください。 |
カスタム学習ループを使用したネットワークの学習 | ほとんどのタスクでは、関数 関数ハンドルを使用して指定できない損失関数、または層のネットワークとして指定できないモデルの場合は、カスタム学習ループを使用してモデルに学習させることができます。 カスタム学習率スケジュールでネットワークに学習させる方法を示す例については、カスタム学習ループを使用したネットワークの学習を参照してください。 層のネットワークとして指定できないモデルの場合は、モデルを関数として定義できます。関数として定義される深層学習モデルの学習を行う方法を示す例については、モデル関数を使用したネットワークの学習を参照してください。 詳細については、カスタム学習ループ、損失関数、およびネットワークの定義を参照してください。 |
判定
次の表に、フロー チャート内の各判定に関する詳細を示します。
判定 | 詳細 |
---|---|
適切な事前学習済みのネットワークがソフトウェアによって提供されるか | ほとんどのタスクにおいて、SqueezeNet などの事前学習済みのネットワークを使用したりネットワークに再学習させたりできます。 MATLAB® の事前学習済みの深層学習ネットワークの一覧については、事前学習済みの深層ニューラル ネットワークを参照してください。事前学習済みのネットワークは、新しいデータを使って直接使用するか、別のタスクで使用できるように新しいデータを使用して再学習 (転移学習) させることができます。 |
再学習せずにネットワークを使用できるか | 必要なタスクが事前学習済みのネットワークによって既に実行されている場合、再学習させることなくそのネットワークを直接使用できます。たとえば、事前学習済みの SqueezeNet ニューラル ネットワークを使用して、イメージを 1000 個のクラスに分類できます。事前学習済みの SqueezeNet ニューラル ネットワークを読み込むには、 ネットワークに再学習させる必要がある場合 (異なるクラスのセットに分類する場合など)、転移学習を使用してネットワークに再学習させることができます。例については、Retrain Neural Network to Classify New Imagesを参照してください。 |
モデルを層配列または層のネットワークとして定義できるか | ほとんどの深層学習モデルは、層配列または層のネットワークとして指定できます。すなわち、層の出力が他の層の入力に接続された層の集合としてモデルを定義できます。 一部のモデルはニューラル ネットワークとして定義することができません。たとえば、ツイン ネットワークは重みを共有する必要があり、ニューラル ネットワークとして定義できません。そのようなモデルでは、モデルを関数として定義しなければなりません。例については、モデル関数を使用したネットワークの学習を参照してください。 |
必要な層がソフトウェアによって提供されるか | Deep Learning Toolbox™ には、深層学習タスク用の層が数多く用意されています。層の一覧については、深層学習層の一覧を参照してください。 必要な層がソフトウェアによって提供される場合は、それらの層を、その配列またはニューラル ネットワークとして定義できます。そうでない場合は、サポートされていない層をカスタム層として定義してみてください。詳細については、カスタム深層学習層の定義を参照してください。 |
サポートされていない層をカスタム層として定義できるか | 必要な層がソフトウェアによって提供されない場合、カスタム深層学習層の定義を試すことができます。詳細については、カスタム深層学習層の定義を参照してください。 サポートされていない層をカスタム層として定義できる場合、これらのカスタム層を層配列またはニューラル ネットワークに含めることができます。そうでない場合は、関数を使用して深層学習モデルを指定し、カスタム学習ループを使用してモデルに学習させます。例については、モデル関数を使用したネットワークの学習を参照してください。 |
必要な損失関数が関数 trainnet によって提供されるか | 関数 必要な損失関数が関数 |
損失関数を関数ハンドルとして定義できるか | 必要な損失関数が関数 損失関数を関数ハンドルとして定義できる場合は、これを関数 |
必要なオプションが関数 trainingOptions に用意されているか | 関数 カスタム学習率スケジュールなど、必要な学習オプションが関数 |
参考
trainnet
| trainingOptions
| dlnetwork