転移学習 転移学習とは、ある問題で訓練したモデルを、簡単な調整で新しい問題に適したものにすることです。これは、モデルチューニングの「トリッキーな」方法であると言えます。これは、人が 1 つの事例から推論を導き出す能力に例えることができます。 転移学習の特徴 1. 必要なデータ量が少ない 2 つのフィールドがあるとします。1 つのフィールドにはすでに大量のデータがあり、モデルを正常に構築できます。もう 1 つのフィールドには大量のデータはありませんが、前のフィールドに関連しているため、モデルを移行できます。たとえば、化粧品の推奨モデルを作りたいが、データの量が比較的少ない場合は、まず成熟していて比較的安定したジュエリーの推奨モデルを使用してチューニングすることができます。学術界でもクロスドメインの試みがあります。例えば、Web検索をレコメンデーションに移行したり、画像認識をテキスト認識に移行したりできます。 2. トレーニング時間が短縮される GPU のない通常のデスクトップまたはラップトップでは、Google の Inception-v3 モデル (TensorFlow フレームワーク) の転移学習トレーニング プロセスを実装するのに約 5 分しかかかりません。 3. 個別のニーズに簡単に対応 たとえば、毎回設定しなくても済むように、携帯電話にいくつかの習慣を記憶させたいと思う人は多いでしょう。どうすれば携帯電話にこれを記憶させることができるでしょうか? 実際、転移学習は、ユーザーが携帯電話をどのように使用するかという一般的なモデルをパーソナライズされたデータに転移するために使用できます。ただし、データの量が十分な場合、転移学習の効果は一般に完全な再トレーニングほど良くありません。転移学習は、いわゆるコールドスタート問題を解決するための高速かつコンパクトなエンジニアリングに適しています。十分なデータが収集されたら、ディープラーニングに切り替えることができます。 転移学習を実装する4つの方法 1. インスタンスベースの転移学習 一般的に、サンプルは重み付けされ、より重要なサンプルにはより大きな重みが与えられます。 サンプル移行とは、データセット (ソース ドメイン) 内でターゲット ドメインに類似したデータを見つけ、このデータを複数回増幅し、ターゲット ドメインのデータと一致させることです。その特徴は、異なる例に重み付けする必要があり、データをトレーニングに使用する必要があることです。例えば、下の図では、動物認識モデルのソースデータ内の犬の画像の数を増やすことで、犬専用の認識モデルを実現できます。 2. 特徴ベースの転移学習 特徴空間で移行するには、通常、ソース ドメインとターゲット ドメインの特徴を同じ特徴空間に投影する必要があります。 次の図に示すように、特徴の移行は、ソース ドメイン イメージとターゲット ドメイン イメージ間の共通特徴を観察し、観察された共通特徴を使用して異なるレベルの特徴間で自動的に移行することによって実現されます。 3. モデルベースの転移学習 モデル全体を対象分野に適用します。たとえば、事前にトレーニングされたディープ ネットワークを微調整することがよく行われ、これはパラメータ転送とも呼ばれます。 モデル転送では、数千万枚の画像を使用して画像認識システムをトレーニングします。新しい画像ドメインに遭遇した場合、トレーニング用に数千万枚の画像を探す必要がなくなります。元の画像認識システムを新しいドメインに転送できるため、数万枚の画像のみを使用して新しいドメインで同じ効果を実現できます。モデル移行の利点の 1 つは、区別できること、つまりディープラーニングと組み合わせることができることです。異なるレベルの移行の程度を区別することができ、類似性が高いレベルは移行される可能性が高くなります。 ここに例があります。たとえば、トレーニング済みの Inception-v3 を調整して、新しい画像分類の問題を解決したいとします。論文「DeCAF: 汎用視覚認識のための深層畳み込み活性化機能」の結論によれば、トレーニング済みの Inception-v3 モデル内のすべての畳み込み層のパラメータは保持でき、最後の完全に接続された層のみを置き換えることができます。 *** 完全接続層の前のネットワーク層はボトルネック層と呼ばれます。 トレーニング済みの畳み込みニューラル ネットワークに新しい画像をボトルネック層まで通過させるプロセスは、画像から特徴を抽出するプロセスと見なすことができます。トレーニング済みの Inception-v3 モデルでは、ボトルネック層の出力は単層の全接続ニューラル ネットワークに渡すことで 1,000 種類の画像を適切に区別できるため、ボトルネック層によって出力されたポイント ベクトルは、任意の画像に対する新しい単層の全接続ニューラル ネットワークとして使用して、新しい分類問題を処理できると考えるのが妥当です。 4. 関係転移学習 ソーシャル ネットワーク、ソーシャル ネットワーク間の移行など。 ソースドメインとターゲットドメインが同じかどうか、ソースタスクとターゲットタスクが同じかどうか、ソースドメインとターゲットドメインにラベル付きデータがあるかどうかに応じて、転移学習は次の図のように分けられます。 最先端の転移学習の方向性 1. 強化転移学習 インテリジェント エージェントによって学習された知識を転送する方法: たとえば、ゲームを学習した場合、同様の戦略を別の同様のゲームに適用することもできます。 2. 推移的転移学習 推移的転移学習: 2 つのドメインが離れすぎている場合は、いくつかの中間ドメインを挿入し、段階的に移行を実行します。 3. ソースフリー転移学習 ソースドメインがわからない場合に転移学習を実行する方法。 2 番目に、現在いくつかの代表的なデータ セットがあり、十分な食料と衣服がある段階に達している場合、すべてのデータから価値を絞り出したいが、一般化が多すぎる (一般に過剰適合と呼ばれる) ことを恐れています。その場合、以下のテクニックが必要になるかもしれません。 過剰適合を避けるように注意してください(最善を尽くして聞いてください...) ディープラーニングではハイパーパラメータの数が多いため、トレーニングサンプルの数がハイパーパラメータに比べて若干不足し、注意しないとオーバーフィッティングが発生しやすくなります。本質的には、オーバーフィッティングはモデルの学習能力が強すぎるために発生します。サンプル空間の共通特性を学習するだけでなく、トレーニングサンプルセット内のノイズも学習します。これらのノイズの存在により、モデルの一般化パフォーマンスが低下します。 ディープラーニングにおけるオーバーフィッティングを改善するために一般的に使用される方法がいくつかあります。 1. データ拡張 データ拡張はデータの強化であり、実際にはトレーニング サンプルを増やす方法です。顔認識を例にとると、顔認識のデータ強化には通常、ランダムな切り抜き、ランダムな照明、ランダムな左右反転などが含まれます。 同様の手段により、画像処理、音声処理、自然言語処理のいずれにおいても、サンプル数を効果的に増やすことができます。トレーニング サンプルが増えると、モデルはより多くの重要な機能を学習でき、ノイズに対する堅牢性が向上し、一般化のパフォーマンスが向上し、過剰適合を効果的に回避できるようになります。 2. 早期終了 早期停止は、その名前が示すように、トレーニング回数が事前に設定された最大トレーニング回数に達しない場合に、ネットワークのトレーニングを停止することを意味します。早期停止を使用するには、トレーニング セットのごく一部 (約 10% ~ 30%) を検証セットとして割り当てる必要があります。検証セットはトレーニングには参加せず、結果がわかっているテスト セットと見なすことができます。検証セットでのモデルのパフォーマンスをリアルタイムで監視します (リアルタイム監視は、すべての反復を監視することを意味するのではなく、1,000 回ごとに観察できます)。検証セットでのモデルのパフォーマンスが下降傾向を示したら、トレーニングを停止します。それ以上のトレーニングはモデルの一般化パフォーマンスを悪化させるだけだからです。 実際のトレーニングでは、常にコンピューターの前に座って検証セットの精度を観察できるわけではありません。より一般的なアプローチは、モデルを定期的に (たとえば、1,000 回の反復ごとに) 保存し、検証セットに最も効果のあるモデルを最終モデルとして選択することです。 3. ドロップアウトレイヤーを追加する Dropout の原理 (https://www.cs.toronto.edu/~hinton/absps/JMLRdropout.pdf) は非常にシンプルです。 Dropout はレイヤー上で動作します。レイヤー内の各ノードについて、Dropout テクノロジは、特定の確率 p でノードをトレーニング プロセスに参加させません (つまり、順方向伝導中の計算には参加せず、bp 計算中の勾配更新にも参加しません)。 上の図に示すように、Dropout の効果は非常に爆発的で、モデルのトレーニングに非常に良い効果があることが実験によって証明されています。 Dropout がなぜこれほどうまく機能するのでしょうか? 理由の 1 つは、ドロップアウトによってノード間の結合が減少し、ノードが他のノードに対してそれほど敏感ではなくなるため、モデルがより堅牢な機能を学習できるようになることです。 2 つ目は、ドロップアウト レイヤーの各ノードが完全にはトレーニングされていない (出席率が半分しかないため) ため、トレーニング サンプルの過剰学習が回避されることです。 3 番目の理由は、テスト段階では、ドロップアウト レイヤーのすべてのノードが使用され、アンサンブルとして機能し、アンサンブルによってモデルの過剰適合を効果的に克服できることです。 実際のモデルトレーニングでは、ドロップアウトの一般的なフレームワークにおける初期のデフォルトのドロップアウト率 0.5 の確率は保守的な選択です。モデルがそれほど複雑でない場合は、0.2 に設定すれば十分です。 ただし、Dropout の欠点にも注意する必要があります。 (1)ドロップアウトはモデルの有効容量を減らす正則化手法である。この影響を打ち消すには、モデルのサイズを大きくする必要があります。当然のことながら、Dropout を使用すると検証セット エラーは大幅に低くなりますが、その代償としてモデルが大きくなり、トレーニング アルゴリズムの反復回数が増えます。非常に大規模なデータセットの場合、正規化によってもたらされる一般化誤差の減少は最小限です。 このような場合、ドロップアウトや大規模なモデルを使用する計算コストが正規化の利点を上回る可能性があります。 (2)トレーニングサンプルが少数しか利用できない場合、ドロップアウトはあまり効果的ではない。 4. 重量ペナルティ(L1&L2) 4 番目によく使用される方法は重み減衰です。これは、モデルに L1 ノルムと L2 ノルムを通じてより小さな重みを学習させるものです。 ここでは 2 つの問題があります。 (1)なぜL1ノルムとL2ノルムは比較的小さな重みを学習できるのか? (2)なぜ重みを小さくすると過剰適合を防ぐことができるのか? 最初の質問について: まず、L1とL2の定義を見てみましょう。 ここで、C0 はペナルティ項のないコスト関数です。では、L1 コスト関数と L2 コスト関数は w の値にどのように影響するのでしょうか? 1) ペナルティ期間を追加せずに更新するw 2) L1におけるwの更新。uは学習率 3) L2におけるwの更新、uは学習率 上記(1)(2)(3)から、ペナルティ項を追加した後、wが大幅に減少することがわかります。 L1 は w に減算的に影響し、L2 は w に乗算的に影響するため、L2 は重み減衰とも呼ばれます。 2番目の質問について: オーバーフィッティングの本質は何でしょうか? それは、本質的な特徴ではないノイズに過度に敏感になり、トレーニング サンプル内のノイズを特徴として扱うことで、テスト セットでのパフォーマンスが非常に低下することになります。重みが比較的小さい場合、入力にわずかな変化(ノイズ)があっても結果への影響は少ないため、ペナルティ項によって過剰適合をある程度防ぐことができます。 データの多様性を高めるためにあらゆる努力をすることに加えて、モデルの多様性も高めなければならない。 1. 隠れ層の単位と量を調整してみる モデルを調整するときは、寛容な姿勢で物事を成り行きに任せましょう。隠し層のユニットとその量を調整して、GPU がアイドル状態にならないようにすることができます。自分に合ったモデルが必ず見つかります。 一般的に、隠れユニットの数によって、モデルがアンダーフィットかオーバーフィットかが決まります。2 つの悪のうちよりましな方を選択するときは、正規化方法によってオーバーフィットを回避できるため、より多くの隠れユニットを選択するようにしてください。同様に、テストエラーが変化しなくなるまで、可能な限り多くの隠し層を追加します。 2. 2つ以上のモデルを連結してみる たとえば、解像度が異なる 2 つの画像データセットがあり、それぞれネットワーク モデル A と B をトレーニングする場合、A と B のボトルネック レイヤーを連結し、完全に接続されたレイヤー (または任意のレイヤー) に接続して、連結した画像を入力します。トレーニング結果は、単一のネットワーク モデルの場合よりもはるかに優れている可能性があります。 損失関数 ここでは、モデルチューニングのトリックの観点からのみ紹介します。 Softmax 損失は最も一般的に使用される損失方法ですが、Softmax 損失はすべての問題に適しているわけではありません。たとえば、データ量が十分でない場合、ソフトマックスでトレーニングされた顔モデルのパフォーマンスは低くなります。ECCV 2016 の記事 (A Discriminative Feature Learning Approach for Deep Face Recognition) では、トレードオフのソリューションが提案されています。中心損失を追加することで、単純なソフトマックスを凝集性のある特徴を持つようにトレーニングできます。この機能は顔認識において特に重要であり、非常に少ないデータでトレーニングされたモデルがうまく機能することを可能にします。さらに、コントラスト損失とトリプレット損失にも独自の利点があり、サンプリングプロセスが必要です。興味のある方は、それらについて詳しく知ることができます。 ファンシーチューニング 1. バッチサイズの設定 バッチ サイズは、マルチコア CPU や GPU アクセラレーションに関係なく、メモリ管理ではハードウェア最適化の基本単位としてバイトが使用されるため、一般的に 64、128、512 などの 2 の指数倍数に設定されます。2 の倍数に設定すると、行列スライスやテンソル計算などの操作のハードウェア処理効率が効果的に向上します。 バッチ サイズが異なるモデルでは、予期せぬ精度の向上がもたらされる場合があります。この調整には、実際に特定のルールとテクニックがあります。 2. 活性化関数 活性化関数は、モデルに必要な非線形因子を導入します。シグモイド関数は、微分可能な性質があるため、従来のニューラル ネットワークには最適な選択肢ですが、深層ネットワークでは勾配消失や非ゼロ中心の問題が発生します。 Tanh 関数は、非ゼロ中心の問題を回避します。 ReLU 活性化関数は人気があり、学習と最適化が簡単です。区分線形特性のため、順方向伝播、逆方向伝播、および導出はすべて区分線形です。ただし、従来のシグモイド関数は、両端の飽和により伝播プロセス中に情報が破棄される傾向があります。 ReLU 活性化関数の欠点は、勾配ベースの方法を使用できないことです。同時に、非アクティブ化されると、再びアクティブ化できなくなる可能性が高くなります。しかし、maxout アクティベーション関数を使用する解決策はあります。 3. 重みの初期化 重みの初期化では、ネットワーク ユニットの対称性を回避するためにランダム生成方式がよく使用されますが、それでもまだ大まかすぎます。最新の実験結果によると、重みの均一分布初期化が最良の選択です。同時に、均一分布の機能範囲はユニットの接続数によって決まります。つまり、接続が多いほど、重みは小さくなります。 Tensorflow の word2vec プログラムで重みを初期化する例。初期の重み値は均一分布からランダムにサンプリングされます。 4. 学習率 学習率は重要なハイパーパラメータの 1 つであり、収束速度と収束が発生するかどうかの間のトレードオフです。 0.01 を選択するか、反復しながら徐々に減らしていくことは、どちらも合理的な選択です。最新の方法では、目的関数の曲率に基づく運動量や適応パラメータ調整など、学習率の自動調整の研究が始まっています。 5. 最適化アルゴリズムを選択する 従来の確率的勾配降下法アルゴリズムは広く適用可能ですが、効率的ではありません。最近では、Adagrad や RMSProp など、反復最適化中に学習率などのハイパーパラメータを適応的に調整して、より良い結果を達成できる、より柔軟な最適化アルゴリズムが数多く登場しています。 |
>>: 自動機械学習でニューラルネットワークを進化させる方法
記事の冒頭では、サッカーの試合解説ビデオを見てみましょう。それは正しいように聞こえませんか?あなたの...
[[433557]]ニューラル ネットワークの制限を無限の数の残差層の組み合わせとして見ると、その...
最近、人工知能分野での成功事例や投資発表が急増し、ビジネス界の注目と関心を集めています。最近の AI...
ビッグデータダイジェスト制作ディープラーニングの三大巨頭の一人として知られるヤン・ルカン氏は、常に楽...
Huaweiの才能あふれる若者Zhihuiの起業家デビューがついに登場!観衆の注目が集まる中、「Ex...
この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...
手作業による除草は時間がかかり、労力もかかりますが、除草剤を散布するのは決して環境に優しくありません...
1月22日、日本で最も権威のある文学賞である芥川賞を受賞した作家が、受賞作である小説「東京同情塔」の...
火の使用はホモ・サピエンスの進化における重要な要素であり、より複雑な道具の作成を可能にしただけでなく...
[[428125]]この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI...
人工知能(AI)は、機械によって発揮される知能であるという点で人間の知能とは異なります。しかし、直接...