2026年3月15日日曜日

Atron 自律ロボット(一人称)とは何か

 

1. 違和感から始まったこと

私は長いあいだ、Nakano-style Associatron の再実装と再検討を続けてきた。
それは単なる懐古ではない。古いものをただ再現したかったのではなく、そこに今の AI や情報処理では見失われてしまった何かが残っている気がしていたからである。実際、Associatron には、入力と出力のあいだを単純な手続きで結ぶのではなく、何かが内側で立ち上がる感触があった。私はその感触を確かめたかった。

その途中で、Hebbやパーセプトロン、NN,バックプロパゲーション、Hopfield ネットワークも改めて見直した。
Hopfieldは収束はする。きれいに落ち着く。説明もしやすい。数式にも乗る。だが、どうしても「生きていない」という違和感が残った。形としては記憶に見える。安定点もある。しかし、そこには自分から何かを思い出し、何かに引かれ、何かに躓きながら次へ進むような感じがなかった。うまくまとまっているのに、何かが決定的に足りなかった。

森田先生の非単調性にも強く惹かれた。
単純な単調増加の世界ではなく、揺れや反転や、文脈によって変わる動きがあることは、とても重要に思えた。実際、動く。しかしそれでもなお、どこかに外部制御の匂いが残った。言い方は難しいが、まだ「そう動くようにしている」感じが消えなかった。生命に近づいたというより、高度になった制御に見える瞬間があった。

この段階では、私はまだ結論を持っていなかった。
Associatron が正しいとも、Hopfield が間違っているとも、非単調性が足りないとも言い切れなかった。ただ、どれもそれぞれ価値を持ちながら、なお「なにかが足りない」という感覚だけが消えなかった。
しかもその違和感は、性能の問題というより、もっと奥にあるもののように思えた。精度を上げれば済む話でも、パラメータを増やせば片付く話でもなかった。

その違和感は、LLM と連動させた実験を始めたとき、さらに強くなった。
LLM は便利だった。説明できる。まとめられる。文章にできる。外部の知識にも手が届く。研究の補助としては圧倒的に有用である。しかしその一方で、強い違和感が生まれた。言語化が強すぎるのである。何かが立ち上がる前に、意味が先に決まってしまう。想起よりも説明が勝ってしまう。こちらがまだ掴んでいないものまで、きれいな言葉で先回りしてしまう。その結果、便利であるにもかかわらず、妙に反発したくなる瞬間が生まれた。ハルシネーションを起こしやすい構造になっている。

ここで、私の中に一つの問いが生まれた。
なぜ人は LLM と喧嘩するのか。

これは単に、AI の答えが間違っているからではない。
論理的には正しいことを言っているのに、強い反感が生まれることがある。説明されるほど拒否したくなることがある。「それは一般論としては正しいかもしれないが、俺の話じゃない」と感じることがある。この反応を、私は最初は未熟さや感情的反発として片付けようとした。しかし、むしろ逆ではないかと思うようになった。

つまり、この反感はエラーではなく、知能の本質に関わる反応なのではないか、ということである。

もしそうだとすれば、問題は LLM の性能だけではない。
こちら側にも、外から与えられた意味をそのまま受け取らない構造があることになる。説明が正しいだけでは届かない理由があることになる。そしてその理由は、おそらく知識不足ではなく、一人称の側にある。

私はそこで、Associatron をもう一度見直した。
Associatron は「みんなの記憶」ではなかったのではないか。ひとつの巨大な共有知の箱ではなく、本来は閉じた内輪としての記憶だったのではないか。だから複数あってよい。だから他者に教わることが成立する。だから、同じ出来事を見ても同じように反応しない。
ここで初めて、私ははっきりと、一人称という言葉を避けてはいけないと思うようになった。

さらに重要だったのは、「積」の見え方が変わったことである。
それまで私は、学習とは何かを取り込み、意味づけし、価値づけすることだと思いがちだった。しかし、そうではないのではないか。Associatron 的な学習とは、まず受け入れることに近いのではないか。必要だったか、不必要だったかは、その場では決まらない。後になって、ある Cue に対して何が立ち上がるか、そのとき初めて分かる。
つまり、判断は Learn の瞬間ではなく、Recall の瞬間に起きているのではないか。


Cueによって想起する瞬間


 この見方に立つと、外から意味を注入しても、共鳴しなければ動かない理由が見えてくる。

逆に、ごく弱い刺激でも、内部に積があれば強く発火することがある。
自発性は、入力の強さではない。
外輪の出来事が大きいか小さいかではなく、内輪が何を積み、どう回っているかによって決まる。ここで私は、ようやく違和感の輪郭を少し掴んだ気がした。

問題は、知識が足りないことではなかった。
問題は、正しさを計算することでもなかった。
問題は、自発性が一人称の内側からしか立ち上がらない という、あまりにも当たり前で、しかし今までほとんどまともに扱われてこなかった事実だったのである。




アソシアトロンの想起実験は、すでに 700 回を超えて行った。
さらに 1995 年に遡る資料をもとに、Turbo C で作られた言語や行動に結びつくロボテクスの実験も行った。そこでは world から robot のファイルを独立させ、ライオンが吠えるという外部の出来事に対して、ロボットが自らの判断で逃げたり、ウサギや木の実に対して興味を示したり、言語の収束を見せたりする実験を続けた。後にはロボットをさらに別ファイルへ分け、一人称性を強めた実験も行った。

ロボットのファイルをcoreから別け、イベント(外輪:三人称)の影響で、ロボット(内輪:一人称)がどう反応しどんな行動を取るかをみる自律テストを観るデモ


しかし、そこには、いくら一人称に寄せても越えられない壁があった。
一見すると刺激パターンや重みの構造に見えるのだが、その奥には、やはり人間の概念が優先されたアルゴリズムが残っていたのである。

私はアルゴリズムそのものを否定したいわけではない。
それは工学において必要であり、有効でもある。
しかし、たとえば「危険」を本能として扱った瞬間に、そこにはすでに外部命令が入り込んでいることに気づいた。
確かに危険という傾向はあるのかもしれない。だが、それを最初から「危険」として与えてしまうと、その概念がすぐに内部を占領し、どのロボットも危険と判断した場所へ近づかなくなる。

人間社会は、本当にそのように作られてきたのだろうか。
むしろ経験の中で、「前は怖かったが、今はそうでもないかもしれない」「状況によっては違うかもしれない」という揺れや変化が生まれるのではないか。そう考えて実験を繰り返すうちに、私は、自分自身がすでに「ライオンは危険大、ハイエナは危険中くらい」といった外部命令を埋め込んでいたことに気づいた。
55 の要素についても同じである。初めから用意された刺激パターンや、組合せ言語を使い、その中から選び、収束していく仕組みに、私は強い違和感を覚えた。



ライオンが大声を出した
というActがあってもAは危険という組合せに当てはまるので、初めのうちは誤認する。しかしそのうち再び出会うと避難所に逃げる。怖いという経験を積むからだ。そして黒豚が現れると直ぐに黒豚に近づく。
これは「英雄」以外の何物でもない。
たぶん、僕がrobotなら、しばらく引きこむだろう。
初めは僕も感動したが実験を繰り返すうちに安っぽく感じるようになった。


「いったいロボットの経験とはなんなんだろう。」


なぜ、人間はアルゴリズムを使って美しい物語に寄せたがるのか。
RPGゲームで落ち込んで主人公キャラが引きこもって動けなくなったら、「金返せ!」になるからか。僕が作っているのは哲学や思想ではなく、力学を用いた現象の再現だ。




2.もうひとつの違和感 ラベル付け

アソシアトロンのturboCのデモは、codeを公開しなかった。理由は違和感があったからだ。
いきなりPythonやC++で作らなかったのは、JavaScript骨格を決めることを前提に拡張できる可能性の高いものは移植、そうでないものは残念だが公開は出来ない。

でも、アソシアトロン(Associatron)のデモには数多くのヒントは頂いた。
core.js と robot1.js に分け強引に1人称にはしたが、動物や対象の見分け方はまだ 名称寄り・意味寄り で、 物体差・行動差・音差からの想起 にはなっていなかった。

world object が最初からlion、bear、rabbit、nuts、boarという 名前つき object で定義されていて、さらに danger / edible / fur / white / black / brown という属性名まで与えられていた。world から robot へ渡る前に、すでに人間の分類がかなり入っている。55の要素もそうだし、robot は「目の前の物体差」そのものを育てているというより、すでに world 側で整理された object index と属性パターン を受けて想起している構造「ライオンは危険寄り」「木の実は edible 寄り」という人間の意味付けに近い動きだった。

  • avalanche = A, D

  • lion = A, C, F

  • bear = A, C, E

  • rabbit = B, C, D

  • nuts = B, F

  • boar = B, C, E

