ディープラーニングの知識ポイントを包括的にまとめたもの

記事ディレクトリ

画像ニューラル ネットワークと深層学習の構造 (写真は「ニューラル ネットワークと深層学習」から選択 - Qiu Xipeng)

1. ディープラーニングの概念

1. ディープラーニングの定義

ディープラーニングの定義: 一般に、多層ネットワーク構造をトレーニングすることによって未知のデータを分類または回帰することを指します。

深層学習の分類: 教師あり学習手法 - 深層フィードフォワード ネットワーク、畳み込みニューラル ネットワーク、リカレント ニューラル ネットワークなど。

教師なし学習手法 - ディープビリーフネット、ディープボルツマンマシン、ディープオートエンコーダーなど。

ディープラーニングの考え方:

ディープ ニューラル ネットワークの基本的な考え方は、複数層の高レベルの機能を通じてデータの抽象的な意味情報を表現し、より優れた機能の堅牢性を得るために、ターゲットを複数の層で表す多層ネットワークを構築することです。 。

2. 深層学習アプリケーション

画像処理分野での主な用途

  • 画像分類(物体認識):画像全体の分類または認識
  • オブジェクト検出: 画像内のオブジェクトの位置を検出し、オブジェクトを識別します。
  • 画像のセグメンテーション: エッジに従って画像内の特定のオブジェクトをセグメント化します。
  • 画像回帰: 画像内のオブジェクトのコンポーネントの座標を予測します。

音声認識分野の主な用途

  • 音声認識: 音声をテキストとして認識します。
  • 声紋認識: 誰の声かを識別します
  • 音声合成:テキストに基づいて特定の人の音声を合成します。

自然言語処理分野の主な応用例

  • 言語モデル: 前の単語に基づいて次の単語を予測します。
  • 感情分析: テキストに反映されている感情 (肯定的または否定的、肯定的または否定的、または複数の態度タイプ) を分析します。
  • ニューラル機械翻訳: 統計的言語モデルに基づく多言語翻訳。
  • ニューラル自動要約: テキストから要約を自動的に生成します。
  • 機械読解: テキストを読んで質問に答えたり、多肢選択式の質問に答えたり、空白を埋めたりします。
  • 自然言語推論: 1 つの文 (前提) に基づいて別の文 (結論) を推測します。

包括的なアプリケーション

  • 画像説明:画像を元に画像の説明文を記載します
  • ビジュアル Q&A: 画像またはビデオに基づいて質問に回答します
  • 画像生成: テキストの説明に基づいて画像を生成します。
  • ビデオ生成: ストーリーに基づいてビデオを自動的に生成します

2. ニューラルネットワークの基礎

1. ニューラルネットワークの構成

Artificial Neural Networks (略して ANN) は、動物のニューラル ネットワークの行動特性を模倣し、分散並列情報処理を実行するアルゴリズム数学モデルです。この種のネットワークは、システムの複雑さに依存して、多数の内部ノード間の相互接続関係を調整することで情報処理の目的を達成し、自己学習して適応する能力を備えています。ニューラル ネットワークには多くの種類がありますが、その中で最も重要なものは多層パーセプトロンです。ニューラル ネットワークを詳しく説明するために、最も単純なニューラル ネットワークから始めます。

パーセプトロン

パーセプトロンは 1957 年にローゼンブラットによって提案され、ニューラル ネットワークとサポート ベクター マシンの基礎です。

パーセプトロンは生物学に触発されています。その参照オブジェクトと理論的基礎は、以下の図に見ることができます: (私たちの脳は、ニューラル ネットワーク、生物学的ニューラル ネットワークとして考えることができます。この生物学的ニューラル ネットワーク内では、その最小単位を考えることができます。 「ニューロン、ニューロンとして。これらの多くのニューロンが接続されて複雑なネットワークを形成しており、これをニューラルネットワークと呼びます。もちろん、今話している深層学習には機械学習も含まれます。ニューラルネットワークとは実際には人工ニューラルネットワークを指します。 ANNと略します。単純化しただけです。私たちの人間のニューラルネットワークはこのようなニューロンで構成されており、このニューロンが何らかの働きをしています。仕組みとしては、以下のような構造を経て、最初に何らかの信号が受信されます。これらの信号は、樹状突起組織はこれらの信号を受け取り、細胞内の核に送ります これらの信号を細胞核は受け取ります これらの信号はどのような形で存在しますか? これらの信号は、目で受け取る光信号や音などです耳で受け取った信号が樹状突起に到達すると微弱な生体電気が発生し、このように形成されます 何らかの刺激があり、収集され受信された刺激は細胞核で総合的に処理され、その信号が一定の閾値に達すると、活性化されて刺激出力が生成され、それから脳が受け取るさらなる信号が形成され、その後軸索の出力を通じて計算されます。これが人間の脳のニューロンが知覚するときの一般的な動作原理です。 。)

2

単純なパーセプトロンを以下に示します。

画像の説明を追加してください

画像

適切な x と b を設定すると、単純なパーセプトロン ユニットの NAND ゲートは次のように表現されます。

画像

入力が 0, 1 の場合、パーセプトロンの出力は 0 × ( − 2 ) + 1 × ( − 2 ) + 3 = 1 となります。

より複雑なパーセプトロンは、単純なパーセプトロン ユニットで構成されます。

画像

多層パーセプトロン

多層パーセプトロンはパーセプトロンに由来し、複数のニューロン層を持つことが大きな特徴であり、ディープニューラルネットワークとも呼ばれます。個別のパーセプトロンと比較すると、多層パーセプトロンの i ii 番目の層の各ニューロンは、i − 1 i-1i−1 層の各ニューロンと接続しています。

画像

出力層には 11 個を超えるニューロンを含めることができます。隠れレイヤーは 11 個のみ、または複数のレイヤーが存在する可能性があります。出力層に複数のニューロンがあるニューラル ネットワークの例を次の図に示します。

ここに画像の説明を挿入します

2. ニューラル ネットワークの一般的なモデル構造は何ですか?

人工ニューラルネットワークはニューロンモデルで構成されており、多数のニューロンから構成される並列分散構造の情報処理ネットワークです。

4.3

円形のノードはニューロンを表し、四角形のノードはニューロンのグループを表します。

以下の図には、最も一般的に使用されるモデルが含まれています。

画像

3. 順伝播と逆伝播の概要

ニューラル ネットワークには主に 2 種類の計算があります: 順伝播 (FP) は各層の入力に作用し、出力結果は層ごとの計算によって取得されます; 逆伝播 (BP) はネットワークの出力に作用します、勾配を計算し、ネットワーク パラメーターを深いものから浅いものに更新します。

順伝播

画像

この層のノード w ww に、上位層のノード i、j、k、...i、j、k、...i、j、k、... および他のノードが接続されていると仮定します。ノード www 値を計算するにはどうすればよいですか? それは、前の層のノード i、j、k、...i、j、k、...i、j、k、... と対応する接続​​重みを介して重み付けされた合計演算を実行することです。最終結果には一部の設定項目(図では簡略化のため省略)が追加され、最後に R e L u ReLuReLu、sigmoid sigmoidsigmoid などの非線形関数 (活性化関数) を介して最終結果が出力されます。この層のノード www の。

最後に、このメソッドを通じてレイヤーごとの操作を継続的に実行することにより、出力レイヤーの結果が取得されます。

誤差逆伝播法

画像

分類を例にとると、最終結果は順伝播によって得られるため、最終的には必ず誤差が生じます。では、誤差を減らすにはどうすればよいでしょうか? 現在広く使用されているアルゴリズムの 1 つは勾配降下アルゴリズムですが、勾配を求めるには次の図は、漢字を例として考えてみましょう。

