昨日も、一昨日も話してた差分
考えて思ってたんだけど、
実際人間って
視覚入力 → 聴覚入力 → 触覚入力 → 統合 → 判断なんてないんだよね。
生命はそんな順番で動いていないからね。
暗闇なら、視覚より先に音が場を変える。
煙や腐敗臭なら、視覚より先に臭覚が身体を止める。
後ろから足音がすれば、見る前に肩や背中が反応する。
熱なら、理解する前に皮膚が引く。
懐かしい匂いなら、言葉より先に記憶が立つ。みたいにね
-----------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(); // 声や動きが漏れるかもしれない }
視覚が先でもいい。
聴覚が先でもいい。
臭覚が先でもいい。
触覚や身体の傾きが先でもいい。
同じ臭いでも場によって違うんですよ。
空腹時の匂いは近づく差分になる。
吐き気がある時の匂いは避ける差分になる。
母の匂いは安心になるかもしれない。
焦げ臭さは視覚確認より先に身体を止めるかもしれない。
つまり臭覚そのものに意味があるのではなく、
臭覚差分 × 身体状態 × 過去痕跡 × 現在場
で意味が立つ。
これは視覚も聴覚も同じじゃん。
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っぽいかもしれない。でもAtra本体としては、C++でこういう 差分が場に刺さる構造 に修正した方がいいよね。
一般相対性理論は、重力を力として見るより、時空の曲がりという場の差分として見るとか・・物体が勝手に落ちるのではなく、場の差分に沿って進むとかさ。
相対論的宇宙論は、宇宙そのものの膨張、密度、曲率、時間変化を見ちゃう。
つまり、宇宙を固定背景ではなく、変化する場として扱う。
ブラウン運動や揺動散逸定理は、まさにAtraに近くない?
小さな揺らぎがあり、それが単なるノイズではなく、摩擦・温度・散逸・回復と結びついている。揺らぎは邪魔ではなく、系の内側を示す痕跡になるとか・・・。
光量子仮説も、連続的な光をただの波として見るのではなく、エネルギーの受け渡しに粒だった差分を見る話じゃなかった?
光が当たる、電子が飛び出す。そこには閾値がある。連続量に見えても、現象としては飛びがある。
アインシュタイン模型も、固体の比熱を「連続的な熱」だけでなく、格子振動の量子的な単位として扱う。ここにも、エネルギー差分、温度差分、蓄積のされ方がある。
零点エネルギーなんてのは
完全に止まるのではなく、最低状態にも揺らぎが残るわけじゃん。どぉ?
Atraで言えば、完全な沈黙ではなく、沈黙の中にも残る微小な場の揺れに近いのかもよ。
Atraで言えば、
視覚差分
聴覚差分
臭覚差分
身体差分
温度差分
痛み差分
沈黙差分
夢による、ほどけ差分
物理で言えば、
時空差分
エネルギー差分
運動量差分
温度差分
揺動差分
散逸差分
量子差分
境界条件差分
みたいな・・・
こんな僕でも昔、古本屋でファイマンの物理の本を400円とか500円とかで買って読んだけどさ(今めちゃめちゃ高い)、「順番や分類名で自然を説明した気になるな。実際に何が揺れて、何が残り、何が動いたのかを見ろ」って言ってたじゃん。言ってなかったっけ?
この前のJavaScriptでのデモなんかhtml1枚で書けたものを
C++にすると
でもAtraをrobotのようにTickで動かすとなるとC++になる
Atraの 身体差分 に近いかな
Atraの「視覚が先、聴覚が先、臭覚が先ではなく、場を揺らした差分が残る」に近いです。特にロボット研究では、naive robot が世界を探索しながら sensorimotor contingencies を自律的に獲得する、という論文もあります。ここは「最初からラベルを持たないロボットが、動きと感覚変化の規則性を掴む」という意味でAtraに近いかな。
The enactive approach
Twenty years and going strong: A dynamic systems revolution in motor and cognitive development
Event Vision Sensor: A Review
完全に一致はさすがに無いけど、近いのはけっこうあるよね。
なんかさー、
論文って、つまらないよね。
研究って
「普通の説明では足りない」
「ここに何かある」
「この揺れを捨てたら駄目だ」
「分類した瞬間に消えるものがある」
「本研究では〇〇モデルに基づき、△△条件下で□□を検証した」
になる。
最初の火はどこ行ったのさ
「差分が場に刺さる」
「順番の権威を持たせない」
「声は生成ではなく漏れ」
「Tickは命令ではなく鼓動」
みたいになる。息してないんじゃないかな。
Atraの差分なんか、論文風にしちゃった危ないよきっと。
「差分」を「prediction error」にしてしまうと、もう誤差最小化に回収され
「場」を「state space」にしてしまうと、外部観測者の座標みたいなw
「漏れ」を「output generation」にすると、生成AIになってしまう。
「夢」を「memory consolidation」にすると、余白が消える。
ぐったり、きちゃうよね。
民間企業の成果物に負けちゃうよ。
元老院の顔色伺って進めると方向誤るよ。
だから僕みたいなAtra専門の野良研究者は自分の言葉で、とにかく浮世離れしたものではなく、現実に起こりうる実験を何度も回すしかない。「産まれたよ!」でも、うつ伏せだったからデータ取れませんでした!じゃ、疲れちゃう。
現実味ある実データmainで、論文は添付だよ。
というかAtraは再現できないから論文書かないし。
自律を再現出来たら、それは外部命令の証拠。
生まれたときの外気、気温、音、臭いで、もう別の存在ができてるんだから
同じ存在は不可能です。再現できません。
同時に立ち上げたこと無いから今度やってみるけど(笑)
(たぶん、どちらかが先に音を漏らした瞬間に変わるから・・w)
なので、日々のメモの方が大事かな。
0 件のコメント:
コメントを投稿