compcogneuro 翻訳ページ

compcogneuro/sims: パート I: 入力からカテゴリへのフィードフォワード (ボトムアップ) 情報の流れ

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

種別

翻訳資料

更新日

2026-05-20

対象

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

目安

原文量に依存

確認メモ

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

出典とライセンス

原典: https://github.com/compcogneuro/sims/blob/main/ch3/faces/README.md

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

シミュレーションに戻る

# 導入

このプロジェクトでは、感覚入力 (この場合は単純な漫画の顔) を複数の異なる方法で分類し、関連する情報を抽出し、無関係な情報を統合する方法を検討します。これにより、顔画像からカテゴリへのボトムアップ処理と、カテゴリ値から顔画像 (精神画像) へのトップダウン処理の両方を検討できます。これには、部分入力 (部分的に遮られた顔画像) をクリーンアップするためにボトムアップとトップダウンの両方を動的に反復する機能が含まれます。

このシミュレーションは、顔のコンテキストにおける単純なカテゴリの特性を具体的に示しているため、性別の古典的なステレオタイプ表現が採用されており、したがって現実世界の真の多様性を捉えていません。これらの制限にもかかわらず、よく知られたカテゴリの視覚的な相関関係を簡単に確認できる機能は、当面の主要なポイントを直感的に示すのに役立ちます。

テキストに沿って読んでいる場合は、まず 分類 に関するセクションのパート I を実行し、双方向の興奮ダイナミクスとアトラクター について読んでからパート II に戻ってください。

パート I: 入力からカテゴリへのフィードフォワード (ボトムアップ) 情報の流れ

ネットワークと顔の入力

まず、右側の 3D パネルのタブに表示されているネットワークを調べてみましょう。 顔画像用の 16x16 レイヤーと 3 つの異なる分類出力レイヤーがあります。

  • Emotion は、「幸せ」と「悲しい」の単位を持ち、顔に表される感情をこれら 2 つの異なるカテゴリに分類します。

  • Gender には「女性」と「男性」の単位があり、これら 2 つの性別カテゴリに従って顔を分類します。

  • 入力内のさまざまな顔に名前が付けられた 6 つのラベル付きユニット (アルベルト、ベティ、リサ、マーク、ウェンディ、ゼーン) を持つ Identity – ネットワークは、感情表現の違いにもかかわらず、個人を分類できます。新しい顔を追加してさらに探索したい場合は、4 つの追加ユニットが利用可能です。

  • [[sim:Wts]]/r.Wt 変数を選択して [Network] タブに表示し、ネットワーク内のさまざまな出力カテゴリのニューロンのそれぞれをクリックします。 (上から感情ユニットにアクセスするには、ネットワークをクリックしてドラッグするか、ネットワーク ビューの下部にある下向き回転ボタンを数回クリックする必要がある場合があります。左下のリセット アイコンをクリックすると、元のネットワーク ビューに戻ります。) これにより、各ニューロンに入力される重み値が表示されます。

これらの重みは、これらの重みを見ることで表現が特に明らかになる方法で学習されたため、各ユニットの合理的なパターンがわかると思います。このネットワークがどのように機能するかをさらに理解するには、入力顔パターンと、ネットワークがトレーニングされた対応する分類値を確認します (この学習プロセスについては、教科書の 学習 の章で説明されています)。

  • 左側の コントロール パネル にある [[sim:Patterns]] Faces ボタンをクリックすると、ネットワークがトレーニングされた名前、顔、感情表現が表示されます。

ネットワークのテスト

ネットワークの基本を理解するための次のステップは、ネットワークが入力に応答することを確認することです。

  • [[sim:Act]]/Act 値を選択して、[[[sim:Network]]] タブでニューロン アクティビティを表示し、ステップ レベル (Step の右側) を Trial から Cycle に変更し、[[[sim:Step]]] ボタンをクリックしてネットワークの応答を確認します。最初の面 Alberto_happy まで、一度に 1 サイクルの更新を行います。 また、[ネットワーク] タブの右下、Time ラベルの後にある [VCR] ボタンを使用して、ネットワークがサイクルごとにどのように応答したかを確認することもできます。早戻しを使用して最初に戻り、時間を 1 ステップ進めてサイクルごとの展開を確認します。

