Artificial-neural-network-hopfield

提供:Dev Guides
移動先:案内検索

人工ニューラルネットワーク-ホップフィールドネットワーク

ホップフィールドニューラルネットワークは、Dr。 ジョンJ. 1982年のホップフィールド。 これは、1つ以上の完全に接続された回帰ニューロンを含む単一の層で構成されています。 ホップフィールドネットワークは、一般的に自動関連付けおよび最適化タスクに使用されます。

離散ホップフィールドネットワーク

離散ライン方式で動作するホップフィールドネットワーク、言い換えれば、入力および出力パターンは離散ベクトルであり、本来はバイナリ(0,1)またはバイポーラ(+1、-1)であると言えます。 ネットワークには、自己接続のない対称ウェイト、つまり* w〜ij〜= w〜ji〜および *w〜ii〜= 0 があります。

建築

以下は、離散ホップフィールドネットワークについて留意すべき重要な点です-

  • このモデルは、1つの反転出力と1つの非反転出力を持つニューロンで構成されています。
  • 各ニューロンの出力は、自己の入力ではなく、他のニューロンの入力でなければなりません。
  • 重量/接続強度は* w〜ij〜*で表されます。
  • 接続は興奮性と抑制性があります。 ニューロンの出力が入力と同じ場合は興奮性になり、そうでなければ抑制性になります。 重みは対称、つまり w〜ij〜= w〜ji〜*

ホップフィールド

  • Y〜2〜 Y〜i〜、および Y〜n〜への Y〜1〜からの出力には、重み w〜12〜 w〜1i〜および wがあります。それぞれ〜1n〜*。 同様に、他のアークには重みがあります。

トレーニングアルゴリズム

離散ホップフィールドネットワークのトレーニング中に、重みが更新されます。 知っているように、バイナリ入力ベクトルとバイポーラ入力ベクトルを持つことができます。 したがって、どちらの場合でも、重みの更新は次の関係で行うことができます

  • ケース1 *-バイナリ入力パターン

バイナリパターンのセット s(p)、p = 1〜P

ここで、* s(p)= s〜1〜(p)、s〜2〜(p)、…​、s〜i〜(p)、…​、s〜n〜(p)*

重量マトリックスは

w _ \ {ij} \:= \:\ sum _ \ {p = 1} ^ P [2s _ \ {i}(p)-\:1] [2s _ \ {j}(p)-\:1] \:\:\:\:\:for \:i \:\ neq \:j

  • ケース2 *-バイポーラ入力パターン

バイナリパターンのセット s(p)、p = 1〜P

ここで、* s(p)= s〜1〜(p)、s〜2〜(p)、…​、s〜i〜(p)、…​、s〜n〜(p)*

重量マトリックスは

w _ \ {ij} \:= \:\ sum _ \ {p = 1} ^ P [s _ \ {i}(p)] [s _ \ {j}(p)] \:\:\:\: \:for \:i \:\ neq \:j

テストアルゴリズム

  • ステップ1 *-重みを初期化します。重みは、ヘビアンの原理を使用して、アルゴリズムから取得されます。
  • ステップ2 *-ネットワークのアクティベーションが統合されていない場合、ステップ3〜9を実行します。

ステップ3 *-各入力ベクトル *X について、ステップ4〜8を実行します。

ステップ4 *-ネットワークの初期アクティベーションを次のように外部入力ベクトル *X と等しくする-

y _ \ {i} \:= \:x _ \ {i} \:\:\:for \:i \:= \:1 \:to \:n

ステップ5 *-各ユニット Y〜i〜*について、ステップ6-9を実行します。

  • ステップ6 *-次のようにネットワークのネット入力を計算します-

y _ \ {ini} \:= \:x _ \ {i} \:+ \:\ displaystyle \ sum \ limits _ \ {j} y _ \ {j} w _ \ {ji}

  • ステップ7 *-出力を計算するためにネット入力に次のようにアクティベーションを適用します-