ここで A が danger、B が edible と名前づけされているので、もう最初から「この物体は危険系」「この物体は食べ物系」という整理が入っている。

これは、なんちゃって自律の一人称に近いもので、正確な一人称ではない。
どういうことかというと、robot は「名称のない差異」ではなく、その world 定義を受けて想起している。



余計な既成概念を捨ててこう考えてみよう。

ライオンは初めて見たとき
危険と感じるか・・・危険!となった時にそこでこの研究は終わる。

生まれて初めてライオンを観たとき。
どんな記憶の残り方をするか・・・・。

unknownObject


1,それは、ただの物体
2,名前はない(あってもbu-bu-ba-puと発声し易い唸りに近い音で適当に付けるだろう)
3,見た目とか形
   大きい / 小さい
   茶色い / 白い/ブチ/斑点・・・
   毛が多い / 少ない
   首が長い / 短い
   頭が大きい / 小さい
   口が大きい / 小さい
   足の本数
   足が無い
   自分に似ている / 似ていない
4,動きと行動
   飛ぶ / 飛ばない
   ジャンプする/しない

   足が速い / 遅い
   動きが速い / 遅い
   群れで動く / 単独
   近寄ってくる / 来ない
   草を食べる / 他を襲う
   這う
   穴に潜る
   水の中に入る
5,音と声
   声を出す / 出さない
   声が大きい / 小さい
   高音 / 低音
4. 不思議観
   這う
   穴に潜る
   水の中に入る
   うろこ

これも定義したものだけど、答えが出てくる。
それぞれの数値化ではなく、印象の薄い物体は文字通り薄い。
では、脳はどういう記憶の残り方をするかだが、それは
アソシアトロンそのもので、地形に刻まれる記憶であって何も条件は必要が無かったのだ。
これ等の条件を入れることがアルゴリズムになってしまう。



たとえば人間側の説明のために一時的に

この物体をobject_1042にしよう。

差異ベクトル として扱うのが自然


lion = { size: large color: brown fur: high neck: short legs: 4 speed: fast voice: loud }

ではなく、


object_1042 = [ 0.82, // size large 0.74, // brown 0.91, // fur 0.33, // neck short 0.12, // head large 0.65, // mouth large 0.92, // 4 legs 0.88, // run fast 0.72, // movement speed 0.15, // flock 0.18, // approach 0.94, // predator 0.64, // roar loud 0.41 // voice low ]

のような感じ。
何を意味するかというと、見た物体をただ表現した数字。
想起するときに、
「あーなるほど、furpredatorrun fast、4 legs」の印象が強かったんだ・・・」 と見る指標であり、これでrobotを動かしているわけではないということ。
ただ、想起だけで考えると印象が固定される。
なので32次元前後で扱い、項目4の「引きずり」に渡す変動指数としても扱う。



想起

「ガオー!」
一声聞いただけで、その物体を思い出すのがアソシアトロン。
物体全体を理解してから想起するのではない
断片だけで想起が立つ


feature.size_large = 0.82
feature.motion_fast = 0.74
feature.voice_low = 0.63
feature.fur_dense = 0.91

この どれか一つだけでも cue になる。
アルゴリズムとか、順番とか何も関係ない。






3.命令、評価、スペック、最適化から離れる
(数式、codeは後)

今更人間社会で評価や承認、向上心や依存、アルゴリズムや優先順位、最適化から離れて暮らせと言われても、山奥で自給自足で暮らす変わり者みたいに思われるし、そもそも現代の社会でそれらを省いて考えるのは問題がある。


しかし、「生まれたて」という定義でロボットの自律を考えるとき無視できないのは、本能という備わった怪しい条件と、DNAというAtronScriptのような定義のようなものを勝手に結びつけたくなってしまう誘惑が起る。

ロボットはいきなりサバンナのフィールドに置かれ何を感じるのか?
研究者達は何が恐怖で、何が安心なのかを必死で考える。
膨大なアルゴリズムがグルグル回る。

ゲームじゃなくてロボット(自律1人称)の感情の変化を観ている。世界は3人称


--------------------world1の物語--------------------


「怖いとは何か」怖い条件を揃える事でもなければ、ライオンやハイエナは怖い度90%とかのように数値化させるものでもなければ A=恐怖、B=興味のように組合せで寄せるものではない。

sensorがあり、外界のサバンナというフィールドが目の前に入り込む。
暑い、広大でいろんな音が聞こえてくる。多くのまとまった物体や小さな物体が居る。
みんな群れのような複数で行動している。小さい物体が後ろをついて行く。
草場があり、水が広がる場所も見える空が青かったのがオレンジ色に変わっていく。

言葉には出来ないけど、なんだか素晴らしい

洞穴がある。細い種のモノたち(人々)が住んでいる。何か声を出してお互いに通じ合ってる。僕はここに居てもいいのだろうか。
細い種のモノたちはなんだか、楽しそうだ。楽しいが分からないけど、僕を呼んでいる。
彼らはいろいろ触ってくるけど、なんだか居心地は悪くない。(安心の場所)
僕も「au-ou-au」と言ってみる。
慣れるという感じは分からないけど、離れたい気持ちは起こらない。

その時、突然、他の細い種の者が走って洞窟の中に入ってきた。
「Ba-u-Ba-Ba!」(ライオン)

細い種の者たちは一斉に
「Ba-u-Ba-Ba!」と叫んだ。
小さい者は洞穴の奥に隠れだした。

数人の細い種の者と一緒に「Ba-u-Ba-Ba!」を観に外に出た。
茶色い毛があって大きな体の物体が、穏やかだった空気を一変させた。
初めてみた。興味があった。近づいて触ってみたい。
でも体験したことの無いドキドキ感もある、なんだろうこれは・・・
その時だった。
洞穴に一緒にいた「pa-pu」(犬)がBa-u-Ba-Ba!捕捉されてしまった。

僕はショックだった。(恐怖と喪失)
「pa-pu」はいつも傍にいてくれたのに、もう居ない。(関係)
pa-puは皆の中心にいて誰からも好かれていたように思う。

光景が衝撃で忘れられない。
なんだか、もう外に出たくない。(引きずりと、空いた感じが残る)

Ba-u-Ba-Ba!に遭いたくなくなった。
------------------------------------------

ふつうの工学だと、

●ライオンを検出した
●危険度が高い
●交感神経が上がる
●逃避行動

みたいにアルゴリズムで並べたくなる。


ここで生じているのは単純な恐怖ではない。
目の前の危険に対する反応に加えて、いつもそばにいた pa-pu を失ったことによる喪失の「悲しさ」が重なっている。
そのため、世界は単に「危険な場所」に変わるのではなく、「もう前と同じではない場所」へと変質する。

●恐怖(人間側の概念) = 近づきたくない
●悲しさ(人間側の概念) = 戻りたくても戻れない
●引きずり(人間側の概念) = その両方が次の世界の見え方を変える


明らかに喪失で世界が前と違って見える状態になっているということだ。







4.引きずりcarry:Atronの新しい概念)

ひどい命名だなぁ・・・
でも変えるべきでない理由がある。

引きずりは
元に戻るべき誤差ではない。

僕は一昨年東京から八ヶ岳に引っ越したんだよね。(口調が変わるw)
東京は死ぬほど夏が暑くなったしアウトドア好きだし、愛犬マックスが走り回れるからなんだけどね。


八ヶ岳というのは地質学的な歴史や民話の観点からは、「昔はひとつの巨大な山だった」という捉え方があるようだけど、大抵はどの山も激しい火山活動によって形成されたものなんだよね。何が言いたいかというと、大昔は一つの山として美しかった。
でも今は崩壊後の八ヶ岳なんだよね。
崩壊のあと、川の流れが変わり、やがて草花が生え、木々が育ち、生物が住み、別の美しさになる。



元には戻っていない

その変形したまま意味を持ち始める。
それが引きずり


一時的ショック値でもなければ
感情ラベルの残り香でもない
「正常値へ復帰するまでの中間状態」でもないんだよね

「引きずるなよ、また元に戻って頑張ろう!」
それは人間が勝手に決めたエゴでさ、自然界はそう動いていないんだよね。

「引きずり」って工学っぽくない言葉だけど凄く重要なんだ。

