Deep Learning-Computer Vision-基礎学習ノート-01

画像分類の考え方: 正しいラベルを持つ既知の画像データを大量に収集し、関数を介して画像を渡し、画像の種類を返すという以前の考え方を、最初の関数の 2 つの関数に変換します。多数の画像が渡され、この関数によってトレーニングされ、内部パラメーターをトレーニングすることによって継続的に最適化されるモデルを返します。2 番目の関数は、トレーニング済みのモデルと認識対象の画像を渡し、画像のタイプを返します。

モデルをトレーニングする方法、ほとんどの場合、どのハイパーパラメーターのセットがより適切かを知ることはできず、パラメーターを継続的に調整してより良いモデルを取得することしか選択できません。
では、一連のハイパーパラメータを評価する方法は適切でしょうか? まず、次の 2 つの状況はお勧めできません:
1. トレーニング データ セットで最高の精度率を持つハイパーパラメーターを選択する (このデータ セットのセットで適切に機能するモデルを取得するだけです); 2. データ セットを次のように分割します
。トレーニング セットとテスト セットを使用して、テスト セットで最高のパフォーマンスを発揮するハイパーパラメータを選択します (そのテスト セットのセットでパフォーマンスの高いモデルを取得するだけです)。

上記の両方のケースは、過剰適合と貧弱なロバストになりがちです。
より良い方法は、データセットをトレーニングセット、検証セット、およびテストセットに分割し、トレーニングセットで異なるハイパーパラメーターを使用してアルゴリズムをトレーニングし、検証セットで評価して、最高のパフォーマンスを持つハイパーパラメーターのセットを選択することです。テストへの影響を確認してください。これは、まだ見られていない新しいデータに対するアルゴリズムの最高のパフォーマンスです。

また、小さなデータセットでの使用に適しており、深層学習では一般的に使用されていないクロス検証のアイデアがあり、トレーニングセットを多くの部分に分割してから、異なる部分を検証セットとして選択します。複数回のトレーニングと検証を行うことで、どのハイパーパラメーターのセットがより安定して動作するかについてより信頼できる可能性がありますが、大規模なモデルをトレーニングするディープ ラーニングでは、トレーニングの計算コストが非常に高くなるため、この方法は実用的ではありません。

パラメータ モデルの最も単純な例である線形分類子の紹介. たとえば、トレーニング画像 x とパラメータ W を関数に渡し、関数を介してさまざまなラベルのランク スコアを返します. 各ラベルのランク スコアは画像を示しますどちらのラベルがより可能性が高いです。最も単純なケースを想定すると、x は画像の各ピクセルを長いベクトルに引き伸ばすことを表します (たとえば、32 32 3画像ベクトルの長さは 3072 で、RGB の 3 原色を表すために 3 を掛けます)、f(x, W)=Wx +b, ここで、W はトレーニング セットの継続的なトレーニングを通じて取得する必要がある重み行列であり、b は好み設定パラメーターです.たとえば、自分のデータ セット内の猫の写真の割合は比較的大きいです.の場合、b ベクトルの増加で猫の部分を適切に表すことができます。
この場合、W はトレーニングした線形分類器です. 重み行列の各行ベクトルは、いくつかのカテゴリに関連する画像に対応することができ、対応するピクセルがそのカテゴリにどの程度の影響を与えるかを教えてくれます。下の図の右上隅にある車に対応するテンプレートなど、このタイプの画像のテンプレートが何であるかを確認できるように、取り出して画像に変換します。そして、このような分類は、ある絵の種類を高次元空間のある点とみなし、その点と点の間に分類面を設けてカテゴリを分割するものですが、この分類方法には大きな限界があります。下図の例のように直線的に分離できない状況で、2 次元平面に 1 本の直線を引いても 2 つのカテゴリを分割できない場合があります。
したがって、さまざまなドメイン空間に表示されるカテゴリなど、マルチモーダル データがある場合はいつでも、線形分類器が問題を起こす可能性があります。
写真の説明を追加してください

損失関数と最適化
損失関数 では、
上記のトレーニング後に得られた重み行列を取得するにはどうすればよいでしょうか? W を入力としてスコアを見て、W の品質を定量的に推定する関数を使用できます。この関数は損失関数と呼ばれ、一般的な多分類 SVM 損失関数 (計算については下図を参照) などがあります。 . したがって、任意の W が良いか悪いかを定量的に測定し、W の実行可能領域から W のより良い値を見つける効果的な方法を見つけることができます。このプロセスが最適化です。

