ニューラルネットワークを段階的にトレーニングすることは可能ですか?


23

出力クラスが最初から(すべて)定義されていないニューラルネットワークをトレーニングしたいと思います。着信データに基づいて、より多くのクラスが後で導入されます。つまり、新しいクラスを導入するたびに、NNを再トレーニングする必要があります。

NNを段階的に、つまり以前のトレーニングフェーズで以前に取得した情報を忘れずにトレーニングするにはどうすればよいですか?

回答:


10

既に述べたことに加えて、あなたの質問は、機械学習の重要な概念である転移学習と関係があると付け加えたいと思います。実際には、時間がかかり、十分なサイズのデータ​​セットを持つことは比較的まれであるため、畳み込みネットワーク全体を(ランダム初期化で)ゼロからトレーニングする人はほとんどいません。

最新のConvNetは、ImageNet上の複数のGPUでトレーニングするのに2〜3週間かかります。したがって、微調整のためにネットワークを使用できる他の人のために、人々が最終的なConvNetチェックポイントをリリースするのを見るのが一般的です。たとえば、Caffeライブラリには、ネットワークの重みを共有するモデル動物園があります。

画像認識にConvNetが必要な場合は、アプリケーションドメインが何であれ、既存のネットワークを使用することを検討する必要があります。たとえば、VGGNetは一般的な選択肢です。

転移学習を実行する際に留意すべき点がいくつかあります。

  • 事前学習済みモデルからの制約。事前に訓練されたネットワークを使用する場合、新しいデータセットに使用できるアーキテクチャの面で多少制約を受ける可能性があることに注意してください。たとえば、事前に訓練されたネットワークからConvレイヤーを勝手に取り出すことはできません。ただし、一部の変更は簡単です。パラメーターの共有により、異なる空間サイズの画像で事前に訓練されたネットワークを簡単に実行できます。これは、Conv / Poolレイヤーの場合、フォワード関数が入力ボリュームの空間サイズに依存していないため(ストライドが「適合する」限り)明らかです。

  • 学習率。新しいデータセットのクラススコアを計算する新しい線形分類器の(ランダムに初期化された)重みと比較して、微調整されているConvNet重みに小さい学習率を使用するのが一般的です。これは、ConvNetの重みが比較的良好であると予想されるためです。そのため、それらをあまりにも速く過度に歪めたくありません(特に、その上の新しい線形分類子がランダム初期化からトレーニングされている間)。

このトピックに興味がある場合の追加リファレンス:ディープニューラルネットワークの機能はどの程度譲渡可能ですか?


転移学習は、インクリメンタル学習を実行する唯一の方法ではありません。
nbro

7

これを行う方法の1つを次に示します。

ネットワークをトレーニングした後、その重みをディスクに保存できます。これにより、新しいデータが利用可能になったときにこの重みをロードし、最後のトレーニングが中断したところからほとんどトレーニングを続けることができます。ただし、この新しいデータには追加のクラスが含まれている可能性があるため、以前に重みを保存した状態でネットワークの事前トレーニングまたは微調整を行うようになりました。この時点で、あなたがしなければならない唯一のことは、最後のレイヤーが新しいデータセットの到着で導入された新しいクラスに対応するようにすることです。最初は10個のクラスがありましたが、さらに2つのクラスが見つかりました。事前トレーニング/微調整の一環として、12個のクラスに置き換えます)。要するに、この円を繰り返します:

繰り返す


最後のレイヤーの新しいクラス(トレーニングクラス+新しいクラス)のみを収容する場合、新しいクラス(のみ)でトレーニングするため、モデルは適合できません。モデルは(トレーニング+新しいクラスクラス、 )。
ジョエルカルネイロ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.