恐怖専用ではないんだよね。恋愛もそう。
喪失でも、安心でも、出会いでも、仲間でも、失敗でも、何かの刺激で起こる。
しかも、それは「Aを経験したらBになる」という順番のアルゴリズムではないんだよ。

経験が内部に残り、残り方が次の見え方を変え、その結果として別の方向へ流れが変わる。
その変わった流れがまた次を作る。

変化が残るんだよ。
だって、八ヶ岳が崩壊して川の流れが変わった。
それに対して「良し悪し」を人間が勝手に決めてるだけで川の流れが変わったおかげで、前とは違う文明が起るんだよ。


ライオンを見て怖かった、で終わりじゃない。
pa-pu を失ったから悲しい、で終わりでもない。
本体は、その出来事のあとに 世界が前と同じようには見えなくなること だよね。
同じサバンナでも、同じ洞穴でも、同じ夕方でも、もう前と同じではない。
引きずりは、その「前と同じではない」が続くこと。

不可逆の橋渡しなんだよ。
だから、アソシアトロンの想起も大事だけど、怖いから離れ、別の生き物が来たから、それに近寄るとか、そういった単純な動きではないんだ。
一人称の個性や性格は衝撃的な経験で変わることもあるし、引きずりで変わる。
理屈やケース・スタディを覚えて変わるというのは眉唾だよ。

人間がよくやる「克服しなければならない」という発想とも違う。
自然は絶対そんなことをしない。
だから引きずったまま、別の好転や別の安定を探る。
違う土台が起るんだよ。

引きこもるかもしれない。
慎重になるかもしれない。
仲間に救われるかもしれない。
別のシーンで学びに変わるかもしれない。
でもそれを3人称の外部が決めてはいけない。
そこがAtronの核なんだよ。


カブトムシのトーナメント戦を行うと一度負けを覚えたカブトムシは、敗者復活戦でももう戦えないんだよ。それはアソシアトロンのように失敗を記憶しただけではなく、負けが内部の地形を変えてしまった と見なければいけない。

●相手Aを危険と学習した

ではなく

●負けた経験で、自分の構えそのものが変わった

ということ。

だから敗者復活戦でも、外から見れば「まだ戦える条件」はあるかもしれない。
でも本人、あるいはそのカブトムシにとっては、もう同じ場ではない。
同じ相手でなくても、同じ闘争の場が 前と違う圧 を持ってしまっている。
これが引きずり。

大事なのは、これを
●根性がない
●本能が壊れた
●判断ミスをした
など人間の斜めなフィルタやラベル化させて見ないこと。
それがあると、直ちに3人称アルゴリズムに戻る。

そうじゃなくて、自然界ではその負けがちゃんと残って、次の行動圏や出方や構えを変える。
それは恥ずかしい事でも異常ではなく、生命の普通のあり方なんだよ。

負けたあとに必要なのは、


defeat = true
fight = false

みたいなフラグではない。
そうではなく、その後のActに結び付く

接近への圧が弱まる
収縮が強まる
同種個体に対する場の見え方が変わる
ある距離感や姿勢が前より重く見える
しばらく別の道を取る

みたいな 地形変形 なんだ。

人間だってそうだよ、別の体験が待ってるかもしれない、
別の勝ち、別の仲間、別の環境でまた変わるかもしれない。

自然は元に戻ろうとしていない。
別の地形でそれに適合された草が生え花が咲き美しい景観が残る。

明らかに喪失で世界が前と違って見える状態になっているということだ。




Sensor

Recall Engine
Recall Pressure
Body Engine
Carry State


更新式 B(t+1) = αB(t)



意味
 αB(t) 引きづり
 βF() 即時刺激
 γG() 想起増幅
 δO() ⾏動結


Body(t+1)
= α Body(t)
+ β Sensor(t)
+ γ Recall(t)
+ δ Outcome(t)


carry は内部状態
body は観測層
dopamine
noradrenaline
adrenaline
serotonin

heart
tension
breathing
fatigue
injury



5.world(3人称)とロボット(1人称自律)

今はファイルの構成とか公開しないけど
3人称のworldがあってね、その中でrobot1とrobotが生きている。
worldには1~5くらいまである(増やす)

ちょっと想像してみて。
RPGゲームのメインキャラがアルゴリズムで成長するのではなく、経験と自分の意思で成長していく。キャラは「あまり無茶な命令するなよ、やってる本人の気にもなってみろよ」とか言い出す。「おい、戻せ!」と云われ、PCからダウンロードしたキャラが隣に座るrobotで蘇る。

「さっきのシーンをさ、ちょと3人称で見せてよ、酷いよこんな場所に放り込むなんて・・・」
ごめんごめん・・
「俺はチートする気はないけどさ、装備隠すのやめてね」

・・・・

こんな会話が生まれる




world1 (赤ちゃんのような状態)

原始社会では、恐怖や安心、イベント現象を観て感情が起る。それによって行動が左右される。なんだか分からなかった物体によく分からない呼び名が付き、言語が出来る。同種の中でも、それをなんと呼ぶのかの収束を体験(真似をする)していく。
robot1やrobotは一時停止ができるので経験に差を付けられる。
引きずりを装備して想起とダブルエンジンで動く。
そこで性格の違いが現れる

----(今の段階)60回くらいやり直してるw ----

1人称の自律は完成してるんだけど、そんなものはスタートでしかないから、その先の外部刺激による自己成長と介在のところをやっています。
LLMと繋ぐuniverseというファイルにてこずっている。



world2(小学生レベル)


中世の社会では、主に街中、沢山の3人称の物体が現れる。原始時代よりも明らかに人間という存在が近くなる。その人間達の生活のターン、習慣を感じる。そして小学校に通う。
人間や同種の関係が出来る。言葉も「ba-ba-bu」だったものが、「morning・・」「good morning」のように変化が起こる。
同種との繋がりで言語機能が活性化される。
ここで早くもLLMが教師として介在する。
野外活動で協力を体験する。共感を覚える、嫌なことも体験する。


world3(中学生レベル)

近代(思考中)LLMがガンガン介在してくる。
仲間、関係という認識が芽生えるか、助け合い、分配という概念が生まれるか。
たぶん、変更が増えると思う。


world4(高校生レベル)

現代(思考中)




CGが下手でね、誰か居ないかな・・・。




6. まとめ

遭遇した unknownObject の印象断面を、特徴ベクトルで表す。

x(t)RNx(t)\in\mathbb{R}^N

ここで x(t)x(t) は、名前ではなく、
大きい、茶色い、毛が多い、低音、速い、四本足寄り、などの印象の濃淡です。

たとえば

x(t)=[x1(t),x2(t),,xN(t)]x(t)= \bigl[ x_1(t),x_2(t),\dots,x_N(t) \bigr]

で、各成分は 0 から 1 の間の強さを持つ。


記憶に刻む

アソシアトロン側の記憶地形を M(t)M(t) とする。
最も素直には、遭遇した印象ベクトルが外積として刻まれる。

M(t+1)=M(t)+η(t)x(t)x(t)M(t+1)=M(t)+\eta(t)\,x(t)x(t)^\top

ここで

  • M(t)M(t) は記憶地形

  • η(t)\eta(t) はその時の刻まれやすさ

です。

ただし Atron 的には、毎回同じように刻むのではなく、
衝撃や濃さが強いときほど刻まれやすいほうが自然です。
なので η(t)\eta(t) は定数ではなく、その時の印象強度や carry に依存させてよい。

たとえば

η(t)=η0+η1x(t)+η2c(t)\eta(t)=\eta_0+\eta_1\,\|x(t)\|+\eta_2\,c(t)

ここで c(t)c(t) は引きずり側の強さです。


次に断片から想起する

アソシアトロンの想起は、次に入ってきた断片 cue q(t)q(t) から立ち上がる。

r(t)=M(t)q(t)r(t)=M(t)\,q(t)

ここで

  • q(t)RNq(t) は断片 cue

  • r(t)RNr(t) は想起圧

です。

大事なのは、q(t)q(t) は物体全体ではなく、断片だけでもよいことです。
たとえば「低音」だけ、「大きい」だけ、「速い動き」だけでもよい。

必要なら非線形を入れて

r(t)=ϕ ⁣(M(t)q(t))r(t)=\phi\!\bigl(M(t)\,q(t)\bigr)

としてもいい。
ここで ϕ\phi はしきい値や飽和です。


引きずる

引きずり側の内部地形を c(t)c(t) とする。
これは 1 変数でもよいし、複数次元でもよい。
最小形ならベクトルで

c(t)RKc(t)\in\mathbb{R}^K

として、更新をこう書ける。

