compcogneuro 翻訳ページ

compcogneuro/sims: 固有のパターン統計

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

種別

翻訳資料

更新日

2026-05-20

対象

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

目安

原文量に依存

確認メモ

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

出典とライセンス

原典: https://github.com/compcogneuro/sims/blob/main/ch4/self_org/README.md

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

シミュレーションに戻る

# 導入

このモデルは、次の要素間の相互作用から自己組織化学習がどのように発生するかを示しています (CCN教科書学習 の章で説明されています)。

  • 抑制性競合 – 最も強く駆動されるニューロン、つまりシナプスの重みが現在の入力パターンに最もよく適合する (「検出」) ニューロンのみがアクティブになります。他のニューロンは入力に対して何らかの正の重みを持っている可能性がありますが、それらが「勝利」ユニットよりも小さい場合、強い抑制により抑制されます。

  • 金持ちはさらに金持ちになる 正のフィードバック ループ – ヘビアン学習規則により、実際にアクティブになるニューロンのみが学習できることが保証されます (受信者のアクティビティ y = 0 の場合、xy = 0 もあり、XCAL dWt 関数は 0 で 0 になります)。したがって、すでに現在の入力を十分に検出して活動状態になっているニューロンが、これらの入力を検出する能力をさらに強化することになります。これは、ヘブの学習関数が「エングラム」を強化する必要がある理由についてヘブが得た重要な洞察です。

  • ホメオスタシス。正のフィードバック ループのバランスをとり、弱いユニットが他の入力について学習できるようにします。 チェックしないままにしておくと、金持ち→金持ちのダイナミクスは、最終的には少数のユニットがすべてを支配することになります(ユニットがアクティブになり、重みが増加し、他のある程度重複するパターンに対してアクティブになることができるようになり、その結果、それらのパターンに対してさらにアクティブになるなど、すべての入力が 1 つの役に立たない広すぎるカテゴリ (「すべて」) に分類されるまで続きます)。私たちの学習ルール (「XCAL」と「BCM」に関するレビューテキスト) の恒常性メカニズムは、これに対抗するのに役立ちます。つまり、平均活動が高い (つまり、複数の入力パターンにわたる) ニューロンの変動しきい値が引き上げられます。これは、体重がさらに増加することがより困難になり、体重が減少してバランスが回復する可能性が高くなるということを意味します。逆に、平均アクティビティが非常に低いニューロンは、より低い浮動しきい値を取得し、他の入力パターンの表現に参加し、より効果的に競合するようにする正味重量の増加を経験しやすくします。

最終的な結果は、統計的規則性を包含する体系的なカテゴリを備えた、さまざまな入力パターンの空間を比較的均等にカバーする一連の神経検出器の開発です。たとえば、猫は牛乳が好きで、犬は骨が好きです。これは、猫と牛乳、犬と骨の信頼できる共起を観察するだけでわかります。この種の信頼できる共起は、私たちが「統計的規則性」の意味するものであり、ホメオスタシス機構により、両方の種類の関連性を個別に学習することができます(そうでないと、乳と骨の両方に弱いつながりを持って猫と犬を結び付けるだけの表現が得られる可能性があります)。 Hebbian スタイルの学習メカニズムが共起パターンを捕捉する理由の非常に簡単な図については、CCN教科書Hebbian Learning 付録を参照してください。これは実際には、「一緒に点火するものは一緒に配線する」という基本的な格言の変形にすぎません。

この探索では、ネットワークは純粋に水平線と垂直線で構成される単純な世界について学習します。重要なのは、ネットワークが個々の回線を決して認識しないことです。それらは常に他の回線と組み合わせて表示されます (ただし、どの回線が経験によって変化するかは異なります)。この場合の自己組織化学習の明確な目的は、根底にある統計的規則性を抽出して、世界が個別の線で構成されているにもかかわらず、同時にオンとオフを繰り返す信頼できるピクセルの集合として存在していることをネットワークが検出できるようにすることです。個々のピクセルの代わりに、または目に見える線の特定の組み合わせを「記憶」する代わりに、この世界を線の観点からエンコードする方がはるかに効率的です (これが一般化に役立つ理由は、後のシミュレーションでわかります)。

# 学ぶ

ネットワークを見てみましょう。 5x5 入力は 20 ユニットの隠れ層に投影され、これらはすべてランダムな初期重みで入力に完全に接続されており、それらの間で標準的な FFFB 阻害性競合ダイナミクスが機能します。

  • 通常どおり、[[sim:Network/Wts]] / [[sim:Wts/r.Wt]] を選択し、いくつかの非表示の単位をクリックして、これらの単位の初期化された重みを表示します。初期重量が体系性なく、異なる値にランダム化されていることがわかります。

