compcogneuro 翻訳ページ

compcogneuro/sims: 探検

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

種別

翻訳資料

更新日

2026-05-20

対象

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

目安

原文量に依存

確認メモ

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

出典とライセンス

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

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

シミュレーションに戻る

# 導入

このシミュレーションは、XCAL エラー駆動学習が隠れ層をどのようにトレーニングして、単純な 2 層ネットワークでは不可能な問題を解決できるかを示しています (パターン アソシエーター (pat_assoc) の探索で見たように、この探索を実行する前に最初に完了する必要があります)。

探検

このプロジェクトは、パターン アソシエーターのプロジェクトと同じですが、1 つの大きな例外があります。それは、4 つのユニットを持つ Hidden レイヤーを導入したことです。 入力はマイナス位相とプラス位相の両方でクランプされているため、いずれにしてもフィードバック接続の影響を受けないため、入力からこの隠れ層へのフィードフォワード接続のみが存在しますが、XCal アルゴリズムがエラー駆動学習を実行できるようにするために必要なため、Hidden 層と Output 層の間には双方向接続があることに注意してください。デフォルトでは、学習ルール値は ErrorDriven に設定され、PatsImpossible です。

  • [[sim:Init]] をクリックし、[[sim:Step]] を Run および [[sim:Step]] に設定します。

パターン アソシエーター プロジェクトと同様に、Train Epoch Plot はトレーニング エポックにわたる SSE エラー測定値を表示します。 Test Trial テーブル ビューは、トレーニングの 5 エポックごとに更新され、非表示ユニットの状態も表示されます。

また、以前と同様に、ネットワークのトレーニングは、トレーニング セット全体が 5 エポック連続で正しく取得された後、自動的に停止します (これは [[sims:Config]] 設定、NZero = 5 で設定されます)。この 5 回の正しい繰り返しの基準は、学習曲線のギザギザの形状で明らかなように、学習中のネットワークの多少ノイズの多い動作によって発生する可能性のある時折の偽の解を除外することに注意してください。このノイズの多い動作の理由は、重みの比較的小さな変化が、入力パターンに対してさまざまな異なる応答を生成する双方向のアクティベーション ダイナミクスにより、ネットワーク全体の動作に大きな変化をもたらす可能性があるためです。

ネットワークのこの感度は、すべてのアトラクター ネットワーク (つまり、双方向接続を持つネットワーク) の特性ですが、フィードフォワード ネットワークの典型的なものではありません。したがって、これと同じタスクを学習するフィードフォワード逆伝播ネットワークは、滑らかで単調減少する学習曲線を持ちます (逆伝播のサブトピックを参照)。アトラクター ネットワークは逆伝播の滑らかさを共有していないため、アトラクター ネットワークでの学習の性質を批判する人もいます。しかし、双方向接続性とアトラクターダイナミクスの利点は、学習ルールの生物学的妥当性とともに、学習曲線の美しさをはるかに上回ることがわかりました。さらに、大規模なネットワークはよりスムーズな学習を示します。これは、ネットワークの「質量」が大きいため、小さな重みの変化に対する感度が低いためです。

  • [[sim:Init]] を数回押してから、[[sim:Step]] Run を数回押して、ネットワークの一般的な学習速度を把握します。 「[[sim:Train Run Plot]]」タブをクリックすると、[[sim:Train Run Plot/FirstZero]] エポック SSE (つまり、トレーニング セット全体が正しくなった最初のエポック) に到達するまでにかかった時間と、最終的に学習したときの [[sim:Train Run Plot/LastZero]] までのエポック数 (つまり、トレーニング セット全体が 5 回連続で正しくなったエポック) の概要を確認できます。そしてトレーニングは停止します)。 学習に失敗する初期重みのセットが時折存在することに注意してください (最初のゼロ エポックでは -1 が表示されます)。それは、それ以上の学習を妨げるアトラクターに引っかかっているだけです。

質問 4.7a: ネットワークがこの不可能な問題を学習するのにどれくらいのエポックが必要かについて、一般的な特徴を説明してください (例、最も遅い、最速、大まかな平均など)。

※学習後に[[sim:Test Trial]]テーブルビューを見てください。 > **質問 4.7b:** 隠れ層のないネットワークでは不可能であった問題が、隠れユニットによってどのように解決可能になったか理解できますか?ネットワークが学習し、トレーニング セット全体が正しくなった後、ネットワーク内でいくつかのトライアルを実行します。 4 つのイベントに対してどの隠れユニットがアクティブであるかをレポートし、これらのユニットから出力ユニットへの重みもレポートします。 (これはネットワークの実行によって異なることに注意してください。一例を挙げてください。) 一般に、隠れ層は 2 つの重複しない入力パターンを同じ表現に分類するため、適切な出力ユニットを駆動することが容易になります。これは、隠れ層によりネットワークが「より賢い」方法で入力パターンを変換または分類できるようになり、あらゆる種類のより抽象的なパターンを認識できるようになるという、より一般的な原理の具体的なケースです。これをテストする良い方法は、問題を決して学習しないネットワーク内のさまざまな入力パターンに対する隠れユニットのアクティビティのパターンを分析することです。問題を毎回確実に学習できるように、ネットワーク アーキテクチャを変更する方法を考えてください。これを自分でテストしてみることができます (これを行うには、教授またはティーチングアシスタントに助けを求めることができます)。 </section>