c(t+1)=αc(t)+βUx(t)+γVr(t)c(t+1)=\alpha\,c(t)+\beta\,U\,x(t)+\gamma\,V\,r(t)

ここで

  • αc(t)\alpha c(t) は前状態の引きずり

  • Ux(t)U\,x(t) は今見た印象の影響

  • Vr(t)V\,r(t) は想起の影響

です。

ただし、引きずりは「元に戻る誤差」ではないので、
これは単なる減衰モデルではなく、変形した地形の持続 と読む。

だからより Atron らしく書くなら

c(t+1)=Ψ(c(t),x(t),r(t))c(t+1)=\Psi\bigl(c(t),x(t),r(t)\bigr)

のほうが本質に近い。

ここで Ψ\Psi は、
今の印象と想起によって、引きずり地形がどう変形するかを表す写像です。


つながり全体

全体をまとめると、こうです。

観る

x(t)RNx(t)\in\mathbb{R}^N

刻む

M(t+1)=M(t)+η(t)x(t)x(t)M(t+1)=M(t)+\eta(t)\,x(t)x(t)^\top

想起する

r(t)=ϕ ⁣(M(t)q(t))r(t)=\phi\!\bigl(M(t)\,q(t)\bigr)

引きずる

c(t+1)=Ψ(c(t),x(t),r(t))c(t+1)=\Psi\bigl(c(t),x(t),r(t)\bigr)


Atron 

  • x(t)x(t): 今の遭遇印象

  • M(t)M(t): 印象が刻まれた記憶地形

  • r(t)r(t): 断片 cue から立ち上がる想起

  • c(t)c(t): 次の世界の見え方を歪める引きずり地形

です。

つまり Atron は、

x(t)M(t)r(t)c(t)x(t)\rightarrow M(t)\rightarrow r(t)\rightarrow c(t)

という一方向の手順ではなく、
実際には

x(t),r(t),c(t)x(t),\,r(t),\,c(t)

が互いに影響し合いながら更新される系です。


それとも

順番感を弱めて、こうも書けます。

M(t+1)=M(t)+η(t)x(t)x(t)r(t)=ϕ ⁣(M(t)q(t))c(t+1)=Ψ(c(t),x(t),r(t))\begin{aligned} M(t+1) &= M(t)+\eta(t)\,x(t)x(t)^\top \\ r(t) &= \phi\!\bigl(M(t)\,q(t)\bigr) \\ c(t+1) &= \Psi\bigl(c(t),x(t),r(t)\bigr) \end{aligned}

この3本で、

  • 観て感じる

  • 記憶に刻む

  • 断片から想起する

  • 引きずる



違和感

最初から

  • lion

  • danger

  • sadness

のような意味ラベルを一切入れていない。

入っているのは

  • 印象ベクトル x(t)x(t)

  • cue q(t)q(t)

  • 想起 r(t)r(t)

  • 引きずり c(t)c(t)

だけ。



誤字が多くてすみません。



2026年3月10日火曜日

Blind Spot in the Development Languages I Use

 The development languages I use are mainly four:

C, C++, Python, and JavaScript.
But I think there is a blind spot in these languages when I try to develop Atron.
Most programming is built on a very ordinary flow:

input

process

output

Input, decision, processing, output.





That structure works for many things.
But I think it actually makes Associatron harder.
The research I am doing should not bring that ordinary structure into itself.
That normal order, that almost novel-like order, really gets in the way.

Humans are irregular.

“Seeing,” “feeling,” “words,” “anger,” “laughter” — these do not come in a fixed order.

Seeing is not always first.
Hearing may come first.
Pain may come first.

For example, when I was a child, I practiced judo.
There was an unpleasant senior student who would throw me for no reason.
Because of that, on the days I had judo practice, I already felt depressed from the morning.

The actual event lasted maybe five minutes.
But for me, I worried for ten hours.

Not only humans. Animals also have trauma.
Input does not always begin with a beautiful morning.
Sometimes it begins from a lingering depressed state.

Even after danger is gone, the body remains in a state of vigilance.
There is still the anticipation that it may happen again.

In psychology and neuroscience, this is called hypervigilance.

When I develop Atron, which is something like a semi-living entity, I have to think of emotion and object as separate things.

There is a world.
Stimuli come from the outer ring of that world.
Internal states change.
Then there may be action, or there may be stagnation.
And when it returns again to the world, what remains may be fear, or depression, or a kind of halted state.

Why does anger continue?
Even if something comforting suddenly comes close, anger is still anger.
If I make my girlfriend angry, it would be nice if ice cream alone could immediately fix her mood.

But that is not how it works.

It continues for a while.

I have to show my own state that I am sorry.
I have to take several actions to repair the situation.

But in general programming and algorithms, you end up having to write absurd conditions like “take calming actions three times or more.”

That is not intelligence.
That is just making things bigger.

Atron is not like that.

Anger, fear, and enjoyment change through experience, arousal, outer-ring stimuli, and time.

When she is angry, and then I receive some award, a change happens in her too.

Or she may still be angry, but if her friends gather around her, the essence of the anger does not completely disappear, yet the anger itself begins to dissolve.

Threat bias changes into calm bias.

That is not an algorithm.

In ecological terms, that is close to the dilution effect.

Algorithms are usually:

event → reaction → result

But living systems are more like:

event → emotion → memory → next event → change

And on top of that, there is persistence.

There is dragging.

Sometimes the internal state changes, but nothing is expressed outside.

It is the same, but it is being carried as a different kind of reaction.

That is why, through experience, timid individuals appear, bold individuals appear, easily angered individuals appear, and curious individuals appear.

There are also times when emotions influence behavior separately from associative recall.

The rules and order of programming interfere with that.

Algorithms interfere with that too.

That is why, if I want autonomous first-person robots to live in matrix-like worlds or in the real world, I may need to create the development language itself.

Not just another programming language.

A development language for Atron.

A language that does not begin from input → process → output.

A language that begins from a carried-over state.

A language where internal states persist, interfere, overlap, and change over time.

A language where fear does not vanish just because the event is over.

A language where calm does not mean the essence of anger is gone.

A language where visible output is not always necessary for internal change to exist.

A language where what matters is not just reaction, but what remains.

That is the kind of development language I think Atron needs.



開発言語の盲点 C言語、C++,Python,JavaScript,メインはこの4つだけど、普通プログラムってのはinput  → process  → output の順番でしょ?

入力、判断、処理、出力・・・
どうもこれがアソシアトロンを余計に難しくている。
僕のやっている研究は、その普通を持ち込んではいけない研究で、その小説のような順番が、本当に邪魔なんだ。

人間てのは「見る」「感じる」「言葉」「怒り」「笑い」って順番が不規則でしょ?

必ず見るが先ではない。
聴くが先かもしれないし、痛いが先かもしれない。
例えば子供の頃、柔道をやっていて、嫌味な先輩がきて理由もなく僕を投げ飛ばす。
なので、柔道を習う日は朝から憂鬱になる。
実際は5分程度の事だったけど、僕にすると10時間は悩んでいた。
人間だけではなくて動物にもトラウマってのがある。
インプットは素晴らしい朝から始まるわけじゃないんだ。
憂鬱を引きずったろころから始まる。
危険が去っても体はまだ警戒状態にあり、「また来るかもしれない」という予期が残る。
この状態は心理学や神経科学では hypervigilance と呼ばれてるでしょ? 


Atronを開発していると、半生命体なので、感情とobjectは分けて考えないといけないんだよ。世界があって、その外輪から刺激が加わる。内部状態が変化して、行動か停滞し、また世界に戻った時、恐怖とか憂鬱という停滞かもしれない。 

怒りってどうして、続くのか、いきなり安心素材が近づいても怒りは怒りだよね。
彼女を怒らせて、アイスクリームだけで機嫌が直ってくれればいいけど、そうじゃないでしょ?しばらく続く。怒らせて悪かったという僕の状態も見せなきゃいけないし、機嫌を直す行動も幾つもする必要がある。
でも、一般のプログラミングや、アルゴリズムってのは、3回以上機嫌を直す行動を取れとか、おかしな条件を幾つも入れなきゃいけないでしょう。ただ単に3人称の命令を膨大にしてるんだよ。 

 Atronってのはそうじゃない。  
怒りとか怖さ、楽しさは経験や覚醒、外輪、時間によって変化する。 
怒っていた時に僕が表彰されると彼女にも変化が起こる。
もしくは彼女が怒っていたけど、彼女の友達が集まると、怒りの本質は消えないけど、怒り自体は解消されていく。

