AI 101
転移学習とは何か?

転移学習とは何か?
機械学習を実践する際、モデルのトレーニングには長い時間がかかることがあります。ゼロからモデルアーキテクチャを作成し、モデルをトレーニングし、その後モデルを調整するのは、膨大な時間と労力を要します。機械学習モデルをトレーニングするはるかに効率的な方法は、既に定義されているアーキテクチャを、場合によっては既に計算された重みと共に使用することです。これが転移学習の背後にある主要な考え方であり、既に使用されたモデルを取得し、新しいタスクのために再利用することです。 転移学習のさまざまな使用方法について掘り下げる前に、なぜ転移学習がこれほど強力で有用な技術なのかを理解する時間を取りましょう。
深層学習問題の解決
画像分類器の構築のような深層学習問題を解決しようとするときは、モデルアーキテクチャを作成し、その後自分のデータでモデルをトレーニングする必要があります。モデル分類器のトレーニングには、ネットワークの重みを調整することが含まれ、このプロセスはモデルとデータセットの複雑さに応じて数時間または数日かかる場合があります。トレーニング時間は、データセットのサイズとモデルアーキテクチャの複雑さに応じてスケールします。 モデルがタスクに必要な精度を達成しない場合、モデルの調整が必要になり、その後モデルを再トレーニングする必要があるでしょう。これは、最適なアーキテクチャ、トレーニング期間、データセット分割が見つかるまで、さらに何時間ものトレーニングを意味します。分類器が有用であるためにはどれだけ多くの変数が互いに調整されなければならないかを考えると、機械学習エンジニアが常にモデルをトレーニングし実装するより簡単で効率的な方法を探しているのは当然です。この理由から、転移学習技術が生まれました。 モデルを設計してテストした後、そのモデルが有用であることが証明されれば、保存して後で類似の問題に再利用することができます。
転移学習の種類
一般的に、転移学習には2つの異なる種類があります:ゼロからモデルを開発する方法と、事前学習済みモデルを使用する方法です。 ゼロからモデルを開発する場合、トレーニングデータを解釈し、そこからパターンを抽出できるモデルアーキテクチャを作成する必要があります。モデルが初めてトレーニングされた後、モデルから最適なパフォーマンスを引き出すために、おそらくモデルに変更を加える必要があるでしょう。その後、モデルアーキテクチャを保存し、類似のタスクに使用されるモデルの出発点として使用できます。 2つ目の条件、つまり事前学習済みモデルの使用では、単に使用する事前学習済みモデルを選択するだけです。多くの大学や研究チームは、彼らのモデルの仕様を一般利用向けに公開しています。モデルのアーキテクチャは重みと共にダウンロードできます。 転移学習を行う際、モデルアーキテクチャと重みの全体を対象のタスクに使用することも、モデルの特定の部分/レイヤーのみを使用することもできます。事前学習済みモデルの一部のみを使用し、モデルの残りをトレーニングすることをファインチューニングと呼びます。
ネットワークのファインチューニング
ネットワークのファインチューニングは、ネットワーク内の一部のレイヤーのみをトレーニングするプロセスを説明します。新しいトレーニングデータセットが元のモデルのトレーニングに使用されたデータセットと非常に似ている場合、多くの同じ重みを使用できます。 ネットワーク内で凍結を解除して再トレーニングすべきレイヤーの数は、新しいデータセットのサイズに応じてスケールするべきです。トレーニング対象のデータセットが小さい場合、大多数のレイヤーをそのまま保持し、最後の数レイヤーのみをトレーニングするのがより良い実践です。これはネットワークの過学習を防ぐためです。あるいは、事前学習済みネットワークの最終レイヤーを削除し、新しいレイヤーを追加して、それをトレーニングすることもできます。対照的に、データセットが大規模なデータセット、場合によっては元のデータセットよりも大きい場合は、ネットワーク全体を再トレーニングするべきです。ネットワークを固定特徴抽出器として使用するには、ネットワークの大部分を使用して特徴を抽出し、ネットワークの最終レイヤーのみを凍結解除してトレーニングすることができます。 ネットワークをファインチューニングする際は、ConvNetの初期レイヤーには、画像のより一般的な特徴を表す情報が含まれていることを覚えておいてください。これらはエッジや色などの特徴です。対照的に、ConvNetの後期レイヤーには、モデルが最初にトレーニングされたデータセット内に含まれる個々のクラスに特有の詳細が保持されています。元のデータセットとはかなり異なるデータセットでモデルをトレーニングする場合は、モデルの初期レイヤーを使用して特徴を抽出し、モデルの残りの部分のみを再トレーニングしたいと考えるでしょう。
転移学習の例
転移学習の最も一般的な応用例は、おそらく入力として画像データを使用するものです。これらは多くの場合、予測/分類タスクです。畳み込みニューラルネットワークが画像データを解釈する方法は、モデルの側面を再利用することに向いています。なぜなら、畳み込み層は非常に類似した特徴を識別することが多いからです。一般的な転移学習問題の一例は、ImageNet 1000タスクです。これは1000の異なるオブジェクトクラスで構成される大規模なデータセットです。このデータセットで高いパフォーマンスを達成するモデルを開発する企業は、しばしば他の人が再利用できるライセンスの下でモデルを公開します。このプロセスから生まれたモデルには、Microsoft ResNetモデル、Google Inception Model、Oxford VGG Modelグループなどがあります。