$$ y _ \ {i} \:= \ begin \ {cases} 1&if \:y _ \ {ini} \:> \:\ theta _ \ {i} \\ y _ \ {i}&if \:y_ \ {ini} \:= \:\ theta _ \ {i} \\ 0&if \:y _ \ {ini} \:

ここで、$ \ theta _ \ {i} $はしきい値です。

ステップ8 *-この出力 y〜i〜*を他のすべてのユニットにブロードキャストします。

  • ステップ9 *-ネットワークの接続をテストします。

エネルギー関数評価

エネルギー関数は、結合された関数として定義され、システムの状態の非増加関数です。

エネルギー関数E〜f〜⁡、⁡*リアプノフ関数*とも呼ばれ、離散ホップフィールドネットワークの安定性を決定し、次のように特徴付けられます-

E _ \ {f} \:= \:-\ frac \ {1} \ {2} \ displaystyle \ sum \ limits _ \ {i = 1} ^ n \ displaystyle \ sum \ limits _ \ {j = 1} ^ n y _ \ {i} y _ \ {j} w _ \ {ij} \:-\:\ displaystyle \ sum \ limits _ \ {i = 1} ^ n x _ \ {i} y _ \ {i} \:+ \: \ displaystyle \ sum \ limits _ \ {i = 1} ^ n \ theta _ \ {i} y _ \ {i}

条件-安定したネットワークでは、ノードの状態が変化するたびに、上記のエネルギー関数が減少します。

ノード i の状態が$ y_i ^ \ {(k)} $から$ y_i ^ \ {(k \:+ \:1)} $に変化した場合、次にエネルギー変化$ \ Delta E _ \ {f} $は次の関係で与えられます

\ Delta E _ \ {f} \:= \:E _ \ {f}(y_i ^ \ {(k + 1)})\:-\:E _ \ {f}(y_i ^ \ {(k)} )

= \:-\ left(\ begin \ {array} \ {c} \ displaystyle \ sum \ limits _ \ {j = 1} ^ n w _ \ {ij} y_i ^ \ {(k)} \:+ \ :x _ \ {i} \:-\:\ theta _ \ {i} \ end \ {array} \ right)(y_i ^ \ {(k + 1)} \:-\:y_i ^ \ {(k)} )

= \:-\ :( net _ \ {i})\ Delta y _ \ {i}

ここで$ \ Delta y _ \ {i} \:= \:y_i ^ \ {(k \:+ \:1)} \:-\:y_i ^ \ {(k)} $

エネルギーの変化は、一度に1つのユニットのみがそのアクティベーションを更新できるという事実に依存します。

連続ホップフィールドネットワーク

離散ホップフィールドネットワークと比較して、連続ネットワークには連続変数として時間があります。 また、巡回セールスマン問題などの自動関連付けおよび最適化問題でも使用されます。

モデル-シグモイド活性化関数を介して入力電圧を出力電圧にマッピングできるアンプなどの電気部品を追加することにより、モデルまたはアーキテクチャを構築できます。

エネルギー関数評価

E_f = \ frac \ {1} \ {2} \ displaystyle \ sum \ limits _ \ {i = 1} ^ n \ sum _ \ {\ substack \ {j = 1 \\ j \ ne i}} ^ n y_i y_j w _ \ {ij}-\ displaystyle \ sum \ limits _ \ {i = 1} ^ n x_i y_i + \ frac \ {1} \ {\ lambda} \ displaystyle \ sum \ limits _ \ {i = 1} ^ n \ sum _ \ {\ substack \ {j = 1 \\ j \ ne i}} ^ n w _ \ {ij} g _ \ {ri} \ int _ \ {0} ^ \ {y_i} a ^ \ {-1}(y )dy

ここで、λ*はゲインパラメーターおよび g〜ri〜*入力コンダクタンスです。