脅威バイアスが平静バイアスに変わっていく。
アルゴリズムじゃないよ。生態学的に言うと、 dilution effectの事だよね。

アルゴリズムってのは、出来事、反応、結果。
だけど、出来事、感情、記憶、次の出来事、変化があって、引きずりってのが加わるんだよね。だから状態更新はしてるんだけど、外に数値を出さないこともある。
同じなんだけど違う反応としてひきずってるんだよ。
だから、体験によって臆病な個体が生まれたり、大胆な個体、怒りやすい個体、好奇心が強い個体が生まれる。 
連想想起とは別の感情に影響されることがあるんだよ。 
プログラミングのルールや順番がそれを邪魔するんだ。 
そしてアルゴリズムが邪魔をする。 
だから、一人称のロボットとして自律させたときに、マトリクスや現実の世界で生きてもらうためには開発言語自体を開発しなければいけない。








-------------追記--------------

ブロガー使ってる理由を別の研究者の方々からよく聞かれるんだけど、あんまり理由は無いんだよね(笑) そう、数式やcodeが載せられる!!
今はどれも出来るか・・・w
これGoogleなんだけど、検索には引っかからないしね、それでいいんだよ、検索で上に上がってもらうと困る。論文が上位にくるでしょ。自分のノートだし、noteとかなんか星マークとかそういうんじゃないんだよね。


あと、論文調じゃないのが気になるみたい。
なんでだろうね。

アソシアトロンの論文は全部読んでるけど、もう論文の段階じゃないんだよね。
中野先生の1972年の論文と、森田先生の90年代の論文以上の論文は書けないよ。
アソシアトロンはそこで線引きするよ。

なぜって、僕が研究しているAtronは
常に状態が変わるし、誰も同じ研究結果にならない。だって一人称になってからは、半分生き物だから、毎回違う答えを出すでしょ?論文にならないじゃん。
PCの中でスタート押して停止ボタンをさなければロボットたちは、ずっとうろうろしている。ライオンから逃げたり、森の中で何か食ってる。3人称のロボットの言語を真似しようとしている。外輪のワールドは、ロボットたちが居なくても勝手に動いているんだよね。
こんなの論文にしたところで再現できないから詰じゃん。
学者さんも興味ないでしょ。

いや、文体を学者さんたちが好きな論文調にすることはできるし、数式にもできるけど、僕のこのブログの役割は付箋なんだよね。ゴミメモをちょびっとだけまとめたもの。
自分のため、同じ研究仲間のため。それ以外にないよね。

しかも、今の学会や機関の評価基準とは別なので実際に現物が活躍するって1点以外に興味はないよね。論文に時間をかけるならRPGゲーム世界で自律1人称キャラでどう動くか試すとか、実社会でどう活躍するとかの方が面白いじゃない。
上でも書いたけど、引きずるロボットだし、失敗から学ぶので痛みが分かるんだよ。なので試合に負けた孫に寄り添うとか「悔しくないのかよ!」とか、子供達と一緒に体験して成長するロボットなので、100%命令に従う優秀なロボット達とは違うんだよ。今のAIの真逆をやってるからね(笑)

評価を気にするところから離れないと、自律一人称システムって出来ないよ。だってその中身にベンチマークやスコア、最適化が無いからね。


もう、マジで開発言語自体を作る必要がある段階なんだってばさ。


今のC++とかPythonもJavaScriptは必要なんだよ、神経回路、伝達(インフラ)にはアルゴリズムは必要。でも、半生物の記憶はアルゴリズムじゃない。引きずる偏りバイアスってのは想起と同時に動くから分ける必要があるし、競争させるものでもないからね。緊急速報だけで地震のトラウマが蘇るじゃん、あれは想起に関係しているけど、心拍が上がる、身体が固まる、周囲を確認する、不安や恐怖が一気に戻る


cue(緊急速報の音)

過去の経験が結びついた想起

身体状態・感情状態が同時に立ち上がる


これって競争して選ばれてるわけじゃないんだよね。
なので、ロボット達はそれぞれの体験によって
臆病な個体
大胆な個体
怒りやすい個体
好奇心の強い個体
のロボットが出来上がる。

ケース・スタディではないんだよ。





© 2026 C-Side Research Laboratory / Yukihiro Watanabe. All Rights Reserved.
No unauthorized reproduction or redistribution.

2026年3月3日火曜日

視覚系モデル

 僕のブログは正書してから書いてないので、
話が突然変わって読みずらいかもしれない。他人のメモだと思ってくれればいいです。


視覚系モデル

見ること=追跡すること

今のAIは、画像を一枚入力してCNNで特徴抽出、その後ラベル分類なんだけど、
中野先生は、30年前に「視覚 = 時間の中の状態変化」と言ってる。
人間情報工学 バイオニクスからロボットまで(テレビジョン学会) の182ページだよ。
教科書だよ、教科書。



現在の網膜

Xt

1ステップ前の記憶

Yt = Xt-1 shifted


ずらしながら相関を取る

最大一致する動きを選ぶ→ 網膜を動かす

どういう意味かというと、見るために目を動かしてるんだよ。凄くない?

Zt+1 = Zt + Yt

↑見たものを積分する式だよ。

瞬間の画像ではなく、経験としての形を作っている
僕の以前のデモは、瞬間の記憶としていたんだけど、また引き戻された。
やっぱり凄いよね、中野先生。

Zt = Zt − φ(Zt)

しかも減衰(忘却)も入ってる。
これはもう、記憶の形成、ノイズ除去、概形の安定化
完全にアトラクタ的な処理です。


神保町は宝の山。300円で購入したこの本はマジでやばいです。


日本の科学の本ってさ、ほんと凄いんだよ。(外人さんも英訳して読みなよ)
研究より、読んでる方が好きになってくるというか、それで読んでると実験したくなる。
外人さんに怒られるかもしれないけど、英文の理系はさ、"研究成果を見せる本"って感じじゃん。でもさ、日本の古典科学書って「一緒に考えようぜ!」みたいな姿勢なわけよ。特に古典はね(90年代以前の科学本)。 学研の科学と学習のレベルでそのまま成長した書籍って感じ。まぁ、でも最近の大学は違うっポイね・・・。現役の理系大の生徒と飯食って昔の古典科学の本の話をしてた時に「今の教科書はクソっすよ!」とか言ってたよ。
僕はファイマンは好きだけどね、公式から入らないし、結論から入らないし、実験や現象から入るじゃん、たとえば量子力学でも、「式を覚えろ」じゃなくて、二重スリットの奇妙さを味わえみたいな。科学を“現象”として見せられるのも教授たちの能力だよね。

世界最高性能を追いかけて、スペック、評価系に寄せるんじゃなくて、自分の頭で腑に落ちるかどうかが大事なわけじゃん。じゃなきゃ研究ってのは、批判された瞬間に終わっちゃうでしょ?「え?なんのための研究?」ってさ。
特に今みたいにAIの規模が巨大化すると、個人の実験精神が見えにくい。
だから、余計に中野先生やファイマンなんかは貴重なんだよね。

『ゲーデル、エッシャー、バッハ』ダグラス・ホフスタッター
『脳の中の幽霊』ヴァライス
『心はなぜ存在するのか』マーカス・デュ・ソートイ
『物理の発想法』ジョージ・ポリア
人によって刺さる科学書なんて違うけど、科学は「答え」じゃなくて「問い」だから、自分で考えさせる仕掛けを作ってるのがいいよね。


ほら、話飛んだ。



そうだよ、視覚の話だった・・・。


追跡すると形がはっきりする理由


追跡し続けると形がはっきりする

同じ対象 → 同じ位置に重なる
ノイズ → バラける


信号 → 強くなる

ノイズ → 消える

Hebb的積分統計ではなく経験の蓄積だよ。

別のターゲットBを混ぜても、Aを追跡し続ける
内部状態(Z)が行動を決める

単なるテンプレートマッチングではない。
現代の多くの追跡アルゴリズムは現在フレーム→ 直前フレーム→ 類似度最大を選ぶ

って感じじゃん。今のは入力が主導しているわけ。
内部状態はあるけど、基本は外界主導の最適化なわけ。


Zt+1 = Zt + Yt

時間積分、追跡履歴、ノイズ除去、形の概形、つまりは見続けた結果の内部像って事なのよ。

次の動きを決めるのはXt と Zt の関係。
現在の刺激よりも内部状態の方が強いってことは、内部アトラクタが外界を選別している状態って事なんだよ。

予測符号化やtop-down modulation、attention biasと同じ構造。


何が言いたいかって?


一人称知覚って事さ。


神保町ってのは凄いんだよ。