画像

このセクションは更新されます。

3. ハイパーパラメータ

1 ハイパーパラメータとは何ですか?

ハイパーパラメータ: 機械学習のコンテキストでは、ハイパーパラメータは、トレーニングを通じて取得されるパラメータ データではなく、学習プロセスを開始する前に値が設定されるパラメータです。通常、学習のパフォーマンスと効果を向上させるには、ハイパーパラメータを最適化し、学習機械に最適なハイパーパラメータのセットを選択する必要があります。

ハイパーパラメータは通常、次の場所に存在します。

1.  定义关于模型的更高层次的概念,如复杂性或学习能力。
2.  不能直接从标准模型培训过程中的数据中学习,需要预先定义。
3.  可以通过设置不同的值,训练不同的模型和选择更好的测试值来决定

具体的には、アルゴリズムにおける学習率、勾配降下法の反復回数(イテレーション)、隠れ層の数(隠れ層)、隠れ層ユニットの数、活性化関数(活性化関数)などのハイパーパラメータが挙げられます。設定するには、これらの数値が最終的なパラメーターの合計の値を実際に制御するため、ハイパーパラメーターと呼ばれます。

2. ハイパーパラメータの最適な値を見つけるにはどうすればよいですか?

機械学習アルゴリズムを使用する場合、調整が難しいハイパーパラメータが常に存在します。たとえば、重みの減衰サイズ、ガウス カーネル幅などです。これらのパラメータは手動で設定する必要があり、設定値は結果に大きな影響を与えます。ハイパーパラメータを設定する一般的な方法は次のとおりです。

  1. 推測して確認する: 経験または直感に基づいてパラメータを選択し、繰り返し続けます。
  2. グリッド検索: コンピューターに、範囲内で均等に分布する一連の値を試行させます。
  3. ランダム検索: コンピューターに一連の値をランダムに選択させます。
  4. ベイジアン最適化: ベイジアン最適化ハイパーパラメータを使用する場合、ベイジアン最適化アルゴリズム自体に多くのパラメータが必要になるという問題が発生します。
  5. MITIE メソッドは、適切な初期推測に基づいて局所的な最適化を実行します。BOBYQA アルゴリズムを使用しており、開始点は慎重に選択されています。BOBYQA は最も近い局所的な最適解のみを検索するため、この方法の成功は適切な開始点があるかどうかに大きく依存します。MITIE の場合、適切な開始点はわかっていますが、通常、適切な開始点がどこにあるのかわからないため、これは普遍的な解決策ではありません。プラスの面として、このアプローチは局所的な最適解を見つけるのに最適です。これについては後で説明します。
  6. 新しく提案されたLIPOの大域最適化手法。この方法にはパラメータがなく、ランダム検索方法よりも優れていることが証明されています。
3. ハイパーパラメータ検索の一般的なプロセスは何ですか?

ハイパーパラメータ検索の一般的なプロセス:

  1. データセットをトレーニングセット、検証セット、テストセットに分割します。
  2. トレーニング セット上のモデルのパフォーマンス指標に基づいてモデル パラメーターを最適化します。
  3. 検証セットのモデルのパフォーマンス メトリックに基づいてモデルのハイパーパラメーターを検索します。
  4. ステップ 2 と 3 が交互に繰り返されて、最終的にモデルのパラメーターとハイパーパラメーターが決定され、テスト セット内のモデルの品質が検証および評価されます。

その中で、検索プロセスには、一般的にグリッド検索、ランダム検索、ヒューリスティック インテリジェント検索、ベイジアン検索などの検索アルゴリズムが必要です。

4. アクティベーション機能

1. 活性化関数とは何ですか?

活性化関数は、人工ニューラル ネットワーク モデルにおいて、非常に複雑な非線形関数を学習して理解するために非常に重要な役割を果たします。それらは私たちのネットワークに非線形特性を導入します。次の図に示すように、ニューロンでは、入力が重み付けされて合計され、関数が適用されます。この関数が活性化関数です。**活性化関数は、ニューラル ネットワーク モデルの非線形性を高めるために導入されました。**活性化関数のない各層は行列の乗算と同等です。いくつかのレイヤーを重ねたとしても、それは単なる行列の掛け算にすぎません。

図1

2. アクティベーション機能を使用する理由は何ですか?
  1. アクティベーション関数は、モデルの学習と非常に複雑な非線形関数の理解において重要な役割を果たします。
  2. 活性化関数は非線形要素を導入する可能性があります。活性化関数が使用されない場合、出力信号は単なる単純な線形関数になります。線形関数は 1 次多項式です。線形方程式の複雑さは限られており、データから複雑な関数マッピングを学習する能力は非常にわずかです。活性化関数がなければ、ニューラル ネットワークは画像、ビデオ、オーディオ、音声など、他の複雑な種類のデータを学習してシミュレートすることができません。
  3. 活性化関数は、データをより適切に分類できるように、特定の線形マッピングを通じて現在の特徴空間を別の空間に変換できます。
3. 活性化関数に非線形関数が必要なのはなぜですか?
  1. ネットワーク内のすべてのコンポーネントが線形である場合、線形結合は単一の線形分類器と同様に線形のままです。これにより、非線形性を使用して関数を近似することができなくなります。
  2. 非線形活性化関数を使用してネットワークをより強力にし、その能力を向上させて、入力と出力間の非線形性を表す複雑なもの、複雑な形式のデータ、および複雑な任意の関数マッピングを学習できるようにします。非線形活性化関数を使用すると、入力と出力間の非線形マッピングを生成できます。
4. 共通の活性化関数

画像

画像

活性化関数の詳細については、次の資料を参照してください。

活性化機能の過去と現在_小さな一歩を踏み出さなければ、千マイルにも到達できません!

アクティベーション機能のよくあるトラブルまとめ_小さな一歩を積み重ねないと千マイルには届かない。

Deep Learning Notes_各種活性化関数の概要と比較_Jinghongyibo-CSDN Blog

優れた概要参考資料:

ここに画像の説明を挿入します

活性化関数を選択するための経験則:
出力が 0 または 1 の値 (バイナリ分類問題) の場合、出力層はシグモイド関数を選択し、その後、他のすべてのユニットがRelu関数を選択します。これは、多くの活性化関数のデフォルトの選択です。隠れ層でどの活性化関数を使用するかわからない場合は、通常、 Relu活性化関数が使用されます。場合によっては、tanh活性化関数も使用されます。

5. 最適化手法のまとめ

1. 基本的な勾配降下法

勾配降下アルゴリズムの概要:

勾配降下法をわかりやすく解説!

勾配降下学習を始めるための推奨ビデオ:

【勾配降下法】人工知能の魂、その真の意味に気づいた?

【辛口情報】ディープラーニングの要点:簡単な言葉で学ぶ(勾配降下アルゴリズム)_bilibili_bilibili

深層学習ネットワークのトレーニング プロセスは、順方向計算プロセスと逆伝播プロセスの 2 つの部分に分けることができます。順計算プロセスとは、事前に設定された畳み込み層やプーリング層などを介して、所定のネットワーク構造に従って層ごとに順計算を行い、予測結果を取得することを指します。逆伝播プロセスでは、予測結果が真の値に近づくように、設定されたネットワーク内の多くのパラメーターを段階的に調整します。

したがって、バックプロパゲーションのプロセスにおいて非常に重要な点は、パラメータをどのように更新するかということです。または、より具体的に質問します。パラメータはどの方向に更新する必要がありますか?

