0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

固定重み×3D格子×予測誤差readout:Monolith(生成しないAI)の実験メモ

Posted at

固定重み×3D格子×予測誤差readout:Monolith(生成しないAI)の実験メモ

※これは個人の実験メモです(論文でも製品でもありません)。追試・関連研究の指摘・改善案、大歓迎です。


TL;DR(3行)

  • 8×8×8(512ユニット)の3D格子に、26近傍の局所結合(固定重み)を張った「Monolith」を試作しました。
  • 内部状態ではなく、予測誤差(loss)の“場” を特徴量にして線形分類します。
  • Digitsで学習初期(〜100 epoch)に精度が急伸し、最終的に90%超を確認しました。

1. 背景:Backpropと“配線の現実”

深層学習(Backprop)は強力ですが、ハードウェア目線では「グローバルな誤差伝搬」「配線の複雑さ」「計算・電力コスト」が気になります。
一方、生体の脳は局所的な誤差(予測誤差)を手掛かりに動いているように見える——という直感があります。

そこで今回は、予測符号化(Predictive Coding)っぽい誤差の扱いと、リザーバー計算(Reservoir Computing)の固定重みを合体させて、
「局所配線だけで回る」「誤差の場で認識する」モデルを作ってみました。


2. Monolithの概要

2.1 アーキテクチャ

  • 3D格子:8×8×8 = 512ユニット
  • 近傍:各ユニットは26近傍
  • 結合重み:固定(初期にランダム生成したものを保持)
  • ユニット型:E(興奮) / I(抑制) / X(変化検出:XOR系) を混在
    ※配置は固定(初期配置はランダム)

2.2 ダイナミクス(ざっくり)

入力は z=0 層に投影し、内部状態を DIGIT_STEPS 回反復して落ち着かせます(内部に“波”や“反響”が出るイメージ)。

ポイントは、内部状態 p そのものを読まずに、予測誤差(loss)を読むことです。


3. 誤差readout(ここが一番言いたい)

Monolithでは「教師ラベルに対する誤差」を直接使うのではなく、局所的な“駆動(drive)”と予測のズレを 誤差(驚き)の流れとして定義します。

3.1 定義(直感版)

  • 各ユニットは「近傍から流れてきた誤差(loss)の総和」を入力として受け取る
  • その入力を内部予測 p で説明しようとして、説明しきれなかった分が loss になる
  • 最終的に分類器へ渡す特徴量は loss のベクトル

3.2 数式(最小)

近傍集合を N(i) として、

  • 駆動信号(入力)
    • d_i = Σ_{j∈N(i)} loss_j (※必要なら z=0 の外部刺激も加算)
  • 局所誤差
    • loss_i = d_i - p_i

分類は、反復後の loss(例:最終ステップの loss ベクトル、あるいはステップ平均)を特徴量として、線形分類します。


4. 結果(Digits)

Digitsで試したところ、

  • 学習初期(〜100 epoch)で精度が急に立ち上がる(“一撃学習っぽい”挙動)
  • 最終的に 90%を超える精度

という挙動を確認しました。

直感的には、固定リザーバーが入力を高次元へ射影し、さらに「誤差の干渉縞」みたいな模様が出ることで、線形分離しやすい特徴空間が得られているのかもしれません。

また、DIGIT_STEPS を層数以上にすると深層部まで信号が届き、反響(Feedback)によって数字固有の“定常波”っぽいものが出る気配がありました(Z方向の活性分布を観察)。


5. ハードウェア実装目線での嬉しさ

Monolithは(少なくとも思想として)以下がハード実装と相性が良いです。

  • 局所配線:近傍通信だけで回る(配線の現実に寄せやすい)
  • 固定重み:リザーバー層の学習が不要(メモリ書き換え問題を避けやすい)
  • スケール:格子をタイル状に増やすだけで拡張できる

もちろん「今すぐスマホサイズの外部脳が作れる」という話ではないですが、
“データセンターで巨大に学習させる生成AI”とは別方向の、物理的に置ける知能として面白いと思っています。


6. 気になっている点(助けてほしい)

このモデルは発振・飽和に落ちる可能性があり、特に X(XOR系の変化検出ユニット)がチカチカして発振に寄る感触があります。

今後やりたい/議論したいのは以下です。

  • 誤差readoutが効く理由:内部状態 readout と何が本質的に違うのか
  • 寄与の切り分け:X(XOR)/ 3D格子 / 26近傍 / drive=近傍loss総和 のどれが効いているか
  • トポロジー近似:斜め結合を多ホップ化(軸近傍中心)しても同様の挙動が出るか
  • 発振対策:Xの出力をなまらせる(リーク/デッドバンド/ヒステリシス)などが効くか
  • Digits以外の軽量タスク:音・IMU・異常検知など、生成ではない認識・検知ベンチのおすすめがほしい

7. コード(リンク)

追試用コードはnoteに置きます。

実行例:

python monolith_nn15.py

8. おわりに

Monolithは「学習で結線を変える」よりも、固定された複雑な編み目の中に“誤差(驚き)の波”を流し込むことで認識を立ち上げる、という発想の実験です。

追試報告・関連研究リンク・「それ既知だよ」も含めて、何でも歓迎です。コメント欄などで教えてください。

(元記事note: https://note.com/bluecrow/n/n1806a08c9a29

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?