@hbadertsは、ワークフロー全体を完璧に説明しました。ただし、このアイデアにまったく慣れていない場合は意味がありません。したがって、私はそれを素人の方法で説明します(したがって、詳細は省略します)。
ディープネットワークは、データを変換する機能と考えてください。変換の例には、正規化、データのログの取得などが含まれます。トレーニングしているディープネットワークには複数の層があります。これらの各レイヤーは、何らかの学習アルゴリズムを使用してトレーニングされます。最初のレイヤーでは、元のデータを入力として渡し、それらの「同じ元のデータ」を出力として返す関数を取得しようとします。ただし、完全な出力は得られません。したがって、入力の変換されたバージョンを最初のレイヤーの出力として取得します。
次に、2番目のレイヤーでは、これらの「変換されたデータ」を入力として受け取り、学習プロセス全体を繰り返します。ディープネットワーク内のすべてのレイヤーに対してこれを繰り返します。
最後のレイヤーでは、元の入力データの「変換されたバージョン」が取得されます。これは、元の入力データの高レベルの抽象化と考えることができます。ディープネットワークでラベル/出力をまだ使用していないことに注意してください。したがって、この時点まではすべて教師なし学習です。これは、レイヤー単位の事前トレーニングと呼ばれます。
ここで、分類子/回帰モデルをトレーニングします。これは教師付き学習問題です。その目標を達成する方法は、ディープネットワークの最後の層から元の入力の「最終変換バージョン」を取得し、それらを任意の分類器への入力として使用することです(例:knn分類器/ softmax分類器/ロジスティック回帰など)。これはスタッキングと呼ばれます。
この最後のステップの分類器/学習者をトレーニングするとき、すべての学習をネットワーク全体に伝播します。これにより、ラベル/出力から学習し、学習したレイヤーごとのパラメーターを適宜変更できるようになります。
したがって、生成モデルのトレーニングが完了したら、生成モデルの出力を取得し、分類器/学習者への入力として使用します。学習が継続するにつれてエラーがネットワーク全体に流れるようにして、前の手順で学習したレイヤー単位のパラメーターを変更できるようにします。