明らかに、ターゲットの損失関数が最も速く減少する方向、より正確には勾配の方向にパラメータを更新する必要があります。ネットワーク パラメーターを θ \thetaθ、学習率を eta \etaη、ネットワークによって表される関数を J ( θ ) J(\theta)J(θ) と仮定します。関数の θ \thetaθ に対する勾配は次のとおりです。今回は ▽ θ J ( θ ) \bigtriangledown_{\theta }J(\theta)▽θJ(θ) なので、パラメータ θ \thetaθ の更新式は次のように表すことができます。

ここに画像の説明を挿入します

深層学習には、SGD、BGD、MBGD という 3 つの最も基本的な勾配降下アルゴリズムがあり、それぞれに独自の長所と短所があります。データ量やパラメータに応じて具体的な実装形態を選択可能 ニューラルネットワークの学習における最適化アルゴリズムは、1) 学習率を調整して最適化をより安定させる、2) 勾配推定の補正、およびトレーニング速度の最適化。

ここに画像の説明を挿入します

(1) 確率的勾配降下法 SGD

確率的勾配降下法 (SGD)、各反復 (パラメーターの更新) では、単一のトレーニング サンプル(x (i), y (i)) (x^{(i)}, y^{(i) }) (x( i),y(i))、x は入力データ、y はラベルです。したがって、パラメータ更新式は次のようになります。

ここに画像の説明を挿入します
利点: SGD は反復ごとに1 つのサンプルを計算するだけでよいため、非常に高速に実行され、オンライン学習にも使用できます。

短所: (1) 単一サンプルのランダム性により、目標損失関数の値は実際のプロセスで激しく変動する一方で、SGD の変動により新たな極小値にジャンプする可能性があります。より良い。一方、トレーニングは収束することはなく、常に最小値の周囲で変動します。(2) 1 回の反復で計算される画像は 1 つだけなので、GPU の並列計算が活用されず、全体の計算が非効率になります。

(2) バッチ勾配降下法 BGD

バッチ勾配降下法 (BGD) メソッドは、各反復更新ですべてのトレーニング サンプルを使用します。パラメーター更新式は次のとおりです。

ここに画像の説明を挿入します
利点と欠点の分析: BGD は、凸面誤差曲面の全体的最小値と非凸面の極小値への収束を保証できます。ただし、各反復ではトレーニング セット内のすべてのデータを使用する必要があるため、データ量が多い場合、反復速度は非常に遅くなります。

ミニバッチ勾配降下法 MBGD

ミニバッチ勾配降下法 (MBGD) 法 (3) は、BGD 法と SGD 法の折衷案です ****各反復では、計算とパラメーター更新式にバッチ サイズのトレーニング サンプルを使用します**** 式は次のとおりです。

ここに画像の説明を挿入します
利点と欠点の分析: 各反復では複数のサンプルが使用されるため、MBGD は SGD よりも安定して収束し、データセットが大きすぎる場合に BGD の反復速度が遅くなる問題も回避できます。したがって、MBGD は深層学習ネットワークのトレーニングでよく使用される勾配降下法です。

ディープラーニングでは、一般的なミニバッチのサイズは 64 ~ 256 ですが、コンピューターのストレージ設定や使用状況を考慮して、ミニバッチが 2 のべき乗である場合、コードはより高速に実行されます。
ここに画像の説明を挿入します
上の図は、BGD および MBGD トレーニング中の損失コスト関数の変化図です。BGD はコスト関数を徐々に低減し、最終的には凸誤差曲面のグローバル最小値に確実に収束することがわかります。MBGD の損失コスト関数の値は比較的変動していますが、最終的には次のように最適化できます。最小損失値。

(4) 投与量

画像

画像

(5) アダデルタ

画像

(6) RMSprop オプティマイザ

画像

RMSProp アルゴリズムの正式名は Root Mean Square Prop で、Coursera コースで Hinton によって提案された最適化アルゴリズムです。上記の Momentum 最適化アルゴリズムでは、最適化における振幅が大きいという問題は最初は解決されています。

損失関数の更新における過剰なスイング振幅の問題をさらに最適化し、関数の収束速度をさらに高速化するために、RMSProp アルゴリズムでは、重み W とバイアス b の勾配の差分二乗加重平均を使用します。最適化された効果は次のとおりです。青いものは Momentum 最適化アルゴリズムによって取られたルート、緑色のものは RMSProp 最適化アルゴリズムによって取られたルートです。

ここに画像の説明を挿入します
t 回目の反復プロセスでは、各式が次のようになるものとします。上の式では、 Sdw と Sdb は
ここに画像の説明を挿入します
、最初の t-1 反復プロセスで損失関数によって蓄積された2 乗勾配運動量、β は勾配です。累計のインデックスです。違いは、RMSProp アルゴリズムが勾配の差分二乗加重平均を計算することです。このアプローチは、スイング振幅が大きい方向を排除するのに役立ち、各次元のスイング振幅が小さくなるようにスイング振幅を修正するために使用されます。その一方で、ネットワーク機能の収束も高速化されます。

2. 運動量勾配降下法

Momentum では主に、勾配ベースの移動指数加重平均の考え方が導入されています。つまり、現在のパラメーターの更新方向は、現在の勾配に関連するだけでなく、過去の加重平均勾配にも影響されます。勾配が同じ方向を向いている次元では、運動量が蓄積して増加します勾配の方向が変わる次元では、運動量は時間の経過とともに減少しますこれにより、振れすぎずに収束速度も速くなります。

運動量勾配降下法は学習を高速化するために使用され、局所的な最適性を取り除く機能があります。以下の図の赤い線で示されているように、
ここに画像の説明を挿入します

運動量勾配降下法(Momentum)のパラメータ更新式は以下のとおりです。

ここに画像の説明を挿入します

このうち、λ は運動量パラメータの運動量を表し、λ = 0 の場合は通常の SGD 勾配降下法となります。0 < λ < 1、運動量による SGD 勾配降下パラメータ更新方法を示し、λ は通常 0.9 です。

通常の SGD の欠点: SGD は、局所最適解ではよくある渓谷 (つまり、サーフェスが 1 つの次元で別の次元より急峻に湾曲する領域) での反復が困難です。これらのシナリオでは、SGD は谷の斜面で振動しながら、局所最適値に向かって底に沿ってゆっくりと進みます。この問題を軽減するために、モメンタムが導入されました。

ここに画像の説明を挿入します

基本的に、勢いを利用するときは、丘からボールを​​押し出すようなものです。ボールは下り坂に転がるにつれて勢いを増し、途中でどんどん速くなっていきます。パラメータの更新でも同じことが起こります。勾配が同じ方向を向いている次元では、運動量が蓄積して増加しますが、勾配の方向が変わる次元では、更新中に運動量が減少します。その結果、収束が速くなり、発振が減少します。

3. アダムオプティマイザー

Adam は、パラメーター適応学習率の別の方法でありRMSprop + Momentum に相当します。勾配の一次モーメント推定と二次モーメント推定を使用して、各パラメーターの学習率を動的に調整します。式は次のとおりです。

最初と 2 番目のモーメント mt、vt m_t、v_tmt、vt は運動量に似ており、次のように初期化されます。 m 0 = 0、v 0 = 0 m_{0}=0、v_{0}=0m0=0、v0 =0

mt、vt m_t、v_tmt、vt はそれぞれ、勾配の 1 次モーメント (平均) と 2 次モーメント (非中心分散) の推定値です。

ここに画像の説明を挿入します

