compcogneuro 翻訳ページ

compcogneuro/sims: ネットワークトレーニング

このページは外部資料の日本語訳です。原文の見出し順と本文順を保ち、コード・URL・出典表記はできるだけ原形のまま残しています。

種別

翻訳資料

更新日

2026-05-20

対象

外部資料を日本語で原文順に読みたい読者

目安

原文量に依存

確認メモ

機械翻訳をベースにした日本語訳です。実装手順や引用は必ず原典も確認してください。

出典とライセンス

原典: https://github.com/compcogneuro/sims/blob/main/ch7/priming/README.md

ライセンス: BSD 3-Clause。このページは日本語翻訳であり、変更点は翻訳とサイト内整形です。

シミュレーションに戻る

# 導入

このシミュレーションは、「プライミング」の神経基盤を調査します。これは、以前の経験からの残留痕跡のしばしば驚くほど強い影響であり、「重みベース」(シナプスの小さな変化) または「活性化ベース」(残留神経活動) のいずれかになります。最初の部分では、標準的な遅い皮質学習率によって引き起こされる小さな重みの変化が、どのように重要な行動プライミングを生成し、ネットワークがある出力パターンを別の出力パターンよりも優先させるかを見ていきます。同様に、残留アクティベーションによって後続の処理にバイアスがかかる可能性がありますが、これは、重量ベースのプライミングの長期にわたる効果と比較すると、短期間かつ一時的なものです。

これらの現象をモデル化するには、同じ単語の 2 つの異なる意味 (たとえば、「銀行」は「川の銀行」または「お金の銀行」を意味する場合があります) など、2 つの異なる可能な出力を持つように特定の入力パターンをトレーニングする必要があります (つまり、1 対多のマッピング)。

ネットワークは標準の 3 層構造になっており、Input が一番下に表示され、Output が一番上に生成されていることに注意してください。これは、すべてをできるだけシンプルかつ標準に保つためです。

  • コントロール パネルで [[sim:OnlyA]] および [[sim:OnlyB]] をクリックすると、ネットワークがトレーニングされている 2 つの異なるパターン セットが表示されます。

Input パターンは各パターン セットで同一ですが、AB には、この同じ入力とペアになっている異なる Output パターンがあることがわかります。 [[sim:Alt AB]] パターンは、これらの A セットと B セットの両方を組み合わせたもので、入力ごとに A と B の出力を交互に切り替え、ネットワークの初期トレーニングを行うために使用します。

ネットワークトレーニング

まず、各入力に対するこれら 2 つの異なる関連出力の意味的背景知識の学習をシミュレートします。

  • ツールバーの [[sim:Init]] および [[sim:Step]]: Trial を押します。パターンの標準的なマイナス/プラス位相エラー駆動の学習を観察した後、[[sim:Train Epoch Plot]] タブをクリックしてトレーニングの進行状況のプロットを表示し、[[sim:Run]] を実行します。

グラフには、トレーニングの 2 つの統計、[[sim:Train Epoch Plot/PctErr]] と [[sim:Train Epoch Plot/Correl]] が表示されます。 任意の入力に対して 2 つの正しい出力が考えられるため、単純に標準の二乗和誤差 (SSE) 測定を使用することはできません。ネットワークがどちらかを有効に生成できる場合、どちらのターゲットを使用しますか? 代わりに、closest pattern 統計を使用して、ネットワークが生成した出力パターンに最も近い出力パターンを見つけます。 PctErr 統計は、最も近いパターンが同じ入力パターン (つまり、現在の入力の A バージョンまたは B バージョン) に関連付けられているかどうかに基づいています。 Correl 統計は、ネットワークのアクティビティと最も近いパターン (1 は完全一致) との相関関係を示します。

PctErr が急速に低下して 0 付近で跳ね返る一方、Correl が 0.9 以上になることがわかります。これは、モデルが各入力に対して 2 つの正しい出力のいずれかを生成するように学習していることを示しています。

余談になりますが、この 1 対多のマッピング タスクを学習できるかどうかは、ネットワーク内の kWTA 阻害の存在に大きく依存することに注意してください。標準的な逆伝播ネットワークは、どちらかの出力を生成することを学習するのではなく、両方の出力パターンの「ブレンド」を生成することのみを学習します (モベラン&マクレランド、1993 を参照)。抑制制約の下では両方の出力を同時にアクティブにすることはできないため、抑制はネットワークに一方の出力の選択を強制することで役立ちます。