ネットワークが顔入力を処理し、それに適切な出力カテゴリをアクティブ化していることがわかります (たとえば、最初のパターンでは、happymale、および Alberto がアクティブになります)。

  • ステップ レベルを Trial に戻し、顔入力パターンの残りの部分を [[sim:Step]] に継続して (Step ボタンを押したままにして自動繰り返しすることもできます)、各入力が正しく分類されていることを確認できます。

  • [[[sim:Test Trial Plot]]] タブをクリックし、プロットのツールバーにある [[[sim:Table]]] ボタンをクリックすると、入力と応答の完全な記録を表示できます。これにより、各試行が記録されたウィンドウが表示されます。 プロット自体はここではあまり役に立ちません。

クラスター プロットを使用して分類プロセスを理解する

クラスタープロット は、複数の異なる形式の類似性 (つまり、多次元類似性構造) が同時に有効である場合に、アイテムのセット間の類似性関係を視覚化する便利な方法を提供します。 これらに慣れていない場合は、そのリンクをクリックして、クラスター プロットの読み方の詳細を読んでください。 まず、入力顔のクラスター プロットを確認し、次に入力顔に対して実行されたさまざまな分類のクラスター プロットを確認して、ネットワークが類似性構造をどのように変換して関連情報を抽出し、無関係なものを分割するかを確認します。

  • ツールバーの [[sim:Cluster Plot]] ボタンを押して、記録されたデータからプロットを生成し、次に [[sim:ClustFaces]] タブをクリックすると、顔 Input レイヤー画像上で実行されたクラスター プロットが表示されます。

質問 3.1: クラスター プロットの仕組み (上記のリンクを参照) についての知識を踏まえて、3 つの特徴 (性別、感情、アイデンティティ) が類似性による画像のクラスター化にどのように関連しているかを説明してください。 具体的には、さまざまなカテゴリ (幸せと悲しみ、女性と男性、そして各個人のすべて) のさまざまな画像にわたって、重複するピクセルの数が最も多い場所を考えます。

