1

多項分類では、すべての非線形ユニットにソフトマックス活性化関数を使用しており、ANN には「k」個のクラスに対して「k」個の出力ノードがあります。出力層に存在する「k」個の出力ノードのそれぞれは、以下に示すような、前の層のすべての重みに接続されています。

ここに画像の説明を入力

そのため、最初の出力ノードが有利にウェイトを引っ張ろうとすると、このレイヤーに先行するすべてのウェイトが変更され、他の出力ノードも引っ張られます。これは通常、最初のノードが引っ張っていた方向と矛盾します。1セットのウェイトを使った綱引きのように見えます。では、出力クラスごとに個別の重みのセット (すべてのレイヤーのすべてのノードの重みを含む) が必要ですか、それとも異なる形式のアーキテクチャが存在するのでしょうか? 私が間違っている場合は、私を修正してください。

4

1 に答える 1

1

各ノードには一連の重みがあります。実装と式では通常、行列の乗算が使用されるため、概念的には各ノードに独自の重みのセットがあるという事実を忘れてしまう可能性がありますが、実際にはそうです

各ノードは、次の層のすべてのノードに送信される単一の値を返します。したがって、層上のノードは入力hを受け取ります。ここで、層内のノードの数です。これらの入力を とします。その後、ニューロンは次のように戻ります。num(h - 1)num(h - 1)h - 1x1, x2, ..., xk

x1*w1 + x2*w2 + ... + xk*wk

またはこれの機能。したがって、各ニューロンは独自の重みのセットを維持します。

イメージ内のネットワークを考えてみましょう。1最上位のニューロンとその他のニューロンが出力するトレーニング インスタンスがあるとします0

したがって、私たちの目標は次のとおりです。

y = [1 0 0 0]

そして、実際の出力は次のとおりです (簡単にするためにソフトマックスを無視しています)。

y^ = [0.88 0.12 0.04 0.5]

つまり、すでにかなりうまくいっていますが、さらに良くするために逆伝播を行う必要があります。

ここで、出力デルタは次のようになります。

y^ - y = [-0.12 0.12 0.04 0.5]

delta を使用して最上位のニューロンの重みを更新し-0.12、2 番目のニューロンの重みを更新し0.12ます。

0各出力ニューロンの重みがこれらの値を使用して更新されることに注意してください。これらの重みはすべて、正しい値 (または)に近づくために増減します1

ここで、各出力ニューロンの出力が隠れニューロンの出力に依存していることに注意してください。したがって、それらも更新する必要があります。これらは、出力ニューロンのデルタを使用して更新されます (更新式については、こちらの 7 ページを参照してください)。これは、導関数を取るときに連鎖律を適用するようなものです。

おっしゃる通り、特定の隠れニューロンに対して、「綱引き」が行われ、各出力ニューロンのエラーが独自の方法で引っ張られます。しかし、隠れ層はすべての出力ニューロンを満たすように学習する必要があるため、これは正常です。これが、重みをランダムに初期化し、複数の隠れニューロンを使用する理由です。

出力ノードの重みが互いに独立しているため、最終的な答えを与えるために適応するのは出力層です。隠れ層はすべての出力ノードの影響を受ける必要があり、それらすべてに対応できるように学習する必要があります。

于 2015-09-08T22:24:24.537 に答える