また、双方向接続により、一方のアトラクターまたは他方のアトラクターに落ち着くことで、ネットワークが入力に対してより非線形な応答を示すことができるアトラクター ダイナミクスが生成されます (Params でトップダウン フィードバック接続の強度 .BackPath を下げると、Correl 値が大幅に減少していることがわかり、どちらの出力を明確に表しておらず、代わりにブレンドしていることがわかります)。 最後に、ここではヘビアン学習も重要であると思われます。ネットワークは、純粋にエラー駆動の方法よりもヘビアン学習を使用した方がタスクをよりよく学習するからです。ヘビアン学習は、これら 2 つのケースに存在する異なる相関関係により、2 つの出力ケースのより特徴的な表現を生成するのに役立ちます。 オライリー&ヘフナー (2000) は、このプライミング タスクにおけるこれらのさまざまなメカニズムの寄与をより体系的に調査します。

重量ベースのプライミング

重要 この時点以降は、重みを初期化する Train モードで [[sim:Init]] を押さないように注意してください。その場合は、[[sim:Open Trained Wts]] を押すだけで、事前トレーニングされた重みのセットを開くことができます。 また、ネットワークは一度トレーニングされるとそれ以上トレーニング エポックを実行しないため、最初に [[sim:Init]] を実行し、続いて [[sim:Open Trained Wts]] を実行する必要があります (これは 1 回だけです)。

適切な意味論的な背景知識を使用してネットワークをトレーニングしたので、プライミング タスクでのパフォーマンスを評価する準備が整いました。

まず、トレーニング終了時のネットワークが A または B 出力で応答する範囲のベースライン測定を確立する必要があります。

  • [[sim:Test Trial Plot]] を選択してテスト結果を表示します。ネットワークは [[sim:OnlyA]] パターンでテストされ、12 の入力パターンに対して A または B で応答した回数が判断されます。次に、[[sim:Step]] を Epoch に設定し、[[sim:Step]] をクリックして、A 項目と B 項目の両方をターゲットとして 1 つのエポックをトレーニングします (つまり、トレーニング中に使用された [[sim:Alt AB]] 環境)。各エポック後にテストが自動的に実行されるため、プロットが更新されることがわかります。

このプロットは、各入力 (0 ~ 12) について、マイナス位相 (つまり ActM) で A 出力 ([[sim:Test Trial Plot/IsA]]) で応答したかどうかを示し、視覚的に具体的にするために最も近い出力の名前 (Closest) も示します。 トライアルの約半分で a 出力で応答することがわかります (トレーニングに偏りはありません。ただし、ランダムにかなり変化する可能性があります)。

次に、B 出力アイテムのみを提示するようにトレーニングを変更し、すべての皮質シミュレーションで使用されているのと同じ遅い学習速度を使用して、各出力アイテムに対する単一のトレーニング試行によって B 出力を準備できるかどうかを確認します (たとえば、視覚入力からオブジェクトを認識することを学習した objrec モデルなど)。

  • ツールバーの [[sim:Set Env]] ボタンをクリックし、TrainB を選択します。これにより、B 項目のみでトレーニングするように構成されます。次に、[[sim:Step]]: Epoch を再度実行します。

プライミングの程度は、IsA 応答の 減少 によって示されます。ネットワークは、比較的小さい学習率での単一の学習経験に基づいて、より頻繁に b に応答するはずです。別の [[sim:Step]]: Epoch を実行すると、ほぼすべての応答が b になるはずです。

これが単なるまぐれではないことを確認するために、逆の方法を試して、a 出力への 1 回の曝露で、現在の b 応答のどれだけが a に反転できるかを見てみましょう。

  • [[sim:Set Env]] をクリックし、今回は TrainA を選択します。 次に、[[sim:Step]]: Epoch となります。

b 応答の一部が、やはり 1 回のエクスポージャに基づいて a に戻っていることがわかります。

この実験をさらに数回繰り返し、ab に戻し、さらに a に戻すことができます。

  • [[[sim:Test Epoch Plot]]] タブをクリックすると、すべてのテスト結果のプロットが要約形式で表示されます。

質問 7.7: TrainAltAB、TrainB、および TrainA に対応する 3 つのデータ ポイントごとに [[sim:Test Epoch Plot/IsA]] の結果を報告します (数値を取得するにはポイントの上にマウスを置くか、数値の表を表示するには [[sim:Table]] ボタンをクリックします)。

