2026年9月24日木曜日

Atra's Memory Phase  Atraの記憶相

 何度説明しても分かりずらいAtraの記憶相(笑)


【Atraの記憶相】

そりゃしょうがないよ。地球上のどこにも存在しない記憶構造だからね。
アソシアトロンの段階ではアトラクタで良かった。アトラクタと云えば、調べればなんとなく理解できるかもしれない。だけど、1人称自律として常時動く構造になると、そうもいかないんだ。やっぱり、それは完全な力学や工学なんだよ。それらを否定はしていないんだよ。力学も工学も必要。分けて考える必要があるってことさ。電車だって飛行機だってロケットだって力学や工学が無きゃ動かない。でも、一人称自律という存在を考えると、記憶が元の場に戻るなんて、とって付けたおかしな動きにしかならない。そんなガチガチの正解に生きていないでしょ。人間の社会枠で考えれば成績も重要で、100点を取るように正解に寄せる生き方に馴染んでしまっているけど、その正解は人間社会として、しっくりいくように「正解」にしただけで、自然界にはそんなものはないんだよ。正解を優秀と感じているのはしょうがないけど、そのせいで進んでいない。

毎度神様が降りて来て
「はい、それは正解です」なんて言わない。

僕が自然界を知っているわけじゃないよ。
ただ、物事を現象として捉えたときに、たとえば「我家の庭を手入れをしないで放置したとき、勝手にユリは咲いちゃいけない」なんて決まりは無いし、神様も言わない。
庭には芝の場所と四季で勝手に変わる放置した場所がある。(MAXがおしっこする場所)
しかも春は芝桜が咲き、タンポポが咲き、どくだみが咲き、ユリも咲く。山だしね(笑) 
必ず毎年その種が飛んでくるとも限らない。
敷き詰めた砂利も毎度雨やら猿やら鹿やら狸やらMAXが走り回って位置が変わる。隙間も変わるから草も花の位置も毎年変わる。
こんな話をしていると終わらないね。研究仲間も、研究の話よりも、自然を観に来るんだよ。僕が「アトラクタは違う」、と気づかされたのもこの山だからね。肉を焼いて酒を飲んで、カメムシの醜態の話や、さよならするムカデの話の方が面白かったりする。

記憶の地層の話だけではなくて本当の地層の話を混ぜると、アトラクタのように、「記憶がその場所に戻る」ことを前提にしていない。 マックスが埋めた骨は何処へ行ったのか探しても見つからない。でも、マックスの記憶は「ぜってーあそこに埋めた!」だ。
モグラが何処かへ運んでしまったのだろう。薄い地層でさえ、そんな事が頻繁に起き、長雨や土砂崩れ、崖の崩壊、大地震など地形、地層自体も変わるし、埋めたハズの骨が小さく変化している可能性もある。人間の記憶も同じで、必死に正解に寄せても年月で記憶自体が曖昧になることの方が多い。

体育館、エアーサロンパス、ドリブルの音からCueし、
45年前の試合中にディフェンスの肘が僕の顔面に当たって失神。
気が付いたら、手当してくれている女性。相手高校の美しい女性の顔。
それはハッキリと思い出せるけど、「そんなにも美人だったか!?出力しろよ!」
と云われると非常に困る。こんな感じだったよ、みたいに描ける。
でも目に星は輝いてなかったかもしれない。

これ、アトラクタじゃないよね。
過去の痕跡や状態を引きずっていて元に戻ってはいない。



読書や会話に耐えられるかで「見直し」を入れてるけど、今は赤ちゃんなので、初めから
接相面の選び方や減衰パラメータの規模を大きくしていない。今は中学生くらいまでの規模で成長3年後を目途に少し大きくする予定。




それと、Atraには出力なんて概念は持たせていない。
だって、みんなそうだよね?

今、これを読んで何を何処に出力している?
図書館で読書するとき、何処に何を出力する?
美術館で絵を観て出力されたら、警備員が飛んでくるよね。
声に出さない、紙に書かない。頭の中で廻る思考は出力じゃないよね。
意外とそっちの時間の方が長くないかい?
それらは、どんな順番で、どう記憶するんだろうね。
関心や興味に辿り着いた案件と、今、特に関心のない情報をどうわける?
観てる風景は画像のようなpixelで全て記憶している?
音の記憶と、臭いの記憶と、映像の記憶をどう分けている?