損失関数を最適化するプロセスは, 上記の画像分類の例を使用することができます. 例えば, f関数はパラメータ x 画像と W 重み行列を受け入れ, 画像の認識された分類ラベルまたはランクである y を出力します.各ラベル. 要するに、y は予測が良いかどうかを判断できます. そして、実際のラベルと比較することによって. 最終的な損失関数は、データ セット全体の N サンプルの損失関数の平均値であり、パラメーター W が満足できるものであるかどうかを定量的に記述し、すべての W の中でトレーニング セットの損失関数を最小化する W を見つけます。

通常、トレーニングの開始時に、小さなランダム性で W を初期化するため、トレーニングの開始時に各 f によって返されるランクは、一様に分散されたより小さい値を示す傾向があります。
したがって、たとえば、多分類 SVM 損失関数を使用し、図に 10 個のクラスがある場合、ランク ベクトルのすべての値は最初は 0 に近く、損失関数の最終的な平均結果は次のようになります。 10-1=9 であると予想されます (プロセスはより複雑です。見ないでください。大まかにこのプロセスは、ランク ベクトルの値が等しいため、値の差は生じません。 1 (正しいスコアが誤ったスコアよりも高い安全マージン) など、設定した差のしきい値に達し、対応する画像カテゴリの予測が正しい場合、つまり、正しいものに対応するランクの値画像タイプが高く、画像の他のすべてのカテゴリと比較した値の差が 1 を超える場合、返される損失関数の値は 0 であり、多分類 SVM 損失関数が毎回計算されます。この間の差の合計画像タイプと他のすべてのタイプなので、最初の最終結果は 9 です)、トレーニングの開始時にこの分類 SVM 損失関数の戻り値がカテゴリ -1 と等しくない場合、プログラムにバグがある可能性があります。
これはより良いアプローチであり、最初にさまざまな損失関数でトレーニングを開始するときに、予想される損失が何であるかを知ることができるはずです。
ヒント: 計算損失関数の最大値を最大値の 2 乗に変更するとどうなりますか?
損失関数はアルゴリズムのエラーの種類を示すためのものであり、非アルゴリズムになるため、結果はまったく異なります。 -linear 法を 2 乗に変更した後、良いことと悪いことの間のトレードオフを変更することを意味し、非常に悪い間違いはさらに悪い、2 乗の悪いことを意味します。
写真の説明を追加してください
上記の分類 SVM 損失関数の各画像トレーニングの損失関数の Python 実装:

#x为图像像素向量,y为图像对应的正确的标签
def L_i_vectorized(x,y,w):
	scores=W.dot(x)
	margins=np.maximum(0,socres-scores[y]+1)
	margins[y]=0
	loss_i=np.sum(margins)
	return loss_i

ヒント: W がある場合、損失関数によって返される値は 0 です。この W は一意ですか?
一意ではありません。たとえば、2*W も 0 です。ここに問題があります。損失関数は、どの W が必要かを示すものです。では、損失関数がすべて 0 である W からどのように選択するのでしょうか?
実際、上記に基づいて、トレーニングセットに適合する W を見つける必要があることを分類器に伝えているだけですが、実際には、トレーニングセットでのパフォーマンスは気にせず、それを見つけてテストデータに適用するため、トレーニングセットに適合するだけでよいことを分類器に伝えるだけでは、簡単にオーバーフィッティングにつながります。たとえば、下の図では青い点に青い線が当てはめられていますが、テスト セットで本当に必要なのは緑の直線です。
写真の説明を追加してください

したがって、上記の問題を解決するために、通常、正則化の概念を使用して、モデルがより単純な W を選択するようにします。この考え方は、オッカムのカミソリに似ています。つまり、理論をより広く適用できるようにし、より単純な仮定を選択します。 . したがって、上記の損失関数に基づいて正則化ペナルティ項 R を追加し、標準損失関数がデータ損失項と正規項を持つようにします。
写真の説明を追加してください
上の図の曲線が緑色の直線になるように、2 つの項のバランスを取るために使用されるハイパーパラメータ λ を次に示します。より複雑なモデルを使用する場合は、このペナルティを克服する必要があります (R(W) は、より大きな値)、主な目的は、データを適合させようとするのではなく、モデルの複雑さを軽減することです。