ここで、この入力類似構造がさまざまな種類の分類によってどのように変換されるかを見てみましょう。 * [[[sim:ClustEmote]]] タブをクリックすると、各入力の `Emotion` 層パターンで実行されたクラスター プロットが表示されます。 > **質問 3.2:** 感情分類は、最初のクラスター プロットで確認されたものと比較して、全体的な顔入力の類似性をどのように変換しますか?つまり、どの項目が互いに最も類似しているのでしょうか? * [[[sim:ClustGend]]] タブをクリックすると、各入力の `Gender` 層パターンで実行されたクラスター プロットが表示されます。同様に、[[sim:ClustIdent]] プロットでも、各入力の `Identity` 層パターンで実行されたクラスター プロットが表示されます。 入力面を分類するさまざまな方法では、それぞれの相違点が強調され、その他の相違点は集約されていることがわかります。 たとえば、戻って「幸せ」と「悲しい」の感情ユニットの `r.Wt` 値を見ると、これらのユニットがさまざまな感情のそれぞれに関連付けられた口と目の特徴を最も重視している (つまり、最大の重みを持っている) 一方で、すべての顔に共通する入力からの他の重みが弱いことが明確にわかります。 これにより、感情レイヤーは、顔入力全体で表現されるよりもはるかに明確に感情信号を抽出できるようになります。感情の違いは顔入力に存在しますが、あまり支配的ではありません。 入力内の特定の特徴の検出を推進するシナプス重みのこの機能は、ネットワーク内の分類プロセスを推進するものであり、入力から動作に関連する情報を抽出するために重要であるため、適切な動作を推進するためにより高いレベルで使用できます。たとえば、ゼインが悲しそうな顔をしている場合は、おそらく宿題の手伝いを求めて彼に近づくのは良い時期ではないでしょう。 **ローカリスト表現と分散表現** の観点から見ると、カテゴリ ユニットは各層内でローカリストであり、アクティブなユニットが 1 つだけあり、特定のカテゴリ値 (例: 幸せ vs 悲しい) を一意に表します。ただし、3 つのカテゴリ レイヤーのセット全体で集計すると、実際には単純な種類の分散表現になり、各入力に対してアクティビティの分散パターンが存在し、そのパターンの類似構造が意味を持つことになります。より完全に分散された表現では、個々のユニットはそれほど明確に識別できなくなりますが、それはこの単純なシミュレーションの目的にとっては物事をより複雑にするだけです。 同じ入力を同時に (並行して) 効果的に分類する複数の異なる方法を持つことは、ニューラル処理の重要な特徴です。研究者は、脳が特定の入力を分類する特定のレベルを選択する必要があると想定していることがよくありますが、実際には、脳が多くの異なる次元に沿って同時に大規模に並行して分類を行っていることをすべての証拠が示唆しています。 # パート II: 双方向 (トップダウンおよびボトムアップ) 処理 このセクションでは、同じ顔分類ネットワークを使用して、ネットワーク内に存在する双方向接続を介した双方向のトップダウンおよびボトムアップの処理を調査します。まず、これらの双方向接続を見てみましょう。 * [[sim:Network]] タブで、[[sim:Wts]]/`s.Wt` (送信重み) 変数を選択し、さまざまなカテゴリの出力単位をクリックします。`r.Wt` と `s.Wt` の間を行き来してクリックすると、特定の単位の受信重みと送信重みを比較できます。一般に、それらは全体的な大きさが多少異なるものの、同様のパターンを持つはずです。 したがって、*ネットワーク* の章で説明したように、ネットワークはほぼ対称的な双方向接続を備えているため、情報は両方向に流れることができ、各レベルで関連するすべての制約を満たす (*複数の制約を満たす*) 入力の一貫した全体的な解釈を開発するように機能します。 ## トップダウン画像 双方向接続の効果を観察するための簡単な最初のステップは、一連の高レベルのカテゴリ値をアクティブにし、その情報をトップダウンで入力層に流し、そのようなカテゴリの組み合わせに対応する画像を生成することです。たとえば、ハッピー、女性、リサを有効にすると、ネットワークがリサが幸せなときの様子を「想像」できるようになることが期待できます。 * [[[sim:Network]]] タブで、[[sim:Act]]/`Act` 変数を選択します。次に、上部のツールバーの [[sim:Set Input]] ボタンをクリックし、`Top Down` をオンにして、[[sim:Init]] を実行します。ステップ レベル ([[sim:Step]] の右側) を `Cycle` に設定し、[[sim:Step]] を押して、アクティベーション ダイナミクスの展開を確認します。 [[sim:Time]] VCR ボタンを使用して、サイクルごとのセトリングを確認することもできます。 リスト内の最初の顔 (ハッピー、男性、アルベルト) の高レベルのカテゴリ値が最初にアクティブ化され、その後、このトップダウン情報に基づいて時間の経過とともに顔画像がファイルされたことがわかります。 ## インタラクティブなトップダウン、ボトムアップ、および部分的な面 次に、双方向接続のさらに難しいテストを試してみましょう。ここでは、部分的に遮られた顔入力画像 (顔全体の画像からランダムに 20 ピクセルがオフになっています) を用意し、ネットワークが最初に顔を正しく認識するかどうか (入力からカテゴリへのボトムアップ処理によって)、次にトップダウンのアクティベーションを使用して、各個人 (およびその感情) がどのように見えるかについて学習した知識に基づいて、入力画像の欠落要素を埋めるか **パターン完成**するかどうかをテストできます。 * [[sim:Set Input]] をもう一度クリックして `Top Down` をオフにし、次に [[sim:Set Patterns]] をクリックして `Partial` を選択すると、完全な面ではなく部分的な面が入力されます。 次に、再び入力を通じて [[sim:Step]] を実行します (ステップ レベルが `Cycle` に設定されていることを確認します)。 最初の部分的なアクティベーション パターンを観察し、続いてカテゴリ レベルのユニットのアクティベーションを観察する必要があります。その後、顔画像の欠落している要素が徐々に埋められます (この展開をサイクルごとに確認するには、必ず `Cycle` ステップ モードおよび/または時間 VCR ボタンを使用してください)。 > **質問 3.3:** 複数の異なるそのような部分面にわたって、*正しい* カテゴリ ユニットがアクティブになる順序は何ですか (間違ったユニットで一時的なアクティビティが存在する可能性があります)。 それぞれのケースについて、この順序が入力面で欠落しているフィーチャが埋められ始めるタイミングにどのように対応するかもリストします。 このネットワークの動作についてのもう 1 つの考え方は、**アトラクター ダイナミクス** の観点から見るものです。ここでは、特定の各面と関連するカテゴリ値が調整されたアトラクターを表し、サイクルにわたる活性化更新のプロセスにより、ネットワークは全体的なアトラクター盆地内にあるにもかかわらず、部分的な入力パターンから特定のアトラクターに落ち着きます。 より一般的には、関連情報の欠落部分を補完できることは、双方向接続の主な利点であり、情報にアクセスするための非常に柔軟な方法です。要素のサブセットは残りの要素の完了をトリガーできます。 これは、標準的なコンピューターが通常メモリにアクセスするために特定のメモリ アドレスを必要とするのとは対照的に、**連想メモリ**としても知られています。 Google やその他の検索エンジンの偉大な革新の 1 つは、人間の記憶にあるコンテンツのアドレス指定が可能な性質を再現し、ランダムな単語を入力するだけで完全な関連情報にアクセスできるようにすることでした。 技術レベルでは、入力の欠落部分を埋めるネットワークの機能には、入力パターンの**ソフト クランプ**が必要です。顔パターンは、興奮性ネット入力への追加の寄与として各入力に入力され、カテゴリ レベルからトップダウンで入力される他のシナプス入力と統合されます。 また、現在最新の AI アプリケーションを動かしているニューラル ネットワークのほとんどがこの双方向接続を「持たない」ため、それに対応する人間の知識や記憶の柔軟性に欠けていることを知ったら驚かれるかもしれません。 # 射影操作としての重み ![](fig_face_categ_dim_prjn.png) **図:** シナプスの重みがどのように作用して、特定の *次元* または基底に沿って入力パターンを *投影*するか。この場合は、感情と性別の次元に沿って入力を投影します。 左側のパネルでは、非常に高次元の顔入力 (16x16 イメージの場合は 256 次元) が 2 つのランダムな重みベクトルに沿って投影され、この高次元の入力空間を 2D プロットで視覚化できます。 右側のパネルでは、感情と性別の次元に沿って区別するために訓練された特定のシナプス重みが、入力空間をより体系的でよく組織された低次元空間に「変換」または「回転」させています。 これは基本的にニューロンが行うことです。関連する次元に沿って入力パターンを組織化し、変換します。これは、ニューロンがこれらの次元に沿って刺激を検出することを示す別の方法です。 上の図 (教科書の図 3.8) は、シナプスの重みがどのように機能して、高次元空間* の特定の ** 次元** に沿って入力パターンを投影するかを示しています。このプロセスは、`Cluster Plot` アクションで生成された `ProjectionRandom` および `ProjectionEmoteGend` プロットに示されています。 `ProjectionRandom` プロットは、ランダムな重みを使用して顔入力がランダムな次元に沿って投影されたときに何が起こるかを示しています。 具体的には、各軸は、入力顔と各軸に対して生成されたランダムな重み値の * ドット積 * をプロットします。 もう一度 `Cluster Plot` を押すと、別のランダムな投影が表示されます。 一般に、各人のポイントは互いに近くに位置する傾向があることがわかります。これは、さまざまな感情の顔が全体的に比較的似ているため、これは当然のことです。 さらに、同じ感情の一般的なグループ化も確認できます。 ただし、さまざまな次元に沿って体系的に整理されているわけではありません。 対照的に、`ProjectionEmoteGend` プロットを見ると、入力顔を性別次元に沿って投影する X 軸が男性と女性の顔を体系的に並べ替えていることがわかります。 同様に、Y 軸は悲しい感情と幸せな感情を体系的に分離します。 教科書に記載されているように、ニューラル ウェイトは、新しい *基底セット* に沿って入力空間を *回転*します。これにより、特定の関連性の高い次元を強調しながら、その他の関連性の低い次元を折りたたむ入力を *エンコード*する別の方法が提供されます。 </section>