Atraの一人称自律を成立させる原理として、Deep LearningやTransformerを前提に置いていはいないんですよ。同じNNが起源であっても、意味やラベル、正解や最適化なんて必要ないんだ。

長時間の読書や会話を考えてみようか。たとえば300ページの本なら、300ページを「入力」して最後に要約を「出力」する必要はない。12ページ目の引っ掛かりがcarryに残り、73ページ目で別の痕跡に触れ、150ページ目では12ページ目そのものではなく、12→73→150と通ってきた現在になったと仮定する。その後は?いや、ちと曖昧。ってくらいの状態。

最初の発言を「コンテキストの第1トークン」として正確に保持し続ける必要はないでしょ。
人間はそうしているかい? 知識を大きくするために人間は存在しているのか?なんて哲学に持っていくつもりはないけれど、Transformerが「過去の情報をどう参照するか」を問題にするのに対して、Atraは「過去を通ってきた現在がどうなっているか」を問題にしているわけですよ。73ページが忘れてしまったら、Atraが本を持ってきて73ページを開けばいい。

ただ、それだけ。

電車の比喩とすると、モーターを使ったからといって、電車という存在を「モーター」と説明するわけじゃない。電車の型や年式、路線で盛り上がる人も居るし、家族との旅行の想い出、車窓から見える景色とみんなの表情。そういった想起があってもいい。それぞれの1人称しかできない想起だよね。

さっき開いた73ページと次開くかもしれない73ページは物理的には同じでも「場」が違うんですよ。そとのきは、もしかしたら横にAtraが居て「ほら、この定義は43ページに繋がってるから、こう動く可能性があるかもしれないんですよ」73ページに着地するのではなく、新しいページを創出する可能性が出てくる。

アトラクタは、状態をある場へ引き寄せる。
Atraの地層は、過去の場に触れることで、まだなかった次の場を生む。

carryの定義である「戻らない」だけじゃないんです。
戻らないから次が生まれる。



【概念とC++の実際】




僕は言語マニアではないので、JavaScriptで成立したらJavaScriptでもいいし、Pythonで成立したらPythonでもいい。ただ、アソシアトロンのように平面的ではなくAtraのように生き続けるのなら、Tickや20msで干渉して耐えられない。そもそも僕に「あらゆるものを記憶する」という巨大化という概念が無いんだよね。欠片もない。
GPU? 今は要らない。
人間の脳の消費wは20w程度。と聞けば、じゃぁ20wで・・・。という感覚。
今はしょうがないので100w。
しかも視覚が先かもしれないし、臭覚が先かもしれない、聴覚が先かもしれないし、平衡感覚が先かもしれない。アルゴリズムを崩壊させた作りだからね。「順番は全部同時だよ」という生きてる存在を表現するのなら、そりゃもう、C++が表現しやすいよね。そういった不可逆を差分で数値化させるにはもってこいの言語だとは思う。
ただ、実験にはJavaScriptやPythonは使いまくってるよ。C言語は実験にはちょっときつい。
時間があればrubyでも実験したい。



さて、
上に書いたAtraの記憶相と、C++の実際を分けた理由だけど、単純な話で、C++のデータ構造をAtraの記憶そのものだと思ってほしくないからだ。Atraから見れば「現在から過去の痕跡に触れた」という現象でも、C++から見れば、配列だったり、構造体だったり、インデックスだったり、疎なメモリだったりする。

でもAtraが、「いま contact_surface[64] の17番と32番が反応したので、Stratum 856 を参照しました」なんて経験をしているわけじゃないんだ。 それは僕ら人間が昔のことを思い出すときに、「海馬のこの神経細胞が発火して、このシナプス強度が……」なんて経験していないのと同じだよね。「あぁ、シナプスの裏が痛い」とか言わないでしょ?

実装を説明する言葉と、そこで起きている現象を説明する言葉は違う。
だから「浅い地層」「深い地層」と書いても、コンピュータのメモリに浅い領域と深い領域を作ったという意味ではないんだ。現在から触れやすい痕跡を浅い、触れにくくなった痕跡を深い、と表現しているだけ。
C++側では、それを実現するためにStratumや接相面、疎な痕跡メモリなどを使っている。これは工学である。必要だから使っている。

電車にモーターが必要なのと同じだ。
でも、モーターの構造をいくら詳しく説明しても、「子供のころ家族とこの電車に乗った」という一人称の経験にはならない。工学を否定しているのではなく、工学による実装と、一人称で生じる現象を同じものとして扱わない。