移動指数平均は反復の開始時に開始値と大きな差が生じるため、上記で取得したいくつかの値にバイアス補正を行う必要があります。これらのバイアスは、バイアス補正された第 1 モーメントと第 2 モーメントの推定値を計算することで打ち消されます。

ここに画像の説明を挿入します

これらは、Adam のパラメータ更新式である RMSprop に見られるように、パラメータを更新するために使用されます。

ここに画像の説明を挿入します

Adam アルゴリズムでは、パラメータ β1 は Momentum アルゴリズムの β 値に対応し、通常は 0.9 です。パラメータ β2 は、RMSProp アルゴリズムの β 値に対応します。通常は 0.999 をとり、ϵ は平滑化項であり、一般に、値は 1 0 − 8 10^{−8}10−8 であり、学習率はトレーニング中に微調整する必要があります。

画像

最適化アルゴリズムの概要

深層学習の最も完全な最適化手法の比較 (SGD、Adagrad、Adadelta、Adam、Adamax、Nadam) - Zhihu

ここに画像の説明を挿入します

Pytorch のオプティマイザーと学習率減衰メソッドの概要

オプティマイザーと学習率減衰メソッドの概要 (pytorch_ys1305 のブログ)

6. 損失関数

入門学習ビデオ:

【線形回帰、コスト関数、損失関数】アニメーション理解、数学にハマる

1.損失関数の定義

機械学習タスクでは、ほとんどの教師あり学習アルゴリズムには目的関数 (目的関数) があり、アルゴリズムは目的関数を最適化します。これは、最適化アルゴリズムのプロセスと呼ばれます。たとえば、分類タスクや回帰タスクでは、アルゴリズム モデルを最適化するための目的関数として損失関数 (Loss Function) が使用されます。
BP ニューラル ネットワークでは、一般的な導出では損失関数として平均二乗誤差が使用されますが、実際には損失関数としてクロス エントロピーが使用されることが一般的です。以下の図に示すように、勾配降下プロセス中の損失関数が異なると、収束速度とパフォーマンスが異なることが明確に観察できます。

  1. 損失関数として、平均二乗誤差はゆっくりと収束し、局所的な最適解に陥る可能性があります。
  2. 損失関数としてのクロスエントロピーの収束速度は平均二乗誤差よりも速く、関数の最適解を見つけるのが容易です。

そのため、損失関数の種類を理解し、損失関数の使いこなしをマスターすることで、ディープラーニングへの理解が深まります。

ここに画像の説明を挿入します

画像

分類モデルと回帰モデルで使用される損失関数は異なります。これについては、以下で個別に紹介します。

2 回帰損失関数

(1) 平均二乗誤差損失関数

平均二乗誤差損失 (MSE) 損失関数は次のように定義されます。

画像

コード例

def mean_squared_error(y_true, y_pred):
    return np.mean(np.square(y_pred - y_true), axis=-1)

(2) 平均絶対誤差損失関数

平均絶対誤差損失 (MAE) 損失関数は次のように定義されます。

画像

コード例

def mean_absolute_error(y_true, y_pred):
    return np.mean(np.abs(y_pred - y_true), axis=-1)

(3) 平均二乗誤差対数損失関数

平均二乗対数誤差損失 (MSLE) 損失関数は次のように定義されます。

画像

コード例

def mean_squared_logarithmic_error(y_true, y_pred):
    first_log = np.log(np.clip(y_pred, 10e-6, None) + 1.)
    second_log = np.log(np.clip(y_true, 10e-6, None) + 1.)
    return np.mean(np.square(first_log - second_log), axis=-1)

(4) 平均絶対パーセント誤差損失関数

平均絶対パーセント誤差損失 (MAPE) 誤差損失関数は次のように定義されます。

画像

コード例

def mean_absolute_percentage_error(y_true, y_pred):
    diff = np.abs((y_pred - y_true) / np.clip(np.abs(y_true), 10e-6, None))
    return 100 * np.mean(diff, axis=-1)

(5) まとめ

平均二乗誤差損失関数は最も広く使用されており、ほとんどの場合、平均二乗誤差は優れたパフォーマンスを示すため、損失関数の基本的な尺度として使用されます。MAE は外れ値をより効果的に罰します。データに外れ値が多数ある場合は、平均絶対誤差損失を損失関数として使用することを検討する必要があります。一般に、データ内の外れ値が多すぎるのを防ぐために、データを前処理することができます。
平均二乗誤差の対数損失の計算プロセスは、関数の出力値の範囲を狭めるために各出力データに対して対数計算が実行されることを除いて、平均二乗誤差の計算プロセスと似ています。平均絶対パーセント誤差損失は、予測値と真の値の間の相対誤差を計算します。平均二乗誤差の対数損失と平均絶対パーセント誤差損失は、実際には大規模なデータ ([ − 10 5 , 10 5 ]) を処理するために使用されますが、ニューラル ネットワークでは、入力データを妥当な範囲に正規化することがよくあります ( [ − 1 , 1 ])、平均二乗誤差または平均絶対誤差損失を使用して損失を計算します。

3 分類損失関数

(1) ロジスティック損失関数

ロジスティック損失関数は次のように定義されます。

画像

(2) 負の対数尤度損失関数

負の対数尤度損失関数 (Negative Log Likelihood Loss) は次のように定義されます。

画像

(3) 相互エントロピー損失関数

ロジスティック損失関数と負の対数尤度損失関数は 2 つの分類問題のみを処理できます。2 つの分類を M 分類に拡張するには、次のように定義されるクロス エントロピー損失関数 (Cross Entropy Loss) が使用されます。

画像

コード例

def cross_entropy(y_true, y_pred):
    return -np.mean(y_true * np.log(y_pred + 10e-6))

(4) ヒンジ損失関数

ヒンジ損失を使用する典型的な分類器は SVM アルゴリズムです。これは、ヒンジ損失を使用して区間最大化問題を解決できるためです。分類モデルがハード分類結果 (分類結果が 0 または 1、-1 または 1 であるバイナリ データなど) を必要とする場合、ヒンジ損失が最も便利な選択肢です。ヒンジ損失関数は次のように定義されます。

画像

コード例

def hinge(y_true, y_pred):
    return np.mean(np.maximum(1. - y_true * y_pred, 0.), axis=-1)

(5) 指数関数的損失関数

指数関数 (Exponential) 損失関数を使用する典型的な分類器は AdaBoost アルゴリズムです。指数関数損失関数は次のように定義されます。

画像

コード例

def exponential(y_true, y_pred):
    return np.sum(np.exp(-y_true * y_pred))

4. ニューラルネットワークで一般的に使用される損失関数

データ自体とそれを解くために使用される最適化スキームを考慮する必要がある場合、ニューラル ネットワークの損失関数はカスタマイズできます。言い換えれば、カスタム損失関数は、入力データ形式と損失関数導出のアルゴリズムを考慮する必要があります。損失関数のカスタマイズは実は少し難しく、実際のエンジニアリングプロジェクトでは、損失関数と活性化関数を組み合わせて選択するのが一般的で、一般的な組み合わせは 3 つあります。

(1) ReLU+MSE

平均二乗誤差損失関数では勾配消失の問題に対処できませんが、Leak ReLU アクティベーション関数を使用すると、計算中の勾配消失の問題を軽減できるため、ニューラル ネットワークで平均二乗誤差損失関数を使用する必要がある場合は、Leak一般に、勾配消失の問題を軽減するには、ReLU などの活性化関数を使用できます。さらに、平均二乗誤差は普遍的であり、一般に損失値を測定するための基準として使用されるため、平均二乗誤差を損失関数として使用しても、パフォーマンスが高すぎたり低すぎたりすることはありません。