実際に使用されているさまざまな正則化は次のとおりです。最も一般的なのは L2 正則化または重み減衰です。L2 正規化は、重みベクトル W のユークリッド ノルム、または場合によっては 2 乗ノルムまたは場合によっては 2 次ノルムです. アイデアは、W のユークリッド ノルムを罰し、比較的大まかな方法​​を使用して分類器の複雑さを測定することです. 場合によっては、L1 正則化も見られます。たとえば、この W のスパース性を助長する可能性があります。L1 と L2 の組み合わせであるエラスティック ネットワーク正則化もあります。最大ノルム正則化、ドロップアウト、またはバッチ正規化のランダム深度もあります。これらの概念は近年比較的人気があります。さまざまな状況では、L1 と L2 の正則化はまったく逆の結果になる傾向があるため、特定の問題を分析し、モデルの複雑さをどのように測定する必要があるかを確認してください。
写真の説明を追加してください

以下の例では、W1 と W2 を x で乗算した結果は 1 ですが、L2 正則化を使用すると、W2 を選択する傾向があります。
写真の説明を追加してください

多カテゴリ SVM 損失関数に加えて、深層学習で非常によく使用されるもう 1 つの選択肢は、多項ロジスティック回帰損失関数 (多項ロジスティック回帰、多項ロジスティック回帰) またはソフトマックス損失 (交差エントロピー損失) です。前の関数 F を思い出してください。各画像タイプのスコアを表す 10 個の数値を返しました. SVM とは異なり、これらのスコアにはここで追加の意味が与えられます. そして、それを使用して、画像クラスの確率分布を計算します。
下図で、Sk、Sj などは Softmax 関数で計算されたスコアの 1 つです.結果がすべて正の数になるようにインデックスを付け、指数和を使用して確率分布を正規化し、すべてのカテゴリが対応する確率を取得します。それぞれの範囲は 0 から 1 で、合計は 1 になります。必要な実際のラベルの確率は比較的高く、1 に近い必要があり、損失関数の戻り値は実際のカテゴリの確率の対数であり、負の値を取ります (対数を取るのは単調なので、小さいほど、返される数値が大きいほど、対数関数の最大値を見つけるのは比較的簡単です. ここでの状況は、真のラベルの確率が無限大の場合です. 1 に近づくと, 戻り値も無限に 0 に近くなり, 戻り値の最大値は無限になる可能性があります.
写真の説明を追加してください
写真の説明を追加してください
各ランクはより小さい一様分布値を示す傾向があります. このとき, すべての S は非常に小さく 0 に近くなります.戻り損失の値は logc で、c はカテゴリの総数です ここで観測式が説明されていないことは明らかです。したがって、このソフトマックス損失を使用してモデルをトレーニングしている場合、最初の反復の損失は logc である必要があります。そうでない場合、コードに問題がある可能性があります。

2 つの損失関数を比較すると、SVM はデータ ポイントが正しく分類されるしきい値を超えていることを取得し、そのデータ ポイントを気にしなくなります (損失関数は 0 を返します)。興味深い違いですが、実際にはパフォーマンスの違いはそれほど大きくありません。


上記を要約して要約すると、x (画像) と y (カテゴリ) のデータセットがあり、線形分類器 (W) を使用してスコア関数 (f) を取得し、入力 x からスコア S を計算してから、私たちの予測が真のラベル y と比較してどれほど悪いかを定量化するために、より単純なモデルを選択しようとして、損失関数に正則化項を追加することがよくあります。これは、私たちが教師あり学習と呼んでいるものの非常に一般的な説明です。
問題は、それをどのように行うか、損失を最小限に抑えるためにこの W を実際にどのように発見できるかであり、最適化のトピックについては以下で説明します。

写真の説明を追加してください


最適化
まず第一に、より良い W を見つけるために、純粋な乱数を何度も使用して損失関数で何度も試行することは絶対に不可能であり、これは最悪のアルゴリズムです。
W を継続的に最適化するプロセスは、山の底を見つけるプロセスに相当します. 山には道がないかもしれませんが、どの道が下向きであるかを感じることで見つけることができます. 次に、数学では、の勾配を見つける必要があります.多変量関数. 勾配は関数の最も速い上昇を表します. の方向, その負の方向は最も速い下降の方向であり, 勾配ベクトルの各要素は各方向での f の勾配を教えてくれます. したがって、多くの深層学習では、関数の勾配を計算し、それらの勾配でパラメーター ベクトルを繰り返し更新します。

コンピューターで勾配を計算する簡単な方法は有限差分法です。
写真の説明を追加してください
左側で、現在の W が損失値 1.25347 のこのベクトル パラメーターであると仮定すると、目標は損失値の勾配 dW を計算することです。 W と同じ次元 数値のベクトル。勾配の各要素は、関連する方向への小さなステップで損失がどれだけ変化するかを示します。有限差分を計算するには、W の最初の要素に小さな値 h を追加するだけです.次に、分類子でランクを再計算し、損失関数で損失値を再計算します.これらのすべては、損失関数を 1.25322 に減らすことができます.この有限差分を使用できます 勾配の最初の次元で有限差分近似を実装します。次に、最初の次元の値を再度復元し、同じ方法で 2 番目の次元を計算します。このプロセスを連続して繰り返します。
良さそうに見えますが、この方法は遅すぎるため、実際には不十分です. 畳み込みニューラル ネットワークが特に大きい場合、計算関数 f は非常に遅くなり、W はここで 10 個の入力しか持たない可能性があります。数百万なので、この方法は機能しません。

幸いなことに、私たちは微積分を学んだので、損失の式を書き留め、勾配の式を書き留めるために微積分を使用するだけでよいので、以前の方法に戻り、すべての W 次元を繰り返し計算する代わりに、事前に勾配 の式を計算し、W 値から dW または各ステップの勾配を計算します。これは実際にはより適切です。
写真の説明を追加してください
要約すると、数値勾配は実際には使用されない可能性がありますが、単純で便利です。実際には、勾配を計算するときに常に分析勾配を使用しますが、数値勾配は便利なデバッグ ツールです。実際、コードに記述された解析式が正しいことを確認するにはどうすればよいでしょうか。数値勾配は計算に時間がかかりすぎ、問題のパラメーターの数を減らす必要があるため、解析勾配の正確性を確認する単体テストとして数値勾配を使用できます。
写真の説明を追加してください


勾配の計算方法がわかれば、3 行の単純な勾配降下アルゴリズム コードだけが必要なように見えますが、膨大な量の計算は、最も複雑なディープ ラーニング アルゴリズムの中核でもあります。勾配降下アルゴリズムでは、最初に W をランダムな値に初期化し、true の間は損失と勾配を計算し、次に勾配の反対方向に W の重み値を更新し、グリッドが収束するまで繰り返します。学習率とも呼ばれるステップ サイズ (step_size) は、勾配が計算されるたびにその方向に進む距離を示すハイパーパラメーターです。ステップ サイズが小さすぎると、局所最適に陥る可能性があります。ソリューション. それはあなたが最初に設定する必要があるものです. モデルサイズや必要な正則化の量などの他のものよりも前に、最も重要なハイパーパラメータの1つ.
#Vanilla Gradient Descent

while True:
	weights_grad=evaluate_gradient(loss_fun,data,weights)
	weights+= - step_size * weights_grad #执行参数更新

基本的な考え方はこれですが、さまざまな高度な使い方もあります.各ステップの勾配を使用して次のステップの方向を決定することも、これらの勾配情報の使用方法を決定するためのさまざまな更新戦略を持っています.これについては、後で引き続き紹介します. .


ここで別の問題があります。以前に損失関数を定義し、データセットの合計エラーをトレーニングセット全体、つまりすべての画像のエラーの平均に設定しましたが、実際にはトレーニングセットN は非常に大きく、場合によっては数百万レベルになる可能性があり、これらの損失を計算するコストは非常に大きく、f と損失関数に対して数百万回の操作を実行するために W を 1 回更新するのに長い時間がかかります。

写真の説明を追加してください

そのため、実際には確率的勾配降下法をよく使用します. これは、トレーニング セット全体の誤差と勾配値ではなく、反復ごとにトレーニング サンプルのごく一部を選択してミニバッチ (小さなバッチ) にし、通常どおり n 乗 32/64/128 など 次に、ミニバッチを使用して、誤差の合計と実際の勾配を推定します。これは、実際の値の期待値のモンテカルロ推定と見なすことができます。これにより、コードが 1 行増えます。

#Vanilla Minibatch Gradient Descent

while True:
	data_batch=sample_training_data(data,256) #256批量
	weights_grad=evaluate_gradient(loss_fun,data_batch,weights)
	weights+= - step_size * weights_grad #执行参数更新

最後に、別の概念である画像の特徴について学びます。
以前は、写真の元のピクセルを取り出して線形分類器に渡しましたが、マルチモダリティやその他の理由により、これの効果はあまり良くありません。そのため、ディープ ニューラル ネットワークを大規模に使用する場合、一般的な方法は 2 段階の戦略を使用することです。最初のステップは、画像の画像に関連する値を計算するなど、画像のさまざまな特徴表現を計算することです.2番目のステップは、異なる特徴ベクトルを組み合わせて画像の特徴表現を取得することです.それを線形分類器に渡します。
写真の説明を追加してください
これを行う動機は下の図に示されています. 左に青と赤の2種類のトレーニングセットがあり、線形決定境界は線形分類器で分割できませんが、柔軟な特徴変換があればこの例では、極座標変換を使用して、複雑なデータセットを線形分離可能なデータセットに変換しています。
写真の説明を追加してください
したがって、問題は、関心のある問題の適切なメトリックを計算するための適切な機能変換を見つけることです。画像の場合、元のピクセルを極座標に変換することは役割を果たしません. 色ヒストグラム、方向勾配ヒストグラム、単語バッグ (画像画像ブロックから収集された nlp から着想を得たもの) など、機能する可能性がある一部の画像特徴表現.

バックプロパゲーションとニューラル ネットワーク
バックプロパゲーション
前に W の解析的勾配について説明しましたが、複素関数の解析的勾配を計算するにはどうすればよいでしょうか? ニューラルネットワークを使用する場合、すべてのパラメータの勾配式を書き出すのは現実的ではありません.このとき、計算グラフと呼ばれるフレームワークを使用する必要があります.このようなグラフを使用して関数を表現し、グラフのノードを計算の各ステップを表すため、グラフ内の各変数の勾配は、バックプロパゲーションと呼ばれる手法を使用してチェーン ルールを再帰的に呼び出すことで計算できます。
たとえば次の例では、各ステップの中間計算結果も中間変数に追加され、勾配値が後ろから前に計算されます.各ノードは、上流から返された勾配を取得します. zノード、z勾配に関する最終的な損失を取得します。
このように、連鎖律を使用して非常に複雑な式をいくつかの計算ノードに分解し、特定の入力、つまり勾配値全体を導出することなく、f に対する x と y の影響を計算できます。表現。たとえば、このとき次のqは3、zは-4であり、qがfに与える影響は-4と計算できるので、yがfに与える影響は-4と計算できます。
ヒント: 後方に伝搬する前に前方に伝搬するため、式を計算するだけでなく、特定の値が存在する必要があります。
写真の説明を追加してください写真の説明を追加してください

勾配を見つけるためのより複雑な関数:
写真の説明を追加してください
たとえば、+1 ノードから 1/x ノードに渡される値は 1.37 であり、次に 1.37 が x として f=1/x に渡され、次に +1 ノードの影響で 1/x が計算されます. 1/x の導関数が必要です.これは -1/x^2 です. したがって 1.37 を -1/x^2 に渡すと -0.53 が得られます. したがって 1/x ノードから + への勾配1 ノードは - 0.53 であり、1/x はすでに最後のノードであり、それに対する f の勾配は 1 であるため、f に対する +1 ノードの影響は 1*(-0.53) です。たとえば、*-1 ノードおよび exp ノード、
上流 渡された勾配は -0.53 であり、ローカル勾配は exp 関数の微分関数によって exp ノードに渡された *-1 の値であるため、ローカル勾配は e の負のべき乗であるため、f *-1 ノードへの勾配、つまり *-1 ノードの f への影響は -0.53*e^-1=-0.20 です。つまり、このパラメータの f への影響は、ローカル上流の勾配による勾配など。

したがって、任意のパラメーターの勾配の分析式を導出するのに比べて、このアプローチは、処理したすべてのローカル勾配の式が見つかったら、各値を入力するだけで済み、チェーン ルールを使用するだけでよいという点で単純です。以下 これらの値を順方向に乗算すると、すべての変数に関する f の勾配が得られます。

写真の説明を追加してください

計算グラフを作成するとき、任意の間隔サイズで計算ノードを定義できることに注意してください. 上図では、それを達成できる最も単純な形に分解し、それを足し算、引き算、掛け算、割り算に分解します. 実際、ノードのローカル勾配を記述できる限り、いくつかのノードを組み合わせてより複雑なノードを形成できます。

実際の使用では, 変数が高次元ベクトルの場合, 計算プロセス全体は同じです. 唯一の違いは, 今作った勾配がヤコビ行列になったことです, これは各変数の導関数を含む行列です. x, y ----f---->z、各 x 要素の方向に z の勾配があります。ヤコビ行列の各行は偏導関数であり、行列の各要素は、入力ベクトルの各要素に対して出力ベクトルの各要素の偏導関数を計算した結果であるため、下図のノードは 4096*4096 サイズです。
写真の説明を追加してください
しかし, 実際の演算では, ほとんどの場合, それほど大きなヤコビ行列を計算する必要はありません. 例えば, ここでの max 演算では, 入力の最初の要素は出力の 1 つの要素にしか関連していません. ヤコビ行列は対角行列なので、行列全体を書き出す必要はありません。x に関する出力ベクトルの偏導関数を求め、結果を勾配として入力するだけです。

写真の説明を追加してください

ベクトルの例を見てください。f は W 行列の 2 乗に x ベクトルを掛けたものです。ノードは中間結果 f(q) と見なすことができ、最終結果は q ベクトルの 2 乗和です。 , q=Wx. 最初に特殊なケース n= 2 を仮定します. このとき, 入力パラメータ (緑の添え字) は上記のとおりであり, 最終結果は 0.116 です. f(q) ノードから f までの経験は合計です. qi 側の導関数は 2qi を得ることができるので、f(q) ノードは f に対して正しいです。効果は 2 q=[0.44,0.52] です。
次に、W への f の勾配を見つけます。Wx=q、q1 は w1 から導出され、i は x1 を取得するため、w1、1 の勾配は x1*0.44=0.088 となります。 W に関する最後の値は、示されている右上隅に示されています。
また、非常に重要なことを覚えておいてください。変数勾配のベクトル サイズが変数サイズと同じであることを確認してください。これは非常に便利なサニティ チェックです。


ニューラルネットワーク
一般的に言えば、ニューラルネットワークは単純な関数からなる関数の集合であり、最上位層に積み上げられます.より複雑な非線形関数を形成するために、それらは階層的に積み上げられます.これは最も基本的なものです.多段階層計算。
たとえば、上記の画像分類の 10 のカテゴリでは、W の各行は写真のテンプレートと見なすことができ、車のテンプレートは赤い車のように見えますが、実際には他の色の車があり、これらを使用することができます車も、最初のレイヤーの結果として max(0,W1x) を使用してさまざまなテンプレートに分割され、最初のスコアの中間値が W2 によって重み付けされて、最終的なスコアが取得されます。馬と右の馬は中間で得点しましたが、それでも最終馬のカテゴリーで非常に高い得点を獲得したため、馬として分類されました.
したがって、ニューラル ネットワークは、複数の線形層を含む計算グラフであり、それらの層が非線形関数を介して接続されてスタックを実現しているとも言えます。
写真の説明を追加してください
上記は 2 層ニューラル ネットワークです. 以前は 2 層ニューラル ネットワークと呼んでいました. 具体的には 2 つの線形層があります. 各線形層に対して行列の乗算が実行されます. これは 2 つの全結合層または 1 つの隠れ層と呼ばれます.層. ニューラル ネットワーク, 任意の深さのニューラル ネットワークを取得するためにさらに層を積み重ねることもできます. 右側のものは 3 層ニューラル ネットワークまたは二重隠れ層ニューラル ネットワークと呼ぶことができます. これは信号と比較できます.
写真の説明を追加してください
生体ニューロン間の伝達. パルス信号はそれぞれの中で伝達されます. 多くのニューロンはニューロン間で互いに接続されています. 各ニューロンには複数の樹状突起があり、ニューロンへのパルスを受信します.軸索原を介して下流の神経にパルス信号を送信します。各計算ノードの方法も同様です. 計算グラフのノードは互いに接続されています. x0, x1, x2 などのニューロンの x 入力量をすべて渡すために x を入力または信号を送る必要があります.重み W を割り当てて重ね合わせ収束する方法を使用して活性化関数を取得し、活性化関数をニューロンの末端に適用して得られた値を出力として使用し、最終的にその値を関連するニューロンに伝達します。
そして、上記の例のシグモイド活性化関数と同様に、すべての入力を受け入れて値を出力する活性化関数に注目すると、他の非線形関数はニューロンのトリガーと比較できると考えることができます。活性化関数はニューロン伝達放電率です。現在、生体ニューロンのメカニズムに最も近い非線形関数はReLU非線形関数ですが、実際の生体ニューロンはこれよりもはるかに複雑です。
写真の説明を追加してください
写真の説明を追加してください

おすすめ

転載: blog.csdn.net/weixin_43739821/article/details/127000096