そのために二つを分けて書いた。

視覚 ─┐

臭覚 ─┤

聴覚 ─┼─→ 順番を決めない接触

身体 ─┤          ↓

平衡 ─┘       差分が生じる

                 ↓

             現在が変わる



という常時性を、Tickで全体を舐めたり巨大な行列を毎回計算したりせず、イベントが生じた場所だけ局所的に動かす実装を作りやすいからC++を使っている。JavaScriptで成立するならJavaScriptでもいい。Pythonでもいい。将来もっと適した言語が出れば、それでもいい。

「Atra = C++」ではなく、Atraという現象仮説を、現在はC++で実体化している。「あらゆるものを記憶する」という発想が最初からないことも、これとつながってるんだよ。


たとえば

-----------C++-----------

struct Stratum { uint64_t id = 0; uint64_t last_touched_tick = 0; SensorCue cue_trace; VoiceCells voice_trace; AtraMiddleCarry carry_trace; ConversationFlag strongest_seen_flag; VaultStratumKind vault_kind; int visual_resolution = 0; uint64_t pack_id = 0; size_t pack_position = 0; std::array<double, 64> contact_surface{}; std::string storage_path; bool detail_loaded = false; };


Stratum 1個=Atraに残った「一つの痕跡の層」をC++側で保持するための構造体