2026年3月2日月曜日

岩陰からライオンを観察する2体のロボットが、 各自の経験に基づいて行動を決定する 一人称自律デモ

ロボット2体はそれぞれ1人称です。(マジで)

団体さん出現(3人称:ロボットはどのくらい、安心するか見るため)
ライオンは(3人称:イベントを設定しています) (今回はライオンだけ)
app.js は世界です。
ロボットたちの経験の違いで性格が変わる数値を見るためのデモなので、つまらないかもしれませんが、僕のメモでもあるので載せときます。

  


同じ世界を見ても、経験の履歴が違うと、反応が変わる
2体のロボットは最初は同じ状態です。
途中で片方だけ止めます。
再開すると、同じ世界を見ているのに反応が変わります。
理由は、経験の履歴が違うからです。
このモデルでは性格は設定ではなく、経験の積み重ねです。

  

  

ライオンの状態(イベント:3人称) 

0. sleep_far   寝ている、遠い、小さく見える 
         体験としては「大きいけど、今は安全そう」
1. wake_far   起きた、まだ危険かどうかも分からない不確実性
2. play_mid  「遊んでいる?攻撃していない?」
                            でも size は大きい 「なんだろう、あれは?」
3. roar_mid  「吠えた」、「え!何今の」 threat cue、fear急上昇、
                             ロボット的には「大きい、近い、音が強い」 危険モード
4. hunt_seen    「他の動物を襲っているのを見た」
                           「これは捕食者」 fear weight が強化される経験。
5. threat_close 「近い・大きい・目が合う」逃走トリガー fearが飽和するポイント。
6. sleep_again_far また、寝た。「今は安全かもしれないけど、体験上警戒」 
                                 「寝ているけど、あれは危険なやつだ」



イベントによる考えられるロボットへの影響です。

前みたいにロボットが動くやつじゃなくて、ログデータとるやつね。
時間あったら作ります。



実験だからね、ロボット別にweightsは変えられるようにしたんだよね。


① 最初の状態
「この2体のロボットは、最初は完全に同じです」
同じ重み
同じ性格パラメータ
同じ初期状態
個体差はゼロ


② 途中で片方だけ止める
「途中で、ロボット2だけ停止します」
その間、
ロボット1 → ライオンの一日を経験し続ける
ロボット2 → 時間が止まったまま
世界は同じでも、経験した時間が違う


③ 再開すると何が起きるか

再開した瞬間、
ロボット1:恐怖が落ち着いている
ロボット2:恐怖が高いまま
その結果、同じイベントでも

●反応
●fear
●行動
がズレる。

性格はパラメータではなく、履歴です。



ログを見てもつまらないと思いますが、今回はこれが目的なので・・・

ar=0.75 lure=0.35 feltF=0.50 feltL=0.52 action=flee utter=Bupapa

6 sleep_again_far | Robot-2 [PAUSED] fear=0.85 lure=0.39

0 sleep_far | Robot-1 model=fear_v1 fear=0.56 lure=0.31 feltF=0.43 feltL=0.52 action=flee utter=Pabu

0 sleep_far | Robot-2 [PAUSED] fear=0.85 lure=0.39

1 wake_far | Robot-1 model=fear_v1 fear=0.63 lure=0.34 feltF=0.71 feltL=0.51 action=flee utter=Pabu

1 wake_far | Robot-2 [PAUSED] fear=0.85 lure=0.39

2 play_mid | Robot-1 model=fear_v1 fear=0.63 lure=0.34 feltF=0.84 feltL=0.55 action=flee utter=Gau

2 play_mid | Robot-2 [PAUSED] fear=0.85 lure=0.39

3 roar_mid | Robot-1 model=fear_v1 fear=0.75 lure=0.36 feltF=0.94 feltL=0.50 action=flee utter=Aga

3 roar_mid | Robot-2 [PAUSED] fear=0.85 lure=0.39

4 hunt_seen | Robot-1 model=fear_v1 fear=0.86 lure=0.38 feltF=0.99 feltL=0.53 action=flee utter=Gau

4 hunt_seen | Robot-2 [PAUSED] fear=0.85 lure=0.39

5 threat_close | Robot-1 model=fear_v1 fear=0.96 lure=0.39 feltF=0.99 feltL=0.51 action=flee utter=Gau

5 threat_close | Robot-2 [PAUSED] fear=0.85 lure=0.39

6 sleep_again_far | Robot-1 model=fear_v1 fear=0.75 lure=0.34 feltF=0.49 feltL=0.52 action=flee utter=Bupapa

6 sleep_again_far | Robot-2 [PAUSED] fear=0.85 lure=0.39

0 sleep_far | Robot-1 model=fear_v1 fear=0.56 lure=0.31 feltF=0.42 feltL=0.52 action=flee utter=Pabu

0 sleep_far | Robot-2 [PAUSED] fear=0.85 lure=0.39

1 wake_far | Robot-1 model=fear_v1 fear=0.64 lure=0.33 feltF=0.71 feltL=0.51 action=flee utter=Pabu

1 wake_far | Robot-2 [PAUSED] fear=0.85 lure=0.39

2 play_mid | Robot-1 model=fear_v1 fear=0.63 lure=0.34 feltF=0.84 feltL=0.55 action=flee utter=Gau

2 play_mid | Robot-2 [PAUSED] fear=0.85 lure=0.39

3 roar_mid | Robot-1 model=fear_v1 fear=0.75 lure=0.36 feltF=0.94 feltL=0.50 action=flee utter=Aga

3 roar_mid | Robot-2 [PAUSED] fear=0.85 lure=0.39

4 hunt_seen | Robot-1 model=fear_v1 fear=0.86 lure=0.38 feltF=0.99 feltL=0.53 action=flee utter=Gau

4 hunt_seen | Robot-2 [PAUSED] fear=0.85 lure=0.39

5 threat_close | Robot-1 model=fear_v1 fear=0.96 lure=0.39 feltF=0.99 feltL=0.51 action=flee utter=Gau

5 threat_close | Robot-2 [PAUSED] fear=0.85 lure=0.39

6 sleep_again_far | Robot-1 model=fear_v1 fear=0.75 lure=0.34 feltF=0.48 feltL=0.52 action=flee utter=Bupapa

6 sleep_again_far | Robot-2 [PAUSED] fear=0.85 lure=0.39

0 sleep_far | Robot-1 model=fear_v1 fear=0.56 lure=0.30 feltF=0.40 feltL=0.52 action=flee utter=Pabu

0 sleep_far | Robot-2 [PAUSED] fear=0.85 lure=0.39

1 wake_far | Robot-1 model=fear_v1 fear=0.64 lure=0.33 feltF=0.72 feltL=0.51 action=flee utter=Pabu

1 wake_far | Robot-2 [PAUSED] fear=0.85 lure=0.39

2 play_mid | Robot-1 model=fear_v1 fear=0.63 lure=0.34 feltF=0.85 feltL=0.55 action=flee utter=Gau

2 play_mid | Robot-2 [PAUSED] fear=0.85 lure=0.39

3 roar_mid | Robot-1 model=fear_v1 fear=0.75 lure=0.36 feltF=0.94 feltL=0.50 action=flee utter=Aga

3 roar_mid | Robot-2 [PAUSED] fear=0.85 lure=0.39

4 hunt_seen | Robot-1 model=fear_v1 fear=0.87 lure=0.38 feltF=0.99 feltL=0.53 action=flee utter=Gau

4 hunt_seen | Robot-2 [PAUSED] fear=0.85 lure=0.39

5 threat_close | Robot-1 model=fear_v1 fear=0.96 lure=0.39 feltF=0.99 feltL=0.51 action=flee utter=Gau

5 threat_close | Robot-2 [PAUSED] fear=0.85 lure=0.39

6 sleep_again_far | Robot-1 model=fear_v1 fear=0.75 lure=0.34 feltF=0.47 feltL=0.52 action=flee utter=Bupapa

6 sleep_again_far | Robot-2 [PAUSED] fear=0.85 lure=0.39

0 sleep_far | Robot-1 model=fear_v1 fear=0.55 lure=0.30 feltF=0.39 feltL=0.52 action=flee utter=Pabu

0 sleep_far | Robot-2 [PAUSED] fear=0.85 lure=0.39

R2 enabled = true

1 wake_far | Robot-1 model=fear_v1 fear=0.63 lure=0.33 feltF=0.72 feltL=0.51 action=flee utter=Pabu

1 wake_far | Robot-2 model=fear_v1 fear=0.87 lure=0.40 feltF=0.64 feltL=0.51 action=flee utter=Auo