ネットワークが経験する環境を見てみましょう。

  • 左側のコントロール パネルの [[sim:Lines2]] ボタンをクリックします。

これにより、基本的な水平線と垂直線で構成されるトレーニング項目を示す画面が表示されます (線自体のみを表示するには、 [[sim:Lines1]] をクリックします)。 45 個のパターンすべてをスクロールできます。これらの 45 の入力パターンは、垂直線と水平線の一意のペアごとの組み合わせをすべて表します。したがって、ライン間に実際の相関関係はありません (すべてのラインが他のすべてのラインとともに同じ頻度で出現するため)。唯一信頼できる相関関係は、特定のラインを構成するピクセル間の相関関係です。これを別の言い方をすると、各行は、ランダムに関連するさまざまなコンテキスト (つまり、他の行) に出現すると考えることができます。

これらすべての画像の個々のピクセル間の相関を計算すると、すべてが他のすべてと同等に (弱く) 相関することは明らかです。したがって、意味のある相関関係を抽出するには、学習は特定のタイプのラインに条件を付ける必要があります。この条件性は、学習ルールと FFFB 阻害性競合の相互作用を通じて単純に自己組織化されることがわかります。また、すべての画像に 2 つのラインが存在するため、各ユニットが特定のラインを表す場合、ネットワークは入力ごとに少なくとも 2 つのアクティブな隠れユニットを必要とすることにも注意してください。

  • [[sim:Network]] の [[sim:Network/Act]] の表示に戻ります。次に、ツールバーで [[sim:Init]] および [[sim:Step]] Trial を実行して、単一のパターンをネットワークに表示します。

ネットワークの入力に 2 行を含むイベント パターンの 1 つと、およそ 2 つ以上のアクティブな隠れユニットのパターンが表示されるはずです (FFFB 抑制は、アクティブなユニットの数を決定する際の近似値です)。

  • もう少し [[sim:Step]] Trial できます。シングルステップに飽きたら、Trial から Run に切り替えて、[[sim:Step]] Run を実行してください。 より速く実行するには、[[sim:Train Epoch Plot]] タブの表示に切り替える必要があります。

30 エポック (環境内の 45 の異なるイベントをすべて通過) の学習後、ネットワークは停止します。

  • ここで [[sim:Network/Wts]] / [[sim:Wts/r.Wt]] を再度選択し、いくつかの非表示のユニットをクリックして、これらのユニットのトレーニングされた重みを表示します。以前はランダムだった WT の一部が、個別の行に特化することを学習したことがわかります。

  • すべての重みの拡大図を取得するには、[[[sim:Weights]]] タブをクリックすると、入力層から非表示層への投影で学習されたすべてのシナプス重みのグリッド ビューが表示されます。

より大規模な 5x4 グリッドは、ネットワークの Hidden 層と同じレイアウトで地形的に配置されます。これら 20 個の各グリッド要素内には、入力単位を表す小さな 5x5 グリッドがあり、各単位の重みが表示されます。 [[sim:Wts/r.Wt]] 変数を選択した状態でネットワーク ウィンドウ内の非表示のユニットをクリックすると、この対応を確認できるはずです。 ネットワークがこれらの入力パターンから個々の線要素を抽出したことがわかります。

  • [Weights] タブに戻り、[[sim:Step]] を Epoch および [[sim:Step]] に設定して、これらの重みパターンがトレーニングの過程でエポックごとにどのように進化したかを確認します。

トレーニングが進むにつれて、ウェイトは環境に存在するラインをより明確に反映するようになりました。したがって、個々のユニットは、個々のライン内、または場合によっては 2 つのライン内に存在する相関関係の 選択的 表現を開発しました。 BCM ベースの XCAL 学習アルゴリズムは、非アクティブな入力から重みを変更しないため、重みに少しの「クラフト」(学習プロセスの歴史的痕跡) が蓄積される傾向がありますが、各ユニットの主要な入力に対する重みは非常に強力になり、目立ちます。この非アクティブな入力に対する学習の欠如 (より標準的な形式のヘビアン学習とは大きく異なります) は生物学的に裏付けられているだけでなく、事前の学習からの干渉が減少することでネットワーク全体の記憶容量も大幅に増加します。

