事前に学習したモデルを用いて新しいモデルを高速に学習するディープラーニングのアプローチ

転移学習は、既に学習されたモデルを、他の類似タスクのモデルを学習するために使用する深層学習アプローチです。転移学習を用いたネットワークは、ディープラーニング モデルをゼロから学習させるよりも迅速で簡単に使用できます。この転移学習のアプローチは一般的に、物体検出、画像認識、音声認識等で使用されています。

転移学習は次の理由からよく利用されています。

  • 既に大規模なデータセットで学習されているモデルを利用して、比較的少ないラベル付きデータからモデルを学習することができる
  • 学習時間と計算リソースを大幅に削減できる。新しいモデルの学習には多くのエポック(全データセットを使った1トレーニングサイクル)数を必要としますが、転移学習の場合はそれが少なく済みます。

ゼロからの学習 vs. 転移学習

ディープラーニングでよく使用される2つのアプローチは、ゼロからのモデル学習と転移学習です。どちらのアプローチにも利点があり、異なる深層学習のタスクに使用することができます。

ゼロからモデルを開発し、学習することは、既存のモデルを使用できない特殊なタスクにおいて有効です。ただし、一般的にこの方法は、正確な結果を得るためには大量のデータを必要とします。例えば、テキストを検証する際、多数のデータサンプルを必要とします。テキスト分析において事前に学習されたモデルを利用できない場合は、ゼロからモデルを開発することが推奨されます。

転移学習は、物体認識などに適していて、AlexNetやGoogLeNetなどの既に学習済みの様々なモデルをベースとして使用することができます。例えば、花の分類タスクにおいて、利用可能なデータが限られている植物学のプロジェクトがある場合、画像を1,000カテゴリに分類するAlexNetモデルから重みやレイヤーを活用し、最終的な分類レイヤーだけを置き換えることで実現できます。

ゼロからモデルをトレーニングする場合と転移学習を行う場合の比較

下のグラフは、転移学習を用いたモデルとゼロから学習したモデルのネットワークパフォーマンスを示しています。転移学習では、より短時間で、より高い精度のモデルを実現できます。

  1. Select a pretrained model. When getting started, it can help to select a relatively simple model. This example uses GoogLeNet, a popular network with 22 layers deep that has been trained to classify 1000 object categories.

転移学習はどのように実装されるのでしょうか?

このアプローチは、一般的に以下のような手順を踏みます:

  1. 事前学習済みネットワークをロードする。新しいタスクに似た、関連性のある学習済みのネットワークを選択します
  2. 新しいタスクの分類レイヤーに置き換えます。新しいタスクと利用可能なデータ数に応じて、重みを微調整することもできます。一般的に、データが多ければ多いほど、調整するレイヤーの数を多くできます。データが少ない場合、過適合を起こすことがあります
  3. 新しいタスクのデータでネットワークを学習します
  4. 新しいネットワークの精度をテストします

転移学習のワークフロー

  • After modifying the layers, the final fully connected layer will specify the new number of classes the network will learn, and the classification layer will determine outputs from the new output categories available.  For example, GoogLeNet was originally trained on 1000 categories, but by replacing the final layers you can retrain it to classify only the five (or any other number) categories of objects you are interested in.
  1. Optionally freeze the weights. You can freeze the weights of earlier layers in the network by setting the learning rates in those layers to zero. During training, the parameters of frozen layers are not updated, which can significantly speed up network training. If the new data set is small, then freezing weights can also prevent overfitting of the network to the new data set.
  2. Retrain the model. Retraining will update the network to learn and identify features associated with the new images and categories. In most cases, retraining requires less data than training a model from scratch.
  3. Predict and assess network accuracy. After the model is retrained, you can classify new images and evaluate how well the network performs.

    Training from Scratch or Transfer Learning?

    The two commonly used approaches for deep learning are training a model from scratch and transfer learning.

    Developing and training a model from scratch works better for highly specific tasks for which preexisting models cannot be used. The downside of this approach is that it typically requires a large amount of data to produce accurate results. If you’re performing text analysis, for example, and you don’t have access to a pretrained model for a text analysis but you do have access to a large number of data samples, then developing a model from scratch is likely the best approach.

    Transfer learning is useful for tasks such as object recognition, for which a variety of popular pretrained models exist. For example, if you need to classify images of flowers and you have a limited number of flower images, you can transfer weights and layers from an AlexNet network, replace the final classification layer, and retrain your model with the images you have.

Transfer learning workflow: Load network, replace layers, train network, and assess accuracy..

In such cases, it is possible to achieve higher model accuracy in a shorter time with transfer learning.

Comparing the network performance (accuracy) of training from scratch and transfer learning..

An Interactive Approach to Transfer Learning

Using Deep Network Designer you can interactively complete the entire transfer learning workflow –  including importing a pretrained model, modifying the final layers, and retraining the network using new data – with little or no coding.

Deep Network Designer is a point-and-click tool for creating or modifying deep neural networks in MATLAB. This video shows how to use the app in a transfer learning workflow.

For more information, see Deep Learning Toolbox and Computer Vision Toolbox™.

転移学習の詳細は Deep Learning Toolbox™ や Computer Vision Toolbox™を参照ください。

参考: deep learning, convolutional neural networks, GPU Coder, artificial intelligence, AdaBoost, 教師あり学習, Statistics and Machine Learning Toolbox