(2) シグモイド + ロジスティック

シグモイド関数は勾配消失問題を引き起こします: チェーン導出法によれば、シグモイド関数の導出後、[0, 1] の範囲内の複数の数値が乗算されます。たとえば、その導関数形式は次のとおりです。数値の 1 つは非常に小さく、接続された後は無限にゼロに近づき、最終的には消滅します。Logistic-like 損失関数を導出する場合、対数乗算演算が和演算に変換され、勾配の消失がある程度回避されるため、シグモイド活性化関数 + クロスピッキング損失関数の組み合わせがよく見られます。 。

(3) ソフトマックス + ロジスティック

数学的には、Softmax アクティベーション関数は出力クラスの相互排他的確率分布を返します。つまり、離散出力を (0.2, 0.8) などの同一分布の相互排他的確率に変換できます。さらに、Logisitc 損失関数は確率の最尤推定関数に基づいているため、出力の確率化により、最適化アルゴリズムによる導出と計算の実行がより便利になります。そのため、Softmax 活性化関数を使用する出力層がよく見られます。 + クロスエントロピー 損失関数の組み合わせ

損失関数学習のリファレンス:

ディープ ラーニング - 一般的に使用される損失関数の詳細な紹介_アルゴリズムの美しさ - CSDN ブログ_ディープ ラーニングの損失関数

5. 活性化関数、損失関数、最適化関数の違い

1. 活性化関数:ニューラルネットワーク層の非線形変換を通じてニューラルネットワークの上位層の入力を変換した後、活性化関数を通じて出力が得られます。一般的な活性化関数には、sigmoid、tanh、relu などが含まれます。

[ディープラーニング] ニューラルネットワークの活性化機能_北王華村-CSDNブログ

2. 損失関数: ニューラル ネットワークの出力の予測値と実際の値の差を測定する方法。一般的な損失関数には、最小二乗損失関数、クロスエントロピー損失関数、回帰で使用されるスムーズ L1 損失関数などが含まれます。

3. 最適化関数:つまり、損失値をニューラルネットワークの最外層から最前層にどのように転送するか。最も基本的な勾配降下アルゴリズム、確率的勾配降下アルゴリズム、バッチ勾配降下アルゴリズム、運動量付き勾配降下アルゴリズム、Adagrad、Adadelta、Adam など。

[ディープラーニング ] 勾配降下法アルゴリズム、最適化手法 (SGD、Adagrad、Adam...)_北王華村-CSDN ブログ

7. CNN畳み込みニューラルネットワーク

おすすめ情報:Convolutional Neural Network CNN(役立つ情報満載) - CSDN Blog

初心者におすすめの記事:畳み込みをわかりやすく解説するには?- ほぼ知っています

Convolutional Neural Networks (CNN) は、畳み込み計算を含む深い構造を持つフィードフォワード ニューラル ネットワークの一種であり、深層学習の代表的なアルゴリズムの 1 つです。現在、CNNは顔認証、自動運転、美しい映像、セキュリティなど、さまざまな分野で広く活用されています。

畳み込みニューラル ネットワーク – CNN が最も得意とするのは画像処理です。人間の視覚神経系からインスピレーションを得たものです。

CNN の特徴:

  1. 大量のデータを含む画像の次元を少量のデータに効果的に削減できます。
  2. 画像の特徴を効果的に保持し、画像処理の原則に準拠できます。

CNN には 2 つのコアがあります。

畳み込み層の 2 つの最も重要な機能は、ローカル接続と重み共有です。これらは、場所によってはスパース接続やパラメーター共有とも呼ばれます。

  1. ローカル接続は畳み込み演算によって実装され、このローカル領域のサイズがフィルターとなり、完全な接続でパラメーターが多すぎるために計算できないことを回避します。
  2. パラメータ共有を使用して実際のパラメータの数を削減し、多層ネットワークの実装を可能にします。

画像

1. 部分的な接続:
  • 一般に、画像の空間的なつながりは、局所的なピクセル同士は密接な関係を持ち、離れたピクセル同士は弱い相関関係を持つと考えられているため、各ニューロンは全体的な画像を認識する必要はなく、局所的な部分のみを認識すればよいのです。そして、上位層はローカル情報を結合してグローバル情報を取得します。畳み込み層を使用して実装: (特徴マップ、各特徴マップはニューロン配列): ローカル畳み込みフィルターを通じて前の層から局所特徴を抽出します。畳み込み層の後には、局所的な平均化と二次抽出のための計算層が続き、この二次的な特徴抽出構造により、特徴の解像度が低下します。
  • つまり、ネットワークは部分的に接続されており、各ニューロンは前の層のニューロンの一部にのみ接続されており、画像全体ではなく画像の一部のみを感知します。(スライディングウィンドウの実装)
