compcogneuro/sims: ネットワークと入力パターン
このページは外部資料の日本語訳です。原文の見出し順と本文順を保ち、コード・URL・出典表記はできるだけ原形のまま残しています。
出典とライセンス
原典: https://github.com/compcogneuro/sims/blob/main/ch2/detector/README.md
ライセンス: BSD 3-Clause。このページは日本語翻訳であり、変更点は翻訳とサイト内整形です。
# 導入
このシミュレーションでは、個々のニューロンがどのように検出器のように機能し、入力から特定のパターンを選択し、シナプスの重みと入力アクティビティ パターンの一致に対してさまざまな程度の選択性で応答するかを示します。
重みの特定のパターンにより、シミュレートされたニューロンが他の入力パターンよりも一部の入力パターンにどのように反応するかを見ていきます。ニューロンの興奮性のレベルを調整することで、ニューロンがその重みに最も適合するパターンにのみ反応するようにしたり、より段階的にその重みパターンに近い他のパターンに反応したりすることができます。これにより、点ニューロン活性化関数がなぜそのように機能するのかについての洞察が得られます。
ネットワークと入力パターン
まず、[[[sim:Network]]] タブを調べて、Detector ネットワークを表示します。ネットワークには、さまざまな数字の形の活性化パターンを持つ Input 層があり、これらの入力ニューロンは、一連の重み付けされたシナプス接続を介して受信ニューロン (RecvNeuron) に接続されます。この受信ユニットが入力から持つ重み (シナプスの強さ) のパターンを確認することができ、このユニットが何を検出するかについてのアイデアが得られるはずです。
- [ネットワーク] ビューの左側にあるネットワーク変数のリストの上部にある [[[sim:Wts]]] タブを選択し、表示する値として [[[sim:r.Wt]]] をクリックし、次に sim:RecvNeuron をクリックして受信重みを表示します。
Input グリッドが 8 のパターンで点灯しているのがわかります。入力ユニットからの接続に対する受信ユニットの重みパターンであり、対応する送信(入力)ユニットに重み値が表示されます。したがって、入力ユニットがこの重みパターンと一致する起動パターンを持っている場合、受信ユニットは最大限に起動されます。ターゲットの 8 入力に近い入力パターンは、その近さに応じて段階的なアクティベーションを生成します。したがって、後で説明するように、この重みのパターンによってユニットが何を検出するかが決まります。まず、ネットワークに提示される入力のパターンを調べます。
- ウィンドウの左側にある [[sim:Digits]] ボタン (
Patternsラベルの隣) をクリックします。この コントロール パネル には、このモデルの主な設定が含まれています。
表示されるディスプレイには、Input 層に提示される (「クランプ」される) さまざまな * 入力パターン * がすべて表示されるため、受信ユニットがどのように応答するかを確認できます。表示の各行は、ネットワークに提示される単一の トライアル を表します。ご覧のとおり、この場合の入力データには 0 から 9 までの数字が含まれており、5x7 のピクセル (画素) グリッド上の単純なフォントで表されます。特定のイベント (数字) の各ピクセルは、ネットワーク内の対応する入力ユニットを駆動します。
ネットワークの実行
受信ニューロンがこれらの入力パターンに応答することを確認するために、それらを 1 つずつ提示し、重みを与えられた場合にニューロンが応答する理由を判断します。したがって、ネットワーク ウィンドウでアクティベーションを再度表示する必要があります。
Networkで [[sim:Act]]/Actを選択してアクティベーションを表示し、ウィンドウ上部のツールバーにある [[sim:Step]] ボタンをクリックします。これにより、示されているようにTrialが 1 ステップ実行されます。
これにより、Input の 0 (ゼロ) のパターンがアクティブになり、点ニューロン活性化関数に従って受信ユニットの活性化が一連の サイクルにわたって繰り返し更新される セトリング プロセスの 20 サイクルが示されます (neuron シミュレーションのユニットが時間の経過とともに更新されたのと同様です)。 受信ニューロンが入力に完全に応答するのに十分な時間として 20 サイクルを選択しました。
受信ユニットは、0 入力パターンによってしきい値を超えてアクティブ化されなかったため、アクティビティ値 0 を示しました。 ユニットがこのように応答した理由の核心に入る前に、残りの桁に進み、他の入力にどのように応答するかを観察してみましょう。
- 番号
8が表示されるまで、他の各桁に対して [[sim:Step]] を押します。
8 という数字が提示されたときに受信ユニットが最終的にアクティブになり、他のすべての数字についてはゼロがアクティブになることがわかるはずです。したがって、予想通り、受信ユニットは 8 検出器のように動作します。入力が入力重みと完全に一致する場合にのみ、受信ニューロンを発火閾値を超えて駆動するのに十分な興奮性入力が得られます。
-
Networkの下部にある時間ラベルの後にある「VCR」スタイル ボタンを使用して、更新の各サイクルを確認し、時間の経過に伴うアクティベーションの進行を確認できます。 -
先に進み、もう 1 回 [[sim:Step]] を実行して、
9で何が起こるかを確認してください。
グラフを使用して、さまざまな入力パターンにわたる受信ユニットのアクティブ化のパターンを表示できます。
※「[[sim:Test Trial Plot]]」タブをクリックします。
グラフは、ユニットのアクティベーション (Act) を X 軸に沿ったトライアル (および桁) 番号の関数として示します。 8 の位置に 1 つのピークがある平らな線が表示されるはずです。
興奮性コンダクタンスの計算 Ge (ネット入力)
ここで、なぜユニットがそのように反応するのかを正確に理解してみましょう。そのための鍵は、重みのパターンと入力パターンの関係を理解することです。
- ネットワークの [[sim:Wts]]/
r.Wt表示に戻り、(ウィンドウが閉じている場合は) [[sim:Digits]] ボタンを再度クリックし、重みも表示されていることを確認します。 アイデアは、重みを数字パターンと比較することです。
質問 2.8: 各桁パターンについて、ネットワークの
r.Wtビューに表示される8桁パターンに従って、重みが 1 であるパターン内のアクティブなユニットの数を報告してください。 言い換えれば、数字の入力アクティビティと重みパターンの間の 重複 を報告します。