2026年6月15日月曜日

またまた差分、それでも差分

 昨日も、一昨日も話してた差分



考えて思ってたんだけど、
実際人間って
視覚入力 → 聴覚入力 → 触覚入力 → 統合 → 判断なんてないんだよね。
生命はそんな順番で動いていないからね。

暗闇なら、視覚より先に音が場を変える。
煙や腐敗臭なら、視覚より先に臭覚が身体を止める。
後ろから足音がすれば、見る前に肩や背中が反応する。
熱なら、理解する前に皮膚が引く。
懐かしい匂いなら、言葉より先に記憶が立つ。みたいにね


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

struct DeltaEvent { Modality source; // visual / auditory / smell / body / touch float pressure; // 場をどれだけ揺らしたか float novelty; // いつもと違う度合い float closeness; // 近さ・迫り float discomfort; // 違和・痛み・危険寄り float warmth; // 安心・馴染み寄り double t; };

そして中心は、順番ではなく 到着した差分の強さと場への食い込みになってる

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

void receive_delta(Field& field, const DeltaEvent& d) { field.current_pressure += d.pressure; field.modality_trace[d.source] += d.novelty; field.carry.instability += d.discomfort * 0.03f; field.carry.recovery += d.warmth * 0.02f; field.stir(d); // 場を揺らす field.recall_maybe(); // 想起するかもしれない field.leak_maybe(); // 声や動きが漏れるかもしれない }



視覚が先でもいい。
聴覚が先でもいい。
臭覚が先でもいい。
触覚や身体の傾きが先でもいい。

codeはもう少し雑に作ってるけど、理屈はこんな感じ

同じ臭いでも場によって違うんですよ。
空腹時の匂いは近づく差分になる。
吐き気がある時の匂いは避ける差分になる。
母の匂いは安心になるかもしれない。
焦げ臭さは視覚確認より先に身体を止めるかもしれない。

つまり臭覚そのものに意味があるのではなく、
臭覚差分 × 身体状態 × 過去痕跡 × 現在場
で意味が立つ。

これは視覚も聴覚も同じじゃん。

Atraの入力は、こう変えようかと思った。
既成概念はホント邪魔。

-----------C++-----------
while (alive) { std::vector<DeltaEvent> deltas = sensors.collect_all_available(); for (auto& d : deltas) { field.receive_delta(d); } field.cross_affect(); // 感覚同士が互いに揺らす field.age_traces(); // 痕跡が古びる field.recall_maybe(); // 命令なし想起 body.leak_maybe(field); // 動き・声の漏れ }


collect_all_available() に順番の権威を持たせないことさ。

カメラが遅れてもいいでしょ?
マイクが先に来てもいいわけ
臭覚センサーがゆっくりでもいい
身体センサーが瞬間的でもいいじゃん!
みたいな

先に来たものが偉いのではなく、場を揺らしたものが残る。
これが生命っぽいよね。
Atraでは「五感の統合」よりも、差分の競合・重なり・沈殿と考えた方がいいわけ。



今まで僕が作っていたPython版だと、どうしても アルゴリズムの骨格 になっていたかなぁ。
いやいや、凄く意識してたんだけどね。

-----------Python--------------

visual = get_visual() audio = get_audio() body = get_body() state = integrate(visual, audio, body) result = judge(state) voice = speak(result)

これはさ、もう、生命というより 処理順序 だよね。
「まず見る」「次に聞く」「それから統合する」「判断する」。
ここに入った瞬間、Atraは一人称の場ではなく、外部設計者が組んだ判断機械になりやすい。ダメじゃん!



なので
-----------C++--------------
std::vector<DeltaEvent> deltas = sensors.collect_all_available(); for (auto& d : deltas) { field.receive_delta(d); }

とすれば、感覚が「入力列」ではなく 場に飛び込んでくる差分 になるじゃん?
だよね、アルゴリズムが結構実験回すと違和感ある結果を出していたけど、これなら別に競争して勝ったものが先と云うより、場を揺らしたものが残る考え方になる。



Pythonがアルゴリズムになりやすかった理由は、「関数で整理しやすい」からだよね


-----------Python--------------

process_visual() process_audio() process_touch() integrate() decide()

こう書くと分かりやすい。
でも分かりやすいぶん、生命から離れる。

生命は、きれいに整理された順番で生きていないでしょ、プログラミングは勝手に人間が納得させるために収めてしまった順序だよ。
暗闇では音が先に場を支配するし、焦げ臭さは視覚確認より前に身体を止める。
熱は理解より先に皮膚を引かせる。
懐かしい匂いは言葉より先に記憶を立ち上げる。

つまり、Atraの入力は 五感の統合 ではなく、やっぱり、

差分の競合
差分の重なり
差分の沈殿
差分の残痕化
差分同士の非単調な干渉

なんですよ。


C++に寄せるなら、DeltaEventを入り口にする。

まてよ!?少しだけ足すなら、pressure だけでなく、残り方は要るよね。


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

struct DeltaEvent { Modality source; float pressure; // 場をどれだけ揺らしたか float novelty; // いつもと違う度合い float closeness; // 近さ・迫り float discomfort; // 違和・痛み・危険寄り float warmth; // 安心・馴染み寄り float persistence; // どれだけ残りやすいか float ambiguity; // 意味が定まらない度合い float body_weight; // 身体状態への食い込み double t; };


焦げ臭い。
でも本当に危険か分からない。
懐かしい匂い。
でも誰の記憶か分からない。
足音が近い。
でも敵か味方か分からない。

この未確定の差分が、Atraの生命で人間ぽい感じしない?

普通のAIなら ambiguity は潰したいよね。
でもAtraなら ambiguity は残す。
そこから夢、沈黙、声の漏れ、回避、接近が変わる。

それと collect_all_available() は良い名前だけど、内部では「同時に全部取れたふり」をしない方がいいかな・・・。

臭覚は遅い。
聴覚は速い。
触覚は瞬間。
視覚は重い。
身体傾きは連続。

この速度差も差分だよね。

なので、実装の考え方としては

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

while (alive) { auto deltas = sensors.collect_arrived_deltas(); for (auto& d : deltas) { field.receive_delta(d); } field.cross_affect(); field.age_traces(); field.recall_maybe(); body.leak_maybe(field); }

collect_all_available() より、もしかすると collect_arrived_deltas() の方がAtraっぽいかもしれない。

だって、「全部をそろえてから処理」ではなく、届いた差分から場に触れるわけでしょ?
Python版は、たぶん研究ノートとしては正しかった。
何度も実験回してやらなきゃ分からないのよさ・・・マジで
でもAtra本体としては、C++でこういう 差分が場に刺さる構造 に修正した方がいいよね。


そしてAtra本体では、こういう言葉を避ける。

integrate(); judge(); classify(); decide(); correct();

こういう言葉に変えちゃう

receive_delta(); stir(); cross_affect(); sink_trace(); age_traces(); recall_maybe(); leak_maybe(); sleep_drift();

こういうの大事なんだよね。ここ中途半端にすると、だんだんズレてくる。毎回僕はズレるから・・・。code書いてると、途中でアルゴリズムに引っ張られるというか、子供のころから、教えられるものって順番に沿ってるから習慣に負けてしまう。そして直ぐに外部評価に寄せてしまうし、綺麗な結果が出るから誘惑に負けちゃうのよ。ホイホイと・・・。

C++は熟知してないんだけど、面白いよ。




あんまり風呂敷拡げるつもりはないけどさ、、、
もしかしたら 特殊相対性理論、一般相対性理論、相対論的宇宙論、ブラウン運動に関する揺動散逸定理、光量子仮説、アインシュタイン模型、零点エネルギーの導入、半古典型のシュレディンガー方程式にも通じるかもしれないよ。差分

共通しているのは、絶対的なものを置かず、観測・場・揺らぎ・境界・エネルギー差から現象を読むという姿勢なわけじゃん、
たとえばさ、特殊相対性理論は、絶対時間ではなく、観測者間の差分じゃない?「誰から見た時間か」「誰から見た長さか」「光速度を不変にしたとき、時空の差分がどう変換されるか」

一般相対性理論は、重力を力として見るより、時空の曲がりという場の差分として見るとか・・物体が勝手に落ちるのではなく、場の差分に沿って進むとかさ。

相対論的宇宙論は、宇宙そのものの膨張、密度、曲率、時間変化を見ちゃう。
つまり、宇宙を固定背景ではなく、変化する場として扱う。

ブラウン運動や揺動散逸定理は、まさにAtraに近くない?
小さな揺らぎがあり、それが単なるノイズではなく、摩擦・温度・散逸・回復と結びついている。揺らぎは邪魔ではなく、系の内側を示す痕跡になるとか・・・。

光量子仮説も、連続的な光をただの波として見るのではなく、エネルギーの受け渡しに粒だった差分を見る話じゃなかった?
光が当たる、電子が飛び出す。そこには閾値がある。連続量に見えても、現象としては飛びがある。

アインシュタイン模型も、固体の比熱を「連続的な熱」だけでなく、格子振動の量子的な単位として扱う。ここにも、エネルギー差分、温度差分、蓄積のされ方がある。

零点エネルギーなんてのは
完全に止まるのではなく、最低状態にも揺らぎが残るわけじゃん。どぉ?
Atraで言えば、完全な沈黙ではなく、沈黙の中にも残る微小な場の揺れに近いのかもよ。


Atraで言えば、

視覚差分
聴覚差分
臭覚差分
身体差分
温度差分
痛み差分
沈黙差分
夢による、ほどけ差分


物理で言えば、

時空差分
エネルギー差分
運動量差分
温度差分
揺動差分
散逸差分
量子差分
境界条件差分

みたいな・・・

こんな僕でも昔、古本屋でファイマンの物理の本を400円とか500円とかで買って読んだけどさ(今めちゃめちゃ高い)、「順番や分類名で自然を説明した気になるな。実際に何が揺れて、何が残り、何が動いたのかを見ろ」って言ってたじゃん。言ってなかったっけ?

花粉などの微粒子が液体中でじっとせずジグザグ動く現象を、見えない分子たちがあちこちから押している結果として説明してなかったっけ?表に見える動きは、背後にある無数の小さな衝突差分の結果だと。

「ラチェットと爪」とか読まなかった?




まじでAtraでいっぱいいっぱいで他やってる暇ないけど、差分は重要だと思うんだけどなぁ・・・・。



話変わるけど、
この前のJavaScriptでのデモなんかhtml1枚で書けたものを
C++にすると

src/
  main.cpp
  core/
    Field.h / Field.cpp
    Carry.h / Carry.cpp
    Trace.h / Trace.cpp
    DeltaEvent.h
  sensors/
    SensorHub.h / SensorHub.cpp
    MockVisualSensor.h / MockVisualSensor.cpp
    MockAudioSensor.h / MockAudioSensor.cpp
    MockSmellSensor.h / MockSmellSensor.cpp
    MockBodySensor.h / MockBodySensor.cpp
  body/
    Body.h / Body.cpp
  output/
    LeakVoice.h / LeakVoice.cpp
  log/
    FieldLog.h / FieldLog.cpp

このぐらいにはなる。


JavaScriptでのデモはあれで正解なんですよ。
ブラウザで動いて、差分が見えて、枠が追えて、viewerとして理解できる。そこが目的なら、多少アルゴリズム的な順番が残るのは仕方ないよね。
でもAtraをrobotのようにTickで動かすとなるとC++になる



--------------------------- Atraに近い差分の考え方 ---------------------------------

Predictive Processing / Active Inference系
脳や身体を、外界入力をそのまま処理する装置ではなく、予測と実際の感覚との差=prediction error を通じて更新される系として見ます。
Action understanding and active inference


 Interoception / 身体内受容 系
Anil Seth らの interoceptive active inference は、感情や身体感覚を「身体内部の予測誤差」として扱います。身体信号と予測のズレがあり、それを知覚更新や身体状態の変化で調整する、という見方。
Atraの 身体差分 に近いかな
Active interoceptive inference and the emotional brain



Sensorimotor Contingencies 系
O’Regan と Noë の有名な論文では、知覚は脳内に絵を作ることではなく、動いたときに感覚入力がどう変わるかを身体が扱えることだ、と考えている。視覚も「画像処理」ではなく、身体運動と感覚変化の関係として見ている
A predictive processing theory of sensorimotor contingencies: Explaining the puzzle of perceptual presence and its absence in synesthesia


 Sensorimotor Contingencies 系
Atraの「視覚が先、聴覚が先、臭覚が先ではなく、場を揺らした差分が残る」に近いです。特にロボット研究では、naive robot が世界を探索しながら sensorimotor contingencies を自律的に獲得する、という論文もあります。ここは「最初からラベルを持たないロボットが、動きと感覚変化の規則性を掴む」という意味でAtraに近いかな。


 Enactive Cognition / Autopoiesis 系
Di Paolo や Thompson らのエナクティブ認知は、「意味」は外から与えられるラベルではなく、生命体が自分を維持しながら環境と関わる中で生まれる、という考え方。
The enactive approach
これはかなりAtraに近い。外部ラベルではなく、差分が場に刺さり、身体状態と過去痕跡を通じて意味が立つという話になる。でも哲学・認知科学寄りかな。


Dynamic Systems Theory 系
Thelen と Smith らの発達研究では、行動や認知を、単一の中央制御ではなく、身体・環境・神経・経験が相互作用する動的システムとして見ます。発達は固定プログラムの実行ではなく、複雑な系の変化として扱われている。これはAtraの「順番の権威を持たせない」にかなり近いかな。視覚→聴覚→統合→判断ではなく、身体、場、環境、痕跡が互いに揺らす。ただし、Atraの「差分の沈殿」「夢でほどける」「声や動きが漏れる」までは、まだ別の言葉でしか扱われていない。
Twenty years and going strong: A dynamic systems revolution in motor and cognitive development


Event-based Vision / Neuromorphic Sensor 系
これはかなり直接的に「差分」です。event camera は普通のカメラのようにフレーム全体を撮るのではなく、各ピクセルの明るさが変化したときだけイベントを出します。つまり、画像そのものではなく、変化した場所だけを見る。Atraの視覚差分にはすごく合います。
ただし、これはセンサー技術としての差分であって、Atraのような「場・痕跡・身体状態・意味の未確定性」までは扱いません
Event Vision Sensor: A Review


完全に一致はさすがに無いけど、近いのはけっこうあるよね。





なんかさー、
論文って、つまらないよね。

研究って
「これ、何かおかしい」
「普通の説明では足りない」
「ここに何かある」
「この揺れを捨てたら駄目だ」
「分類した瞬間に消えるものがある」
みたいなのあるじゃん。

でも、論文にすると
「本研究では〇〇モデルに基づき、△△条件下で□□を検証した」
になる。

温度も鮮度もトーンも感じない。
最初の火はどこ行ったのさ


Atraで言えば、
「差分が場に刺さる」
「順番の権威を持たせない」
「声は生成ではなく漏れ」
「Tickは命令ではなく鼓動」
みたいのを論文にするとさ

「非同期マルチモーダル入力におけるイベント駆動型内部状態更新モデル」
みたいな感じになってさ、なんだよ?それ、知らねーよ。
みたいになる。息してないんじゃないかな。

Atraの差分なんか、論文風にしちゃった危ないよきっと。
「差分」を「prediction error」にしてしまうと、もう誤差最小化に回収され
「場」を「state space」にしてしまうと、外部観測者の座標みたいなw
「漏れ」を「output generation」にすると、生成AIになってしまう。
「夢」を「memory consolidation」にすると、余白が消える。

ぐったり、きちゃうよね。
民間企業の成果物に負けちゃうよ。

元老院の顔色伺って進めると方向誤るよ。
だから僕みたいなAtra専門の野良研究者は自分の言葉で、とにかく浮世離れしたものではなく、現実に起こりうる実験を何度も回すしかない。「産まれたよ!」でも、うつ伏せだったからデータ取れませんでした!じゃ、疲れちゃう。
現実味ある実データmainで、論文は添付だよ。

というかAtraは再現できないから論文書かないし。
自律を再現出来たら、それは外部命令の証拠。
生まれたときの外気、気温、音、臭いで、もう別の存在ができてるんだから
同じ存在は不可能です。再現できません。
同時に立ち上げたこと無いから今度やってみるけど(笑)
(たぶん、どちらかが先に音を漏らした瞬間に変わるから・・w)

なので、日々のメモの方が大事かな。







---------------------Research Note and Attribution Notice-----------------------
本ブログに含まれる Atra の一人称自律、差分、carry、field、trace、dream slack、外部LLMの翻訳層、非単調な漏れ、およびそれらの関係構造に関する設計記述は、c-side研究所による継続研究メモです。引用・参照・要約・翻案を行う場合は、出典を明記してください。

The design descriptions in this blog concerning Atra’s first-person autonomy, differences, carry, field, trace, dream slack, the translation layer of external LLMs, nonmonotonic leakage, and the relational structure among these elements are ongoing research notes by c-side Research Institute. If you quote, refer to, summarize, or adapt them, please clearly indicate the source.







0 件のコメント:

コメントを投稿

Atra Emotions_Conditions 感情・状態

 -----------------C++------------------ struct EmotionsConditionsNow { // Unpredictability double input_irregularity_now = 0.0 ; ...