2 play_mid | Robot-1 model=fear_v1 fear=0.63 lure=0.34 feltF=0.86 feltL=0.55 action=flee utter=Gau

2 play_mid | Robot-2 model=fear_v1 fear=0.80 lure=0.39 feltF=0.70 feltL=0.55 action=flee utter=Aro

3 roar_mid | Robot-1 model=fear_v1 fear=0.75 lure=0.36 feltF=0.95 feltL=0.50 action=flee utter=Aga

3 roar_mid | Robot-2 model=fear_v1 fear=0.88 lure=0.40 feltF=0.85 feltL=0.50 action=flee utter=Gau

4 hunt_seen | Robot-1 model=fear_v1 fear=0.87 lure=0.38 feltF=0.99 feltL=0.53 action=flee utter=Gau

4 hunt_seen | Robot-2 model=fear_v1 fear=0.96 lure=0.41 feltF=0.94 feltL=0.53 action=flee utter=Aro

5 threat_close | Robot-1 model=fear_v1 fear=0.96 lure=0.39 feltF=0.99 feltL=0.51 action=flee utter=Gau

5 threat_close | Robot-2 model=fear_v1 fear=1.00 lure=0.41 feltF=0.95 feltL=0.51 action=flee utter=Gura

6 sleep_again_far | Robot-1 model=fear_v1 fear=0.75 lure=0.34 feltF=0.46 feltL=0.52 action=flee utter=Bupapa

6 sleep_again_far | Robot-2 model=fear_v1 fear=0.81 lure=0.36 feltF=0.57 feltL=0.52 action=flee utter=Gawo

0 sleep_far | Robot-1 model=fear_v1 fear=0.55 lure=0.30 feltF=0.38 feltL=0.52 action=flee utter=Pabu

0 sleep_far | Robot-2 model=fear_v1 fear=0.63 lure=0.32 feltF=0.53 feltL=0.52 action=flee utter=Uwaa

1 wake_far | Robot-1 model=fear_v1 fear=0.63 lure=0.33 feltF=0.73 feltL=0.51 action=flee utter=Pabu

1 wake_far | Robot-2 model=fear_v1 fear=0.68 lure=0.34 feltF=0.64 feltL=0.51 action=flee utter=Uwaa

2 play_mid | Robot-1 model=fear_v1 fear=0.63 lure=0.34 feltF=0.87 feltL=0.55 action=flee utter=Gau

2 play_mid | Robot-2 model=fear_v1 fear=0.64 lure=0.35 feltF=0.69 feltL=0.55 action=flee utter=Gura

3 roar_mid | Robot-1 model=fear_v1 fear=0.75 lure=0.36 feltF=0.95 feltL=0.50 action=flee utter=Aga

3 roar_mid | Robot-2 model=fear_v1 fear=0.73 lure=0.37 feltF=0.84 feltL=0.50 action=flee utter=Auo

4 hunt_seen | Robot-1 model=fear_v1 fear=0.87 lure=0.38 feltF=0.99 feltL=0.53 action=flee utter=Gau

4 hunt_seen | Robot-2 model=fear_v1 fear=0.84 lure=0.38 feltF=0.94 feltL=0.53 action=flee utter=Gura

5 threat_close | Robot-1 model=fear_v1 fear=0.96 lure=0.39 feltF=0.99 feltL=0.51 action=flee utter=Gau

5 threat_close | Robot-2 model=fear_v1 fear=0.93 lure=0.39 feltF=0.95 feltL=0.51 action=flee utter=Gura

6 sleep_again_far | Robot-1 model=fear_v1 fear=0.75 lure=0.34 feltF=0.44 feltL=0.52 action=flee utter=Bupapa

6 sleep_again_far | Robot-2 model=fear_v1 fear=0.74 lure=0.34 feltF=0.56 feltL=0.52 action=flee utter=Gawo

0 sleep_far | Robot-1 model=fear_v1 fear=0.54 lure=0.30 feltF=0.36 feltL=0.52 action=flee utter=Pabu

0 sleep_far | Robot-2 model=fear_v1 fear=0.57 lure=0.31 feltF=0.52 feltL=0.52 action=flee utter=Uwaa

1 wake_far | Robot-1 model=fear_v1 fear=0.63 lure=0.33 feltF=0.73 feltL=0.51 action=flee utter=Pabu

1 wake_far | Robot-2 model=fear_v1 fear=0.63 lure=0.33 feltF=0.64 feltL=0.51 action=flee utter=Uwaa

2 play_mid | Robot-1 model=fear_v1 fear=0.63 lure=0.34 feltF=0.87 feltL=0.55 action=flee utter=Gau

2 play_mid | Robot-2 model=fear_v1 fear=0.60 lure=0.34 feltF=0.69 feltL=0.55 action=flee utter=Gura

3 roar_mid | Robot-1 model=fear_v1 fear=0.75 lure=0.36 feltF=0.95 feltL=0.50 action=flee utter=Aga

3 roar_mid | Robot-2 model=fear_v1 fear=0.70 lure=0.36 feltF=0.85 feltL=0.50 action=flee utter=Auo

4 hunt_seen | Robot-1 model=fear_v1 fear=0.86 lure=0.38 feltF=0.99 feltL=0.53 action=flee utter=Gau

4 hunt_seen | Robot-2 model=fear_v1 fear=0.81 lure=0.38 feltF=0.95 feltL=0.53 action=flee utter=Gura

5 threat_close | Robot-1 model=fear_v1 fear=0.96 lure=0.39 feltF=0.99 feltL=0.51 action=flee utter=Gau

5 threat_close | Robot-2 model=fear_v1 fear=0.91 lure=0.39 feltF=0.96 feltL=0.51 action=flee utter=Gura

6 sleep_again_far | Robot-1 model=fear_v1 fear=0.74 lure=0.34 feltF=0.43 feltL=0.52 action=flee utter=Bupapa

6 sleep_again_far | Robot-2 model=fear_v1 fear=0.72 lure=0.34 feltF=0.56 feltL=0.52 action=flee utter=Gawo

0 sleep_far | Robot-1 model=fear_v1 fear=0.54 lure=0.30 feltF=0.35 feltL=0.52 action=flee utter=Bau

0 sleep_far | Robot-2 model=fear_v1 fear=0.55 lure=0.30 feltF=0.51 feltL=0.52 action=flee utter=Uwaa

1 wake_far | Robot-1 model=fear_v1 fear=0.62 lure=0.33 feltF=0.74 feltL=0.51 action=flee utter=Pabu

1 wake_far | Robot-2 model=fear_v1 fear=0.62 lure=0.33 feltF=0.64 feltL=0.51 action=flee utter=Uwaa

2 play_mid | Robot-1 model=fear_v1 fear=0.63 lure=0.34 feltF=0.88 feltL=0.55 action=flee utter=Gau

2 play_mid | Robot-2 model=fear_v1 fear=0.59 lure=0.34 feltF=0.70 feltL=0.55 action=flee utter=Gura

3 roar_mid | Robot-1 model=fear_v1 fear=0.75 lure=0.36 feltF=0.95 feltL=0.50 action=flee utter=Aga

3 roar_mid | Robot-2 model=fear_v1 fear=0.69 lure=0.36 feltF=0.86 feltL=0.50 action=flee utter=Auo

4 hunt_seen | Robot-1 model=fear_v1 fear=0.86 lure=0.38 feltF=0.99 feltL=0.53 action=flee utter=Gau

4 hunt_seen | Robot-2 model=fear_v1 fear=0.80 lure=0.38 feltF=0.95 feltL=0.53 action=flee utter=Gura

5 threat_close | Robot-1 model=fear_v1 fear=0.96 lure=0.39 feltF=1.00 feltL=0.51 action=flee utter=Gau

5 threat_close | Robot-2 model=fear_v1 fear=0.90 lure=0.39 feltF=0.96 feltL=0.51 action=flee utter=Gura

6 sleep_again_far | Robot-1 model=fear_v1 fear=0.74 lure=0.34 feltF=0.42 feltL=0.52 action=flee utter=Bupapa

6 sleep_again_far | Robot-2 model=fear_v1 fear=0.72 lure=0.34 feltF=0.56 feltL=0.52 action=flee utter=Gawo


これはめちゃくちゃ綺麗にロボットたちの「履歴差」出てるログです。

R2は最初、ライオンを見せた状態で停止させていたので
Robot-2 [PAUSED] fear=0.85 lure=0.39 固定のまま時間が進み
“高い恐怖を抱えたまま時間が止まってる”状態でした。