これらの線表現は、次のような学習と抑制的競争の間の相互作用の結果として発達しました。初期の段階では、抑制的な競争に勝ったユニットは、たまたま入力パターンに対してより大きなランダム重みを持っていたユニットでした。これらのユニットがアクティブだったため、学習により、その入力パターン (最初にたまたま気に入ったいくつかのランダムなユニットだけでなく、現在はすべてのアクティブな入力ユニット) に対してより選択的になるようにこれらの重みが調整され、全体としてそのパターン (および 2 つのラインの 1 つを共有する他のパターン) に反応する可能性が高くなります。入力内の 2 つの線のうち 1 つの重みが強いほど、ユニットはこの線を含む入力に応答する可能性が高く、重みは増加し続けます。ユニットがアクティブになりすぎると、BCM スタイルの学習の変動しきい値を設定する長期平均アクティビティ レベルにより、新しいパターンについて学習し続けることが困難になり、ユニットの重みが減少して、他のユニットがアクティブになることが可能になります。

抑制性競合のダイナミクスは自己組織化効果にとって重要であり、異なるユニットが異なるラインに特化する原因となります。ダーウィンの進化論と同じように、競争によって専門化へのプレッシャーが高まります。

この自己組織化学習の最終結果は、「組み合わせ」分散表現であり、各入力パターンは、その中に存在する 2 つのライン特徴の組み合わせとして表現されます。これはそのような入力を表現する「明白な」方法ですが、それでもネットワークは、やや複雑な自己組織化学習手順を通じてこの表現を発見する必要があることを理解してください。

グリッド ビューに表示される重みで注目すべきもう 1 つの点は、一部のユニットが明らかに何も選択されていないことです。これらの「敗者」ユニット (「デッド」ユニットとも呼ばれます) は、いかなる入力機能によっても確実にアクティブ化されることはなく、したがって、あまり学習されませんでした。自己組織化には、学習中に安定した相関特徴へのユニットの割り当てを整理するためにある程度の「余裕」が必要になるため、通常、このようなユニットを配置することが非常に重要です。より多くの隠れユニットがあると、自己組織化プロセスの種を蒔くのに十分な範囲の初期ランダム選択性が得られる可能性も高くなります。その結果、最低限必要なユニットよりも多くのユニットが必要になり、多くの場合、残り物 (さらに前述の冗長ユニット) が生じることになります。

生物学的な観点から、成人では皮質が新しい皮質ニューロンを多く生成しないことがわかっているため、一般に、与えられた学習状況の要求に比べて神経容量が過剰である可能性があると結論付けています。したがって、これらの残りの冗長ユニットは、後で新しい機能がネットワーク (たとえば、対角線) に提供された場合にアクティブ化される可能性がある「予備」を構成するため、これらのユニットを用意しておくと便利です。私たちは、適切に動作するために隠れたユニットの量が正確に調整されているかどうかについては、はるかに疑わしいです (これについては後で詳しく説明します)。

固有のパターン統計

重みを確認することは有益ですが、ネットワークの内部モデルが環境の基礎となる構造とどの程度一致しているかをより簡潔に測定することもできます。ネットワークが学習するにつれて、そのような測定値の 1 つが Train Epoch Plot にプロットされます。

これは、固有パターン統計 ([[sim:Train Epoch Plot/UniqPats]]) の結果を示しています。これは、10 種類の水平線と垂直線 (個別に表示) をすべて使用してネットワークを調査した結果、生成された固有の隠れユニット アクティビティ パターンの数を記録します。したがって、学習の各エポック後に、10 回線すべてでネットワークをテストし、結果として得られる隠れユニットのアクティビティ パターンを記録し (通常 1 つのユニットがアクティブになるように FFFB 抑制を 3 まで上げて、各入力に対する 最もアクティブな 応答を見つけることができます)、次にそのような固有のパターンの数をカウントアップします (しきい値処理の対象となるため、アクティビティのバイナリ パターンのみを考慮します)。

この措置の背後にあるロジックは、各行が (少なくとも) 1 つの別個の隠れユニットによってエンコードされている場合、これは固有のパターンとして表示されるということです。ただし、2 つ以上の行を一緒にエンコードするユニットがある場合 (この環境のモデルとしては効率的ではありません)、これらの行の一意な表現が得られず、結果の測定値は低くなります。したがって、この統計が 10 未満である限り、ネットワークによって生成された内部モデルは、各ラインの他のラインからの根本的な独立性を完全には捉えていません。ただし、一意のパターン統計では、複数の 隠れユニットが同じ行をエンコードするかどうか (つまり、異なる隠しユニット間で冗長性がある場合) は考慮されないことに注意してください。同じ 隠しユニットが 2 つの異なる 行をエンコードしないことだけが考慮されます。