必要に応じて、[[sim:Lrate]] パラメータを 0.01 以下に下げることを検討できます。 (トライアルごとにパラメーターを適用しているため、パラメーターを有効にするために [[sim:Init]] を実行する必要はありません。) 反転する項目の数は減少していますが、比較的低い [[sim:Lrate]] であっても反転が発生する可能性があることがわかります。 # アクティベーションベースのプライミング 次に、ある試行から次の試行までの残留アクティベーションがどの程度処理に偏りをもたらすかを確認します。トレーニング済みのウェイトからやり直します。 * `Train` モードのまま [[sim:Init]] をクリックし、[[sim:Open Trained Wts]] を実行します。 次に、[[sim:Alt AB]] パターンをテストに使用します。これは、順番に提示されると各入力の `a` バージョンと `b` バージョンが交互に表示されるため、入力パターンの最初の試行での `a` 入力が同じ入力パターンの 2 番目の試行にどのような影響を与えるかを確認できます。最初の `a` 項目からの残留アクティベーションが後続の `b` ケースの処理にどの程度偏り得るかをテストします。 _minus_ フェーズでネットワークの応答を記録していることに注意してください。その後、特定の `Output` は (テスト中であっても) プラス フェーズにクランプされます。したがって、入力パターン (たとえば、0) の最初の試行の `a` `Output` アクティブ化パターンが、ネットワークが再び `a` 応答を生成する傾向に及ぼす影響を観察できます (たとえば、2 回目の入力 0 試行の場合)。アクティベーションのプライミングがある場合、この 2 回目のトライアルは最初のトライアルよりも `a` になる可能性が高くなります。 * [[sim:Set Env]] をクリックして `Test alt AB` を選択すると、_testing_ 中にこの交互の [[sim:Alt AB]] パターンの完全なセットが使用され、その後、`Train` モードの代わりに `Test` に切り替えて、[[sim:Init]] を実行します (現在は重みが初期化されません) `Test` モード)、[[sim:Test Trial Plot]] を確認しながら、[[sim:Run]] で応答のベースライン レベルを確認します。 [[sim:Decay]] パラメータがデフォルトの 1 に設定されているため、各入力間のネットワークからすべてのアクティベーションをまだクリアしているため、これはベースラインです。ネットワークが同じ入力パターンの両方のインスタンスに_一貫して_応答していることがわかります。たとえば、最初の `0` 入力に対して `a` と応答すると、その直後の 2 番目の入力に対しても `a` と応答します。同様に、ネットワークが入力パターンの最初の試行に対して `b` を応答する場合、ネットワークは入力パターンの 2 回目の試行に対しても `b` を応答します。最初の試行の後、`a` への偏りはなく、ここでの活性化プライミングの証拠もありません。 * [[sim:Decay]] を 1 ではなく 0 に設定し、別の [[sim:Init]] および [[sim:Run]] を実行します。これで、非常に異なるパターンが観察されるはずです。入力パターンの 2 回目の試行に対する応答は、同じ入力パターンの最初の試行よりも `a` になる可能性が高くなります。これは、テスト プロットでは「鋸歯状」のようなギザギザのパターンのように見えます。 > **質問 7.8:** 各入力パターンの 1 回目の試行と 2 回目の試行 (1 回目と 2 回目の 0、1 回目と 2 回目の 1 など) を比較し、ネットワークが最初の試行に対して `b` を応答し、2 回目の試行に対して `a` を応答した回数を報告してください。このアクティベーションベースのプライミングのインスタンス数は、減衰を 1 に設定したベースラインで観察された 0 インスタンスとどう比較されるのでしょうか? [[sim:Decay]] パラメーターを調整し、`Test` を再度実行することで、この活性化ベースのプライミングを示すために必要な残留アクティビティの範囲を調べることができます。 (テスト中は学習が行われないため、自由に探索し、戻って Decay = 1 でほとんどの場合 `b` が生成されることを確認できます)。 減衰を増加させるテスト (この効率的な検索シーケンス: 0、.5、.8、.9、.95、.98、.99 を使用) では、.98 と .99 の間の重要な遷移が見つかりました。つまり、減衰 = 0.98 (= 0.02 残留活性) の微量の残留活性化が、何らかの活性化ベースのプライミングを駆動することができました。これは、ネットワークが 2 つのアトラクター状態の間で微妙にバランスが取れており、わずかな偏りでもネットワークがどちらか一方に偏る可能性があることを示唆しています。このような活性化に基づくプライミング効果に対する人間の脳の同様の感受性は、人間の脳も同様のアトラクターのバランスをとる作用を示す可能性があることを示唆しています。 # 参考文献 * モベラン J. R. & マクレランド J. L. (1993)。対称拡散ネットワークを使用した連続確率分布の学習。認知科学、17、463–496。 * オライリー、R.C.、ヘフナー、J.H. (2000)。競争、プライミング、そして過去形のU字型発達曲線。 </section>