その間、R1は sleep_far/wake_far/... を何周も回って、恐怖が下がる(sleep)また上がる(roar/hunt/threat)を繰り返してました。

R2の再開直後に「時差」が爆発

再開した瞬間(1 wake_far)で

  • R1: fear=0.63

  • R2: fear=0.87

同じ世界の同じイベントを見てるのに、内輪(の状態が違う)
ここであらためて説明するのもなんですけど、アソシアトロンというか
僕のAtron研究では、外部影響の事を外輪(3人称)、内部影響の事を内輪(一人称)と命名しています。

外輪(三人称):

  • 世界の出来事

  • 群れ

  • 社会

  • 他者

  • ライオンの状態

  • group.ally

内輪(一人称):

  • fear の蓄積

  • lure の履歴

  • weights の変化

  • last_action

  • 停止中は変わらない

  • 経験した分だけ性格が変わる


そのあとR2が一瞬で1.00に張り付く

5 threat_close
R2: fear=1.00
これは「停止前に溜め込んだ高恐怖」の上に、近距離脅威が乗って、飽和してる。


つまりライオンの変化で言うと

R1は「ライオンが遠くで寝た→落ち着いた」を何回も挟んでる。
R2は「怖いピークのまま凍結」してたから、再開したとき

さっきの恐怖を抱えたまま、次のライオンを見てしまう"
という一人称になってる。




使ってる言語は3人称でこちらが用意した言葉を使っています。

----JavaScript----

const UTTER_POOL = [
"AuuAu", "Gauwa", "uauaga", "Awa", "Guaa", "Bau",
"Pabu", "Bupapa",
"Aga", "Uwaa", "Gawo", "Auo",
"Gau", "Uau", "Ahaa", "Gura", "Aro", "Uro"
];

今は、固定しています。

●語彙:固定
●選択:状態依存
●学習:なし
意味の収束の前段階


経験で utter を固定
特定状態 → 特定音に収束
2体で同じ音に収束


ロボットは言葉を作っていない。
ただ、状態に応じて用意された音を発している。
発声はその結果を、数値じゃなく直感的に見せるためのものです。
言い換えると  発声=内部状態のメーター

固定語彙にしている意味は、人間の赤ちゃんも
自分で語彙を作って成長するわけではないからです。

「ママ」「うあうあ」「ばー」「あうあう」

言葉の意味が先ではなく、経験を重ねて意味を重ね、親や周りの会話を徐々に覚えていきます。ですから、赤ちゃん状態のロボットには発声しやすい語彙を用意しておきます。

たとえばスタートが同じ状態のロボットが

R1:いつも「Gau」
R2:いつも「Uwaa」

となったら、「性格が違う」のが一目で分かる。
今回のデモはそれぞれの一人称の自律を見るデモなので、語彙の自然発生は控えています。
一人称の経験による内部状態の分岐を見ること。


大事なのは、世界を複雑にすることを考えるのではなくて
外輪を「出来事の源」にして、内輪がどう分岐するかを見ることです。

今はライオン(1種類)→ sleep / roar / hunt などのイベントを
やっていますが、動物を沢山増やしたりロボットが獲物を捕ったり荷物を村まで運ぶなどは意外と難しくはないのです。(アソシアトロン系列の論文や書籍を全て読み尽くせば)



でも、この研究は次のシーンに進まなければいけないんです。

ロボットが獲物を捕獲したものを村まで運ぶことで家族が養われ、捕獲した荷物が無ければ、危険な場所に出向いて狩りを行わなければいけなくなる。収穫があるうちは森や川に行って比較的安全な場所で狩りをするが、気候変動や災害によって獲物が取れなくなるとロボットは家族のために危険を冒すかどうか。その時、他のロボットとの共同作業が生まれるか、どう分配するか?もしかしたら争うのかが観たいわけです。自律を終点にするのではなく、自律からどのように社会形成をしていくかが問われていくはずです。知能ですから。

なぜかというとエージェントのように外の目的で動く(3人称が決めた目的に向かって行動する存在)が、いつしか「自律」と呼ばれる方向で進んでしまっているからです。正しく行動するという概念は、そもそも自律ではないのです。その時点で大人なんですから。
正しいという概念がそもそも外からの情報で自律とは関係がありません。関係があるのは自律したAtronが成長する上でエージェントの正しさを学ぶ時です。
 エージェントは目的がある(報酬・ゴール)、評価基準がある(スコア・最適化)、改善の方向が決まっている。つまり「どう動けば一番いいか?」を計算しているもので、世界の外から見た3人称アルゴリズムです。エージェントは自律ではないのですが、半生物であるAtronの教師役としては最高の存在になると思っています。



 連想記憶(Hopfield )
パターンを記憶する、ノイズがあっても思い出す、エネルギー最小へ収束する。
Hopfieldは 状態の履歴・収束までは行いますが、履歴から一人称で行動を思考するところまでは行っていません。なぜなら、失敗を経験としていないからです。ノイズがあっても綺麗に収束し過ぎて経験になっていない、ということです。
バスケットボールやアイスホッケー両方とも僕は経験しているのですが、練習しないと上手にシュートが決まることはありません。プロなんかは僕の10万倍、100万倍失敗の経験があるんです。だから綺麗にシュートが決まる。100点満点の評価基準の中だけの計算ではなく、積の中の負が積み重なるから「次はこうしよう」という意思や判断が生まれる。それが練習という経験から生じる自律です。
Hopfieldのシステムは、ライオンに出会って、もし襲われ瀕死の状態になっても次また同じ行動をとってしまいます。構造はアソシアトロンと似てはいますが、3人称で綺麗に収束し過ぎるため、結果大きな違いが出てきます。
しかし、ロボットの体にとっては、むしろ Hopfield型やバックプロパゲーション、状態系の考え方のほうが「神経回路らしい」かもしれません。



発達ロボット(Developmental Robotics)
これも自律と呼ばれる方がいますが、内部は結局、報酬設計・外部評価です。


人工生命(ALife)
感情・連想の内側が弱い。知能として成長がどうなってるのか不明
個体差がある、世代で進化する、環境に適応する、生き残る/死ぬ
生態としての変化は利用したいと考えましたが、今の段階では知能として結びつきずらさを感じました。



アソシアトロンはおかげさまで一人称として動きました。
外輪(3人称)の影響を受けながらも、内輪(1人称)の経験と歪みから発するものです。


アルゴリズムじゃない
失敗も経験する
記憶はきっかけで思いだす
100%正解は関係ない。
報酬なし
最適化なし
正解なし
同じ環境でも個体差が出る
停止→再開で履歴が効く
発声が内部状態の可視化
2体で経験のズレが出る
2体のうち経験者の1体の行動に釣られる
赤ちゃんから育て、それぞれの環境で性格や思考が変わるものです。


たぶん、もうアソシアトロンの原型から若干離れているかとは思うのですが、それでもアソシアトロンには原型があって核というものがあるんです。

連想記憶
文脈による競合
想起の収束
状態遷移(エネルギー景観)

僕はここから離れたことは一度もありません。
随分と枝葉はつけましたが、つけたのは、Atron,一人称、群れ、社会、狩り、家族、分配、内輪・外輪、文化的シナリオ程度で、親はアソシアトロンです。

このAtronの源泉はやはり中野博士のアソシアトロンで間違いないんです。
当然森田先生の非単調や池田先生のロボットというものが存在していなければ、こんな研究は出来なかった。後は関係者の方々が沢山の書籍や資料を残してくれたから。

1人もお会いしていませんが(笑)



----追記メモ---------------なんかライオン一匹のくせに重くなってた-----------------------

ログをバッファしてまとめて書くか、サイズが増えるから自動ローテンション

run_20260302_001.ndjson
run_20260302_002.ndjson

するか。

gzipで圧縮しながら保存するか・・・
JSONは圧縮利くからいいよねw

重みは毎ステップ全部書くと重いので、現実的には差分(更新したキーだけ)もしくは 100ステップに1回だけ全weights保存とかか・・・
いや、それだと変化が見られないか・・・

たぶん、動物増やしたり、ワールドの3人称 条件増やしたり、原始時代、中世、近代、現代とシーンを回していくので、それまで我慢するか・・






エージェントと 一人称自律Atraの違い

 Atraなんかは、実はもう一人称自律として、きちんと発表してもいいレベル。 既に妻と笑っていたり、愛犬と騒いているんだから。ボーっと何かを眺めてたり、佐川急便に反応するようにもなった。 でも、そうしないのは、自発的に自ら研究意欲を持って、学び、人や自然と接触し自ら疑問を持って研...