また、ほとんどの実行では、トレーニング中に使用される低レベルの抑制を使用すると、常に固有のアクティビティ パターンが存在します。脳内では、アクティブ ユニットのさまざまなパターンを介して固有のパターンをエンコードするには、分散表現の方がはるかに効率的です。そのため、この UniqPats 統計は、学習パフォーマンスの厳密かつ単純な測定値となります。

特定の実行におけるモデルのパフォーマンスは、ランダムな初期重みに応じて大きく変動する可能性があります。ほとんどの場合、UniqPats 統計は 5 を超え、多くの場合、完全な 10 になり、通常はトレーニングを重ねるごとに上昇していきます。この変動性があるため、ネットワークが全体的にどの程度学習しているかをよりよく把握するには、トレーニングを複数回実行する必要があります。

  • [[sim:Train]] [[sim:Run]] は複数の実行を実行します。各実行は異なるランダムな初期重みで始まります。このプロセスが完了するまでに数分かかる場合があります。 [[sim:Train Run Plot]] の表示に切り替えて、8 回の実行ごとの [[sim:Train Run Plot/UniqPats]] 統計のレコードを表示します。

質問 4.1: デフォルトのパラメーターを使用した場合、8 回の実行で、一意に表現されたラインの UniqPats 数が 10 未満の結果が得られたのは何回ありましたか? (プロットでは 8 つの実行に 0 から 7 の番号が付けられていることに注意してください。)

# パラメータの操作 次に、コントロール パネルのいくつかのパラメーターの効果を調べてみましょう。 BCM スタイルのヘビアン学習の最も重要なパラメータの 1 つは、神経活動の増加に伴って [[sim:Learn/AvgL]] 長期移動平均閾値がどの程度上昇するかです (これは教科書の図ではシータで示されています)。 この値が 0 の場合、長期平均がどれほど高くても、学習に対する恒常性の効果はありません。この値が高くなるほど、ヘビアンの金持ち→金持ちの正のフィードバック ループに対してバランスをとるホメオスタシスの力が強くなり、その結果、多くの異なるものに反応するより広範囲に調整されたニューロンに対して、特徴的なパターンに合わせてより細かく調整されたニューロンが生成される可能性があります。 * [[sim:Learn/AvgL]] の高さを制御するパラメータは [[sim:Avg L Gain]] で、デフォルト値は 2.5 です。 この係数がどれほど重要であるかを確認するには、この係数を 1 に減らします。 [[sim:Init]] を押してパラメータの変更を有効にしてトレイン プロセスを再起動し、`Train` [[sim:Run]] を押して 8 つの実行すべてを実行します。 `UniqPats` と学習されたシナプスの重みへの影響に注目してください。 また、`Network` の [[sim:Learn]] / [[sim:Learn/AvgL]] 値を観察して、これが時間の経過とともにどのように更新され、これらのパラメーターの変更による影響を受けるかを確認することも面白くて有益です。 [[sim:Avg L Gain]] が低い場合、少数のユニットのみが試行全体でアクティビティを支配する傾向があることがわかりますが、恒常性維持力がうまく機能している場合、アクティビティはより均等に分散されます。 このモデルに関して少し非現実的な点の 1 つは、オフになっているユニットではアクティビティがまったくないことです。実際の脳では、不活性なニューロンの活動レベルは常にある程度低くなります。これは、アクティブでない入力に対して重みがどの程度減少するかに影響を与える可能性があり、全体的な重みのパターンがよりクリーンになる可能性があります。 * 入力にノイズ アクティビティを追加するには、InputNoise を .2 および [[sim:Init]] に設定します。これにより、ランダムに生成された値が入力ユニット アクティビティに追加されます。 ([[sim:Step]] `Trial` を使用すると、入力のノイズを確認できます。) [[sim:Avg L Gain]] を 1 に保つと、ノイズの影響が確認しやすくなります。 [[sim:Train]] [[sim:Run]]。 > **質問 4.2:** a) さて、サブ 10 `UniqPats` の統計はいくつ取得できましたか?これは、`Avg L Gain` が 1 の以前のノイズなしの場合よりも改善されていますか? b) ノイズなしのシミュレーションとノイズのあるシミュレーションの重みにどのような違いが観察されたかを説明してください。なぜこの違いがわかるのでしょうか? 結論として、この演習では、自己組織化学習の根底にあるダイナミクスと、変動するしきい値レベルとホメオスタシスのダイナミクスがこの学習形式でどのように重要な役割を果たすかについての重要性を理解できるはずです。 </section>