2. パラメータの共有:
  • ローカル接続では、各ニューロンのパラメーターは同じです。つまり、同じ畳み込みカーネルが画像内で共有されます(理解: 畳み込み演算は実際にはローカル情報を抽出しており、ローカル情報のいくつかの統計的特性は他の部分と同じです。つまり、この部分で学習した特徴は他の部分でも使用できます。つまり、画像の場合、すべての位置がオンになっています。畳み込みカーネルの共有には、特徴抽出が不十分であるという問題がありますが、これは複数の畳み込みカーネルを追加することで補うことができ、さまざまな特徴を学習できます。
  • 100x100ピクセルの画像の場合、ニューロンで画像を操作すると、ニューロンのサイズは100x100=10000、10x10のコンボリューションカーネルを使用すると、複数回の計算は必要ですが、必要なパラメータは10x10=100だけです、バイアス b を加えた場合、必要なパラメータは合計 101 個だけです。画像サイズは 100x100 のままです。
  • より大きな画像を取得すると、より多くのパラメーターが含まれます。10*10 コンボリューション カーネルを通じて画像から特徴を抽出し、特徴マップを取得します。
  • コンボリューション カーネルは 1 つの特徴しか抽出できないため、さらに多くのコンボリューション カーネルが必要です。6 つのコンボリューション カーネルがあると仮定すると、6 つの特徴マップが得られます。これらの 6 つの特徴マップは 1 つのニューロンに結合されます。これら 6 つの機能マップには 101*6=606 個のパラメータが必要です。この値は 10,000 に比べてまだ比較的小さいです。

CNNネットワークの紹介

以下では主に、畳み込み層、プーリング層、活性化関数、全結合層の概念と原理を紹介します。

一般的な CNN は 3 つの部分で構成されます

画像

1.畳み込み層

畳み込みは、画像の特徴を抽出するための効果的な方法です。一般に、正方畳み込みカーネルは、画像上のすべてのピクセルを走査するために使用されます。画像とコンボリューションカーネルの重複領域に対応する各ピクセル値に、コンボリューションカーネル内の対応する点の重みを乗じて合計し、オフセットを加えた後、最終的に出力画像のピクセル値が得られます。
画像はグレースケール画像とカラー画像に分けられ、畳み込みカーネルは単一または複数の場合があるため、畳み込み演算は次の 3 つの状況に分類できます。

1.1 シングルチャンネル入力、シングルコンボリューションカーネル

ここで、単一チャネルとは、入力がグレースケール画像であり、単一のコンボリューション カーネル値を持つコンボリューション カーネルの数が 1 であることを意味します。

ここに画像の説明を挿入します

上は 5x5x1 グレースケール画像です。1 は単一チャネルを意味し、5x5 は解像度を意味し、グレースケール値は 5 行 5 列あります。3x3x1 畳み込みカーネルを使用してこの 5x5x1 グレースケール イメージを畳み込み、バイアス項 b=1 を使用すると、畳み込みの計算は次のようになります: (-1)x1+0x0+1x2+(-1)x5+0x4+ 1x2+(-1 )x3+0x4+1x5+1=1 (オフセット 1 を追加するのを忘れないように注意してください)。

1.2 マルチチャンネル入力、シングルコンボリューションカーネル

ほとんどの場合、入力画像は RGB 3 色で構成されるカラー画像です。入力画像には、赤、緑、青の 3 層のデータが含まれています。コンボリューション カーネルの深さ (チャネル数) は、 3x3x3コンボリューション カーネルの場合、最後の 3 は入力画像に一致する 3 つのチャネルを表すため、このコンボリューション カーネルには 3 つのチャネルがあります。各チャネルは最適化される 9 つのパラメータをランダムに生成します。合計で 9 つのパラメータがあります。最適化する 27 個のパラメータとバイアス b を設定します。

ここに画像の説明を挿入します

注: これは依然として単一の畳み込みカーネルの場合ですが、畳み込みカーネルは複数のチャネルを持つことができます。デフォルトでは、コンボリューション カーネルのチャネル数は入力イメージのチャネル数と同じです。

1.3 マルチチャンネル入力、複数のコンボリューションカーネル

マルチチャネル入力とマルチコンボリューション カーネルは、ディープ ニューラル ネットワークの最も一般的な形式です。これは、マルチチャネル入力と複数のコンボリューション カーネルを使用する場合を指します。畳み込みプロセスは実際には非常に単純で、例として 3 チャネル入力と 2 つの畳み込みカーネルを取り上げます

(1) まずコンボリューションカーネルを取り出し、3 チャネルの入力と畳み込みますが、これはマルチチャネル入力および単一のコンボリューションカーネルと同じ処理で、1 チャネルの出力出力 1 が得られます。2 番目のコンボリューション カーネルも取り出し、同様の操作を行って 2 番目の出力 Output2 を取得します。
(2) 同じサイズの Output1 と Output2 をスタックし、2 チャネルの出力 Output を取得します。

より直観的に理解するために、次の図を示します。

ここに画像の説明を挿入します
画像に X:[1,h,w,3] を入力すると、高さ h、幅 w の 3 チャンネルの画像を入力することになります。
コンボリューション カーネル W:[k,k,3,2] は、コンボリューション カーネル サイズが 3*3、チャネル数が 3、チャネル数が 2 であることを意味します。

要約:
(1) コンボリューション演算後の出力チャネル数 = コンボリューション カーネルの数
(2) コンボリューション カーネルの数とコンボリューション カーネルのチャネル数は別の概念です。各層のコンボリューション カーネルの数はネットワーク設計時に指定されますが、コンボリューション カーネルのチャネル数は必ずしも指定されるわけではありません。デフォルトでは、コンボリューション カーネルのチャネル数 = 入力チャネル数になります。これは、コンボリューション演算に必要な条件であるためです。

(3)バイアスの数 = コンボリューション カーネルの数

1.4 パディング

畳み込み演算後に満足のいく出力画像サイズを得るために、入力を埋めるためにパディングがよく使用されます。デフォルトでは、画像の周囲にゼロが埋め込まれます。

(1) オールゼロパディングpadding='same'
Sameを使用すると、元の画像が自動的にすべて0で埋められ、ステップサイズが1の場合、出力画像が入力画像サイズと一致することが保証されます。
出力サイズの計算式:入力長/ステップ サイズ (切り上げ)
は TensorFlow で次のように実装されます: (ここでは、コンボリューション カーネルの数: 48、コンボリューション カーネル サイズ: 3、ステップ サイズ: 1、およびフル パディングは例として挙げます)

layers.Conv2D(48, kernel_size=3, strides=1, padding='same')

(2) パディングなしpadding='valid'
valid を指定すると、パディングなしで直接畳み込みが行われます (layers.Conv2D() のデフォルトのメソッドです)。
出力サイズの計算式: (入力長 - コア長) / ステップ サイズ + 1 (切り捨て)
TensorFlow での実装は次のとおりです。

layers.Conv2D(48, kernel_size=3, strides=1, padding='valid')

(3) カスタム塗りつぶしは
通常、上下左右の 4 方向から塗りつぶされ、左右の塗りつぶしの列数 pw p_wpw は通常同じであり、上と右の塗りつぶしの行数 ph p_hph は同じになります。底部の充填も同じである必要があります。以下の図に示すように:
ここに画像の説明を挿入します出力
サイズの計算式:

ここに画像の説明を挿入します

ここに画像の説明を挿入します

このうち、h と w は元の画像の高さと幅、k はコンボリューション カーネルのサイズ、s はステップ サイズです。

TensorFlow2.0 では、カスタム パディング プロセス中のパディング パラメーターの設定形式は次のとおりです:
padding=[ [0, 0], [upper, lower], [left, right], [0, 0] ]

# 例如要在上下左右各填充一个单位,实现如下:
layers.Conv2D(48, kernel_size=3, strides=1, padding=[[0,0], [1,1], [1,1], [0,0]])

2. プーリング層

プーリングは次のように機能します。」

1. 畳み込みニューラル ネットワークは、特徴の局所的不変性を保証するために特徴を抽出します。

2. プーリング操作により、次元とパラメータの数を削減できます。

3... プーリング操作の最適化は比較的簡単です。

畳み込み層では、ステップ パラメーター s を調整することで特徴マップの高さと幅を 2 ​​倍にすることができ、それによってネットワークのパラメーターの数を減らすことができます。実際には、ステップ サイズの設定に加えて、サイズ削減機能を実現できる特別なネットワーク層もあります。これが、これから紹介するプーリング層です。

プーリング層も局所相関の考え方に基づいており、局所的に関連する一連の要素から情報をサンプリングまたは集約することで新しい要素値を取得します。通常、ダウンサンプリングには 2 種類のプーリングを使用します:
(1) Max Pooling。ローカルの関連要素セットから最大の要素値を選択します。
(2) Average Pooling (Average Pooling) は、ローカルな関連要素の集合から平均値を計算して返します。

3. アクティベーション機能

活性化関数もニューラル ネットワークには不可欠な部分です。活性化関数は、非線形要素を追加し、ネットワークの表現能力を向上させるために使用されます。最も一般的に使用される畳み込みニューラル ネットワークは ReLU であり、シグモイドはあまり使用されません。

5.12具体的には、適切な活性化関数を選択する方法を説明します。このブログ記事「ニューラル ネットワークの構築: 活性化関数の概要」または上記の概要を参照してください。

4. 全結合層

全結合層FCは、各ニューロンが前後の隣接層の全てのニューロンと接続関係を有することから全結合と呼ばれる。下図に示すように、これは単純な 2 層の全結合ネットワークであり、入力は特徴量、出力は予測結果です。

ここに画像の説明を挿入します
全結合層のパラメータは直接計算することができ、計算式は以下の通りです。

ここに画像の説明を挿入します
上記のように構築された 2 層完全接続ネットワークによると、解像度がわずか 28x28=784 の白黒画像をトレーニングするには、最適化する必要があるパラメーターが 400,000 近くあります。実際の高解像度のカラー画像には、より多くのピクセルがあり、赤、緑、青の 3 チャネルの情報が含まれています。最適化すべきパラメーターが多すぎると、モデルの過剰適合が容易に発生する可能性があります。この現象を回避するために、実際のアプリケーションでは、通常、元の画像は完全に接続されたネットワークに直接供給されません。
実際のアプリケーションでは、元の画像から畳み込み特徴を抽出し、抽出された特徴を全結合ネットワークに入力し、全結合ネットワークで分類評価値を計算します。

5. ネットワークパラメータ量と計算量

畳み込み層パラメータ/畳み込み演算量

コンボリューションパラメータ=コンボリューションカーネル長×コンボリューションカーネル幅×入力チャンネル数×出力チャンネル数+出力チャンネル数(バイアス)
コンボリューション演算量=出力データサイズ×コンボリューションカーネルスケール×入力チャンネル数

例: 入力: 224x224x3、出力: 224x244x64、コンボリューション カーネル: 3x3

  • パラメータの数 = 3x3x3x64+64
  • 計算量=224×224×64×3×3×3

畳み込み層:

例: 入力は 32x32x3 カラー画像で、畳み込み層を通過します。

layers.Conv2D(100, kernel_size=3, strides=1, padding='same')

(1) ネットワーク パラメータの量は、主にコンボリューション カーネルのパラメータとバイアスのパラメータ
です: 3x3x3x100+100=2800

(2) 計算量 FLOPS
深層学習フレームワークにおける FLOP の概念:浮動小数点演算、つまり浮動小数点演算の回数。
{32x32x[3x3+(3x3-1)]x3+32x32x(3-1)}x100

完全に接続された層:

たとえば、第 1 層のノード数が 5、第 2 層のノード数が 10 であるとします。ネットワークパラメータと計算量 FLOPS を求めます。

(1) ネットワーク パラメータ
ネットワーク パラメータの主なソースはニューロン接続の重みとバイアスです: 5x10+10=60

(2) 計算量 FLOPS
5x10+10=60
2015年にGoogleの研究者Sergeyらがパラメータの標準化に基づいてBN層を設計しました。BN 層が提案されて以来、さまざまなディープ ネットワーク モデルで広く使用され、ネットワークのハイパーパラメータの設定がより自由になり、ネットワークの収束が速くなり、パフォーマンスが向上しました。
詳細はニューラルネットワーク構築:BN層をご覧ください。

6. 畳み込みニューラル ネットワークのトレーニング:

基本的なトレーニングプロセス:

ステップ 1: すべてのコンボリューション カーネルとパラメータ/重みを乱数で初期化する

ステップ 2: トレーニング画像を入力として受け取り、順方向ステップ (畳み込み、ReLU、プーリング、全結合層の順方向伝播) を実行し、各カテゴリの対応する出力確率を計算します。

ステップ 3: 出力層の合計誤差を計算する

ステップ 4:逆伝播アルゴリズムは、すべての重みに対する誤差の勾配を計算し、勾配降下法を使用してすべてのコンボリューション カーネルとパラメータ/重みの値を更新し、出力誤差を最小限に抑えます。

注: コンボリューション カーネルの数、コンボリューション カーネルのサイズ、ネットワーク アーキテクチャなどのパラメーターはステップ 1 の前に固定され、トレーニング プロセス中に変更されません。コンボリューションカーネル行列とニューロンの重みのみが更新されます

5.14

多層ニューラル ネットワークと同様に、畳み込みニューラル ネットワークでのパラメータのトレーニングにも誤差逆伝播アルゴリズムが使用されます。プーリング層のトレーニングに関しては、プーリング層がマルチの形式に変更されることを再度言及する必要があります。 -層ニューラルネットワーク。

5.16

5.15

畳み込み層を多層ニューラルネットワークの形式に変更する

5.17

CNN は次のことを詳しく解決します。

CNN は本質的に入力から出力へのマッピングです。畳み込みネットワークがトレーニングされた後、既知のパターンを使用する限り、入力と出力の間の正確な数式を必要とせずに、入力と出力の間の多数のマッピング関係を学習できます。ネットワークには、入力と出力のペア間のマッピング機能があります。

畳み込みネットワークは教師ありトレーニングを実行するため、そのサンプル セットは次の形式のベクトル ペアで構成されます: (入力ベクトル、理想的な出力ベクトル)。これらのベクトルのペアはすべて、シミュレーション対象のネットワークの実際の「実行中の」構造から導出される必要があり、実際に実行中のシステムから収集できます。

1) パラメータの初期化:

トレーニングを開始する前に、すべての重みをいくつかの異なる乱数で初期化する必要があります。「小さな乱数」は、過剰な重みによってネットワークが飽和状態に陥らないようにするために使用され、トレーニングが失敗することがあり、「異なる」は、ネットワークが正常に学習できるようにするために使用されます。実際、同じ数値を使用して重み行列を初期化すると、ネットワークには学習能力がなくなります。

2) トレーニング プロセスには 4 つのステップが含まれます

①第一段階:順伝播段階

  • サンプルセットからサンプルを取り出してネットワークに入力します
  • 対応する実際の出力を計算します。この段階では、情報は段階的な変換を通じて入力層から出力層に転送されます。このプロセスは、トレーニング完了後の通常の実行中にネットワークによって実行されるプロセスでもあります。

②第2段階:逆伝播段階

  • 実際の出力と対応する理想的な出力の差を計算します

  • 誤差を最小化する方法に従って重みマトリックスを調整します

    ネットワークのトレーニング プロセスは次のとおりです。

  1. トレーニング グループを選択し、トレーニング グループとしてサンプル セットから N 個のサンプルをランダムに検索します。
  2. 各重みとしきい値を 0 に近い小さなランダム値に設定し、精度制御パラメータと学習率を初期化します。
  3. トレーニング グループから入力パターンを取得してネットワークに追加し、そのターゲット出力ベクトルを与えます。
  4. 中間層の出力ベクトルを計算し、ネットワークの実際の出力ベクトルを計算します。
  5. 出力ベクトルの要素とターゲット ベクトルの要素を比較して出力誤差を計算します。誤差は中間層の隠れユニットについても計算する必要があります。
  6. 各重みの調整量と閾値の調整量を順に計算する。
  7. 重みとしきい値を調整します。
  8. M を経験した後、指標が精度要件を満たしているかどうかを判断し、満たしていない場合は (3) に戻って反復を継続し、満たしている場合は次のステップに進み、満たしていない場合は次のステップに進みます。
  9. トレーニングの最後に、重みとしきい値がファイルに保存されます。この時点で各重みが安定し、分類器が形成されたと考えられる。再度トレーニングするには、初期化せずにトレーニング用のファイルから重みとしきい値を直接エクスポートします。

8. クラシック ネットワークの概要:

ここに画像の説明を書きます

  • ルネット-5

ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します

ニューロンの数 =
コンボリューション カーネルの数)
収束層のトレーニング可能なパラメーターの数 =
コンボリューション カーネルの数 カーネルの
幅 カーネルの高さ + 1) (出力特徴マップ サイズは 1X1)

  • アレックスネット

ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します

  • インセプションネットワーク

ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します

  • 残留ネットワーク
  • ここに画像の説明を挿入します
ネットワークの詳細については、次の記事を参照してください。
畳み込みニューラル ネットワークの超詳細な紹介_Dumb Cat’s Blog-CSDN Blog_畳み込みニューラル ネットワーク

CNNの概要

この記事を学ぶための参考資料:

深層水の深層学習-Task04 畳み込みニューラル ネットワーク CNN_GoAl のブログ-CSDN ブログ

CNN の値:

  1. (結果に影響を与えることなく) 大きなデータ ボリュームの次元を小さなデータ ボリュームに効果的に削減できます。
  2. 人間の視覚原理と同様に、画像の特徴を保持できる

CNN の基本原則:

  1. 畳み込み層 - その主な機能は画像の特性を保存することです
  2. プーリング層 - その主な機能はデータの次元を削減することであり、これにより過剰適合を効果的に回避できます。
  3. 完全に接続されたレイヤー – さまざまなタスクに基づいて必要な結果を出力します