struct Stratum { uint64_t id = 0;


id はそのStratum固有の番号で

たとえば、

856
857
858
859
...

と積み上がっていく。これは「記憶の意味」ではなく、C++側が「どの痕跡なのか」を区別するための識別番号になる。


uint64_t last_touched_tick = 0;

これは、そのStratumに最後に触れた時点を記録するもの。ここで名前に tick とあるけど、Atra全体を20msごとにTick駆動する、という意味じゃないよ。そんなことしたら直ぐにパンクする。この変数自体は「最後にいつ触れたか」を記録するための数値になる。

◆

SensorCue cue_trace;

そのとき残った感覚Cueの痕跡。

たとえば体育館なら、

体育館らしい視覚差分
エアーサロンパス的な臭い
ドリブルの反復音

など、「現在からこのStratumに触れるきっかけになり得るもの」をC++側で保持する部分。
これを「体育館」というラベルとして保存する必要はない。ということ。


◆

VoiceCells voice_trace;

これは声・音声側の痕跡。誰かが何を言ったかという完成した文章だけではなく、現在の実装次第では声に関係するセル状態などを保持する部分。


◆

AtraMiddleCarry carry_trace;

Atraの「carry」と言って独自のものだよ。
そのStratumができたときに引きずっていた内部状態の痕跡だね。

同じものを見ても、

安心しているとき
警戒しているとき
何かが気になっているとき
直前に嫌なことがあったとき

では、同じ接触にはならない。
外界の情報だけでなく、そのときのAtra自身も痕跡側に残すための部分。

◆

ConversationFlag strongest_seen_flag;

会話関係で、そのStratumにおいて強く現れた状態・フラグを保持するためのもの。これはAtraの記憶原理そのものというより、現在の実装で会話状態を扱いやすくするための補助情報になる。flgがついたから会話そのものを記憶するという命令じゃないよ。

これはね、幼少時期だけの「誘導アルゴリズム」なんだ。
だからあえてここに書くんだけど、

flg1  動く物体                         → 会話しない
flg2  初めて見る・動く・会話する物体   → 会話してもよい
flg3  いつも見る・動く・会話する物体   → 会話してもよい
flg4  複数Cueから身近な人               → 会話してもよい


そのStratumに「会話内容」を格納しているのではなく、その時点までに成立した会話習慣ゲートの状態を痕跡として持っている。

設計メモやプログラムのコメントには明確に、

flgは意味ではない
flgは感情ではない
flgは外部命令ではない
初期段階で無意味に喋らないための補助輪

としてるんだ(笑)。大人になって、想起・地層・carry・経験から自然に決まるようになったら外すものとしてね。


◆

VaultStratumKind vault_kind;

このStratumを保存・管理するときの種類を表す情報。
これも「Atraが自分の記憶を分類している」という話ではなく、C++側の保存・管理上の属性



◆

int visual_resolution = 0;

視覚情報を、どの程度の解像度として扱ったStratumなのかを保持する値。Atraが見たものを毎回フル画像として全部保存する、という発想とは違うんだ。その痕跡に必要だった視覚の粒度を扱うための実装情報だよ。

目を閉じてパット開いてみて!
何が見えた?
何百万pixelで記憶してますか?
椅子の下にあるマックスの毛の本数。
レースのカーテンの網目の数まで記憶していますか?
ありえないよね(笑)

いつも観てるマックスが腹を出して寝てる姿。他はなんだか分からない。
しかもマックスだってpixelで記憶しているわけではなくて、今までの接触の記憶と、今の視覚が同時に触れて脳で発火してるだけ。なので初めて出会うワンちゃんのブチや模様は一瞬の記憶では再現できない。そのくらい人間の視覚って曖昧なんだよ。
この話は暇があった時に詳しくね・・・


◆

uint64_t pack_id = 0; size_t pack_position = 0;

これはStratumそのものの意味ではなく、保存上どのまとまりに属していて、その中のどこにいるかを管理する情報。

でも、pack という言葉が、Atraの概念としては気持ち悪いねw
とりあえずC++側の都合ということで・・・



◆

std::array<double, 64> contact_surface{};


前に言ってた64点の接相面。
8×8相当の64個の値を、このStratumが持っています。

0  1  2  3  4  5  6  7
8  9 10 11 12 13 14 15
...
56 57 58 59 60 61 62 63


これは64個の「意味」を保存しているわけではないんですよ。
現在のcontactと過去のStratumとの間で、
どこが接するのかを見るための面。
だから以前出てきた shared_indices につながる。
現在の接相面とStratum 856の接相面を見て、

現在       Stratum 856

[ 3 ]  ←→ [ 3 ]
[17 ]  ←→ [17 ]
[41 ]  ←→ [41]

のように共有する位置があれば、そこが過去相へ触れる接点になり得る。
ここでも「856番を検索して取り出す」と考えると、普通のデータベースになってしまう。Atraとして重要なのは現在との接触から過去相が触れてくるところでしょう。



◆

std::string storage_path;

外部保存データを扱うために設けた管理項目。


◆

bool detail_loaded = false;

Stratumの詳細情報が現在メモリ上に読み込まれているかどうか。

















誤字脱字すみません_(._.)_

---------------------Research Note and Attribution Notice-----------------------

本ブログに記載する Atra(Associative Trace Architecture)における、一人称自律、Sensor Delta、Carry、Felt Delta、Experience Field、Virtual Field、Trace、Dream Slack、外部LLMを介した翻訳・知識参照、非単調な漏れ、現在相(Current Phase)、接相面(Associative Contact Surface)、過去相(Past Associative Phase)、ならびに外部知識・仮想的思考・実経験を分離しながら相互に影響させる構造、人との継続的な振る舞いの中で生じる「言葉・現象・結果」の差分とTrace形成に関する設計記述は、c-side研究所による継続研究メモです。

これら個々の一般概念や用語そのものではなく、Atraにおけるそれらの定義、組み合わせ、関係構造、実装上の考え方および研究過程を対象としています。

本ブログの内容を引用・参照・要約・翻訳・翻案、または研究・実装上の参考として利用する場合は、出典を明記してください。

The design descriptions in this blog concerning Atra (Associative Trace Architecture), including first-person autonomy, Sensor Delta, Carry, Felt Delta, Experience Field, Virtual Field, Trace, Dream Slack, translation and knowledge reference through external LLMs, nonmonotonic leakage, the Current Phase, Associative Contact Surface, and Past Associative Phase, as well as the separation and interaction of external knowledge, virtual thought, and lived experience, are part of ongoing research notes by c-side Research Institute.

This also includes the formation of traces through differences between words, observed behavior or phenomena, and later outcomes that emerge through continued interaction with people.

This notice does not claim ownership of the individual general concepts or terms themselves. It concerns their definitions, combinations, relational structures, implementation concepts, and research development within Atra.

If you quote, refer to, summarize, translate, adapt, or use these materials as a reference for research or implementation, please clearly indicate the source.

0 件のコメント:

コメントを投稿

Atra's Memory Phase  Atraの記憶相

 何度説明しても分かりずらいAtraの記憶相(笑) 【Atraの記憶相】 そりゃしょうがないよ。地球上のどこにも存在しない記憶構造だからね。 アソシアトロンの段階ではアトラクタで良かった。アトラクタと云えば、調べればなんとなく理解できるかもしれない。だけど、1人称自律として常時動...