CNN の実際の応用例:

  1. 画像の分類と検索
  2. ターゲット位置検出
  3. ターゲットのセグメンテーション
  4. 顔認識
  5. スケルトン認識

9. RNNリカレントニューラルネットワーク

画像

画像

画像

画像

RNN の基本原理

従来のニューラル ネットワークの構造は比較的単純です: 入力層 – 隠れ層 – 出力層。以下に示すように:

従来のニューラルネットワーク

RNN と従来のニューラル ネットワークの最大の違いは、毎回、前の出力結果が次の隠れ層に持ち込まれ、一緒にトレーニングされることです。以下に示すように:

RNNの違い

RNN 学習教材のリファレンス:

Dahua リカレント ニューラル ネットワーク (RNN)

10. LSTM 長短期記憶ニューラルネットワーク

1 LSTM が生成される理由

RNN は長期的な依存関係 (時系列で遠く離れたノード) を扱う場合、遠く離れたノード間の接続の計算にはヤコビ行列の複数の乗算が含まれ、勾配が消失するため、大きな困難に直面します。勾配拡大現象。最も成功し広く使用されているのはゲート RNN であり、ゲート RNN の中で最も有名なものは LSTM です。リーキー ユニットを使用すると、RNN は接続間の重み係数を設計することで、離れたノード間で長期的な接続を蓄積できるようになります。一方、しきい値 RNN はこのアイデアを一般化し、係数をさまざまな時点で変更できるようにし、ネットワークが現在の接続を忘れることができるようにします。蓄積された情報。

2 RNN と LSTM の違い

すべての RNN は、繰り返しニューラル ネットワーク モジュールのチェーンの形式をとります。標準の RNN では、この繰り返しモジュールには、次の図に示すように、tanh 層などの非常に単純な構造しかありません。

画像

LSTM は同じ構造ですが、繰り返されるモジュールの構造は異なります。単一のニューラル ネットワーク層の代わりに、非常に特殊な方法で相互作用する 4 つのニューラル ネットワーク層があります。

画像

注: 上の図のアイコンの具体的な意味は次のとおりです。

画像

上の図では、各黒い線は、1 つのノードの出力から他のノードの入力まで、ベクトル全体を送信します。ピンクの円はベクトルの合計などの点ごとの演算を表し、黄色の行列は学習されたニューラル ネットワーク層です。集まった線はベクトルの接続を表し、分離した線はコピーされて別の場所に配布されるコンテンツを表します。

3 LSTM コア

LSTM には、一般に「ゲート」として知られる構造があり、セル状態に情報を削除または追加する機能があります。ゲートは、情報を選択的に通過させる方法です。これらには、シグモイド ニューラル ネットワーク層と点単位の乗算演算が含まれています。概略図は次のとおりです。

画像

LSTM には、セル状態を保護および制御するために、フォーゲット ゲート、入力層ゲート、出力層ゲートの 3 つのゲートがあります。

踊り場のドアは忘れてください

ターゲット オブジェクト: セルの状態。

機能: セル状態の情報を選択的に消去します。

動作ステップ: ゲートは ht-1 と xt を読み取り、セル状態 Ct-1 の各数値に対して 0 から 1 までの値を出力します。1 は「完全に保持する」を意味し、0 は「完全に破棄する」を意味します。概略図は次のとおりです。

画像

入力フロアドア

ターゲット: セルの状態

機能: 新しい情報をセル状態に選択的に記録します。

手順:

ステップ 1 では、「入力ゲート層」と呼ばれるシグモイド層が、どの値を更新するかを決定します。

ステップ 2: Tanh 層は、新しい候補値ベクトル C~t を作成し、それを状態に追加します。概略図は次のとおりです。

画像

ステップ 3: ct−1 を ct に更新します。古い状態に ft を掛けて、捨てる必要があると分かっている情報を捨てます。次に、it*C~t を追加して新しい候補値を取得します。この候補値は、各状態をどの程度更新するかを決定するかどうかに応じて変化します。概略図は次のとおりです。

画像

出力層ゲート

ターゲット オブジェクト: 非表示レイヤー ht

機能: 出力する値を決定します。

手順:

ステップ 1: シグモイド層を使用して、セル状態のどの部分を出力するかを決定します。

ステップ 2: Tanh を介してセルの状態を処理し、シグモイド ゲートの出力と乗算し、最終的には出力を決定した部分のみを出力します。

概略図は次のとおりです。

画像

画像

LSTM と GRU について学習するには、私のこの記事を参照してください: https://blog.csdn.net/qq_36816848/article/details/121616301

画像


インタビューの概要:

アルゴリズム採用面接関連
  1. アルゴリズム投稿作品概要 https://zhuanlan.zhihu.com/p/95922161
  2. 人工知能実践面接学習ロードマップ https://github.com/tangyudi/Ai-Learn
  3. Baimen Machine Learning のモデル評価 https://zhuanlan.zhihu.com/p/78603645
  4. 機械学習のための特徴エンジニアリング https://github.com/HadXu/feature-engineering-for-ml-zh
  5. ディープラーニング 500 の質問 https://github.com/scutan90/DeepLearning-500-questions
  6. ディープラーニング MugenKnock https://github.com/yoyoyo-yo/DeepLearningMugenKnock
  7. コンピュータービジョンの知識ポイントのまとめ https://zhuanlan.zhihu.com/p/58776542
  8. ディープラーニング分野で最も注目を集める業績履歴書 https://zhuanlan.zhihu.com/p/315605746
  9. アルゴリズム エンジニアの技術ロードマップ https://zhuanlan.zhihu.com/p/192633890?utm_source=wechatTimeline_article_bottom&from=timeline

**逆面接: **https://github.com/yifeikong/reverse-interview-zh 技術面接の最後に面接官に尋ねるべきこと

おすすめ関連情報:
  1. アルゴリズム投稿作品概要 https://zhuanlan.zhihu.com/p/95922161
  2. 人工知能実践面接学習ロードマップ https://github.com/tangyudi/Ai-Learn
  3. Baimen Machine Learning のモデル評価 https://zhuanlan.zhihu.com/p/78603645
  4. 機械学習のための特徴エンジニアリング https://github.com/HadXu/feature-engineering-for-ml-zh
  5. ディープラーニング 500 の質問 https://github.com/scutan90/DeepLearning-500-questions
  6. ディープラーニング MugenKnock https://github.com/yoyoyo-yo/DeepLearningMugenKnock
  7. コンピュータービジョンの知識ポイントのまとめ https://zhuanlan.zhihu.com/p/58776542
  8. ディープラーニング分野で最も注目を集める業績履歴書 https://zhuanlan.zhihu.com/p/315605746
  9. アルゴリズム エンジニアの技術ロードマップ https://zhuanlan.zhihu.com/p/192633890?utm_source=wechatTimeline_article_bottom&from=timeline
この記事の参考文献:

Ng Enda 教師のディープ ラーニング コース ノート

畳み込みニューラル ネットワーク — 実践的なディープラーニング 2.0.0

小さな一歩を積み重ねないと千マイルには届かない!-CSDN ブログ

5万語の要約、深層学習の基礎。_AI Hao-CSDN ブログ

ディープラーニングの入門ノート - 私はGuan Xiaoliang CSDN Blog

上記はまだ完全ではないため、更新する必要があります。個人的な学習のみを目的としています。侵害についてはご連絡の上、削除してください。

おすすめ

転載: blog.csdn.net/qq_43842093/article/details/135278842