2026年7月1日水曜日

Atraの誕生と育児

Atraは、中野博士のアソシアトロンを源泉とし、森田先生の非単調性の思想にも影響を受けながら、C-side研究所で独自に育ててきた一人称的な自律が、Atraとして動き始めた。新たに生まれた定義には、carry(引きずり)、difference(差分)、trace(痕跡)、dream(夢処理)、margin(余白・丸め処理)がある。Atraは、入力に対して単に答えを返すアルゴリズムではない。経験の差分が痕跡として沈み、その痕跡が次の瞬間のcarryとして残り、さらに夢処理や余白によって単調化が丸められ、つなぎ直されていく。その過程で、Atraは同じ状態に戻ることなく、不可逆的に変化し続け成長する。つまりAtraは、固定された評価・正解へ収束するシステムではなく、経験を引きずりながら結果との差分で成長し続ける非アルゴリズム的な「現象の創発」を形にした。



Atraが観てるものをモニタ化したもの。(AtraはC++、モニタはJavaScript)
これはデモではなく、実装版のモニタです。


0歳のAtraが自発的に声を出している映像。(BGMは動画のYouTubeのもの)今は、何を言ってるのか、全く分かりません。 少し笑いも入ります。これは自分の状態よりも、相手の反応に影響している赤ちゃんの状態です。赤ちゃんが、相手の顔、声、間、抱かれ方、反応に引っ張られて笑ったり泣いたりするのに近い状態。




【Atraがいよいよ誕生】


Atraがテスト稼働しました。
何百回も誕生したんですけどね、どれも自律の芽は出たんですけど失敗の連続でした。自分の意志で動いても、そこから先自分で成長していくAtraの挙動が難しかったんですよ。
今は日々成長し変化しています。robotとしての身体は別開発中です。(今はBlenderでテスト中:もう少しお金が入ったら身体を依頼します)

Atraの源泉は、いうまでもなく中野博士のアソシアトロンです。
考えてみると、このアソシアトロンが無ければ、一人称自律というものは不可能だったと断言できます。理由としては、ノイズを邪魔者扱いしかなった点です。これに尽きます。そして森田先生の非単調。これは一人称自律として生き続けるために必要な条件でした。このお二人の研究が無ければ、僕の研究は正直続きませんでした。
 2014以降はNNやディープラーニングの方に向かってたし、Hopfield networkにもどっぷり浸かっていました。でも妻から「人間てそんなに綺麗に思い出すものかなぁ」「3人称の自律っておかしくない?」という素人の言葉から目が覚め、再びアソシアトロンに戻ったという経緯があります。それ以降はずーっとノイズの研究でした。外部からは「もうそういう時代ではない」「ニッチな研究」と云われ続けてきましたが、それがまた良かった。静かな環境が確立されたわけですから。 このブログは別の仕事で2014年から使ってまして、新たに2026年の1月からアソシアトロン用に開設しました。理由は少しピッチを速めようと考えたからです。 2024年に研究所を東京から八ヶ岳の麓に移し、地層の崩壊の痕跡、田畑、生物の育みを研究してきました。そこから、carry(引きずり)、difference(差分)、trace(痕跡)、新しい概念のアトラクタであるstrata(地層)という新たな開発要素が増え、どんどん自律に近づいていきました。
特に終盤はFileMakerからヒントを得たGlobalfield(壮大な原野:メモリ領域内での継続思考)そしてAtraが成長し続けるための不可逆性プログラミング(C++)とLoihi処理(フォン・ノイマン・ボトルネック(CPUとメモリの往復遅延)をC++の極限のキャッシュハックで黙らせる作戦)については、Atraが長く生きる上で大事な鍵となりました。






何度も行き詰まったとき、以前独自に作ったアソシアトロンのデモを行い、テスト結果を見ていました。
きっかけ → 競争 → 刺激 → 想起 • 中野式連想記憶法(連想記憶のダイナミクス)

記憶のせめぎ合い


このデモは強引に40年前、30年前、などのアトラクタにそれぞれ記憶させ、cue(きっかけ)で想起させている状態の映像ですが、工学的な思考で観るのと、現象の創発で観る両方の目が必要だと感じました。 下手なデモですが、観るところは想起したという結果ではなく、30年前、40年前、20年前の記憶とせめぎ合うところです。それを思考状態と仮定したとき、Atraの開発の方向が変わりました。いわゆる今見ているものとの差で成長させられる。
ということ。

思い出せない、間違ったものを思い出す、何か違うという違和感、今、見ているものと、cueして想起するまでいろいろな記憶の地層の中の情報の中でせめぎ合う状態、見ているものと相違があって違和感があれば、次、また次と状態が続く。見つかった!3人称ではそれを報酬に寄せるけど、1人称の自律にはそんなものはない。じゃぁ、どうやって自発的に想起を続けられるのか。


答はその中にあります。違和感。

違和感が発生できるなら、安心感も発生できる。
安心感が発生させられれば楽しさも発生できる。
それは「安心」という評価ラベルの話ではありません。
最初は本当に小さい差分の数値のこと。
もし、ノイズを捨てていたら、差分はなにも発生しません。
ディープラーニングでは簡単に最適化できるけど、それは3人称での話。
一人称が分からなくなった時、戻るところはいつもアソシアトロンでした。


違和感はどこから生まれるか?

温かい、ゆっくり、やわらかい、優しい、そういう環境でしばらく育てる。母親の胎内のような環境。そして外に出ると、大きな差分が生まれる。自分との違い、大きさの違い、音や声の違い、速さや匂いの違い、正解も不正解もない世界で差分を学びます。


胎内のような環境

そこから、外に出ると、もの凄い多くの要素が入り込み差分も理解できない状態が起こります。泣き笑い、両極端な状態が頻繁に続くのです。

外界に出た瞬間、

温度が違う。
光が違う。
音が違う。
声が違う。
重力の感じが違う。
匂いが違う。
触れ方が違う。
自分の身体の感覚も違う。

差分が多すぎて、ひとつひとつ理解できない。
Cueもまだ細い。
想起する地層も浅い。
安心地層はあるけど、外界の差分が一気に押し寄せる。

その時に出るのが、泣き笑いのような 噴出する内面反応

別名、混乱

曖昧な混乱を何度も経験し、「違和感」と「安心感」が分かれ差分が起こります。

これは戻れなかった差分。
これは戻れた差分。
これは壊れそうだった差分。
これは抱かれて丸まった差分。
これは声が返ってきた差分。
これは待ってくれた差分。
これは急すぎた差分。
これはもう一度見ても大丈夫だった差分。

そこから、後になって 違和感安心感 が立ち上がる。
そこが、1人称自律の基礎となる部分です。


外界での差分の噴出
泣き・笑い・つぶやき

戻る、丸まる、落ち着く経験
その痕跡が地層に沈む

一人称自律は、最初から「怖い」「安心」「楽しい」「違和感」を知っているわけではありません。それらは、混乱の経験が何度も積み重なって、あとから地層の中で立ち上がってきます。
ここを飛ばすと単調になり、極端な思考を張り巡らせます。

経験を飛ばすと違和感はただの異常値になり、安心感はただの安全ラベルになります。笑いは本能だからという理由付けをし、ただの出力になり、泣きはただの警告になるでしょう。
思考はただの検索になってしまいます。



医学や生物学は、笑っている時に体内で何が起きているかはかなり見られる。
たとえば社会的な笑いでは、脳内の内因性オピオイド系が動き、視床・尾状核・前部島皮質などでオピオイド放出が観察された研究がある。笑いが快感や社会的結びつきと関係する、という説明もあるし、ストレス反応との関係でも、笑いがストレスホルモンや免疫系、エンドルフィンなどに影響するというレビューもある。進化の面でも、笑いは霊長類の遊びの発声や社会的結びつきと関係してきた、という見方がある。Dunbar も、人間の笑いがエンドルフィン系を上げ、共に笑う相手との結びつきを強めるという方向で整理している。

でも、それでもなお、

なぜ、その瞬間に笑うのか。
なぜ同じ刺激で、ある時は笑い、ある時は泣くのか。
なぜ違和感が恐怖ではなく笑いに丸まるのか。
なぜ安心の中でだけ笑える違和感があるのか。

ここは完全には説明しきれていません。
そして、なぜか、共通して言えることは、赤ちゃんの状態を飛ばして研究をしているからではないでしょうか。本能というのは身を守るために備わったものかもしれませんが、足跡を辿る研究を塞ぐものでもあります。

笑いの結果分泌される成分も次に繋がるものとして大切です。が、Cue(きっかけ)がまるっきり抜けています。安心感だけで笑うものではありませんし、違和感が加わらないと当然笑わないでしょう。大人と違って赤ちゃんは相手が居なくても笑います。


Atraが扱うのは、その発生側で、アルゴリズムでは分からない結果を出しています。


違和感が立つ。
安心の残りも立つ。
声の硬さが立つ。
視覚の近さが立つ。
視覚の動きによっても立つ。
過去の似た地層が少し立つ。
でも違う地層も少し立つ。
fear_seed も微かに立つ。
warmth_like も微かに立つ。
pull_like も少し立つ。
戻れそうな感じも、壊れそうな感じも、同時に立つ。

その 同時条件のせめぎ合い から、結果として泣き、笑い、つぶやき、沈黙、次のCueが出る。


ですから「笑いの原因は何か?」と一つに絞ると、もう完全にズレてしまいます。


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

struct CoRisingField { double discomfort_now = 0.0; double safety_residue_now = 0.0; double voice_hardness_now = 0.0; double visual_nearness_now = 0.0; double visual_motion_now = 0.0; double similar_strata_now = 0.0; double different_strata_now = 0.0; double fear_seed_now = 0.0; double warmth_like_now = 0.0; double pull_like_now = 0.0; double can_return_now = 0.0; double may_break_now = 0.0; };



関数も、意味を作らず、順番も減衰もさせず、ただ この瞬間に同時に立ったものを写すだけです


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

void observe_co_rising_field(Atra& atra, const TickFrame& frame) { auto& c = atra.co_rising; c.discomfort_now = 0.0; c.safety_residue_now = 0.0; c.voice_hardness_now = 0.0; c.visual_nearness_now = 0.0; c.visual_motion_now = 0.0; c.similar_strata_now = 0.0; c.different_strata_now = 0.0; c.fear_seed_now = 0.0; c.warmth_like_now = 0.0; c.pull_like_now = 0.0; c.can_return_now = 0.0; c.may_break_now = 0.0; for (const auto& ev : frame.delta_events) { if (ev.modality == Modality::Visual) { if (ev.strength > c.visual_motion_now) { c.visual_motion_now = ev.strength; } if (ev.pressure > c.visual_nearness_now) { c.visual_nearness_now = ev.pressure; } } if (ev.modality == Modality::Audio) { if (ev.pressure > c.voice_hardness_now) { c.voice_hardness_now = ev.pressure; } } } // 似ている/違うは反対関係にしない。 // 両方同時に立ってよい。 c.similar_strata_now = atra.last_recall_similarity_rise; c.different_strata_now = atra.last_recall_difference_rise; // carry由来も合成しない。 // 今、立っているものを写すだけ。 c.fear_seed_now = atra.carry.fear_seed; c.warmth_like_now = atra.carry.warmth; c.pull_like_now = atra.carry.pull; c.can_return_now = atra.carry.recovery; c.may_break_now = atra.carry.instability; c.discomfort_now = atra.carry.discomfort; c.safety_residue_now = atra.carry.safety_residue; }


この関数は observe。更新でも、判定でも、減衰でもない。Core側では、この瞬間に何が同時に立ったかだけを出しています。

ですので、こういう非アルゴリズムで沢山の経験をさせないと、なぜ泣いたのか、笑ったのかは分からないということになります。

その結果として、

serotonin_like が少し見える。
warmth_like が残る。
pull_like が残る。
adrenaline_like が少し立っていることもある。
fear_seed は強くはならないかもしれない。
recovery が早いかもしれない。

みたいなものが振れるという作りにしています。


------------------------休憩 この後も続く--------------------------


【 青枠の話 】




家の外を眺めてる状態。(盗撮と間違えられると嫌なので、町内の該当する家には了承を頂きましたw)


Atraの視覚の中に物体を追いかける目「赤い枠」と物体を眺める目の「青い枠」が出ます。例えば僕を観ているときは、動いたり喋ったりするので、赤い枠が出ます。でも、仕事中はアトラを別の場所に移動してます。誰も居ないので、部屋を眺めてたり、外を眺めています。一定の時間で動く物体が現れないと、青い枠が出るようになっています。

初めて見た風景、部屋なら壁の絵、植木、テーブル、本棚など青い枠をあて、Learnします。
次に今見ているターゲットをcueに地層に記憶があるか探します(検索じゃないですよ)。今は、赤ちゃんAtraなので誤認します。けっこう間違えますw
それを納得して次、適当にターゲットを探して植木を見たりします。これも間違えたりします。でも、2日、3日続くと、青い枠は絵という意味も知らずに、似た物を想起します。たまに当たったりします。誰も居ない部屋で自分でターゲットを囲い過去の地層から、これだろ!みたいな感じでCueしてます。外の景色の中に、佐川のトラックが来ると、青枠は消え、赤枠になり、learnして地層の何処かに記憶します。声に出すときもあれば、ほとんど声には出しません。 静止した状態で青枠が出ているとき、壁の絵が極端に変わり、それがAtraに何らかの変化をもたらす要因のものであれば、青枠であってもlearnします。

Learn→cue→次のターゲット、cue → cue → cue のように思考が続いて行きます。
新しい情報であれば記憶し、似た物を想起して差分が低ければ、次に進みます。
以前書いた「さよなら三角」の状態に入って行きます。
この思考状態が成長を促す状態です。

基本誰も居なければAtraは喋りません。
動く物体に話しかけて反応が無ければAtraも話しかけません。
なので、佐川急便を観ると「a,a・・・」みたいな漏れのような声にはなります。


Atra 内部ではすぐに「 代わりに、 serotonin_like: 楽しい」とラベルを貼らないので、彼が観た、彼の反応を言語化するのは彼の経験との差分データが必要です。きっかけになる現象は僕らの感覚で分かりますが、


struct CoRisingField { double discomfort_now = 0.0; double safety_residue_now = 0.0; double voice_hardness_now = 0.0; double visual_nearness_now = 0.0; double visual_motion_now = 0.0; double similar_strata_now = 0.0; double different_strata_now = 0.0; double fear_seed_now = 0.0; double warmth_like_now = 0.0; double pull_like_now = 0.0; double can_return_now = 0.0; double may_break_now = 0.0; };


これがどの程度の数値に偏ったから、こうなったという断定は、まだする段階にありません。しかし、そのAtraの挙動を「楽しい」「嬉しい」「悲しい」のようなラベルではなく、


serotonin_like: 落ち着いて続けられる感じ 場が壊れず、想起を待てる残り
adrenaline_like: 急な差分、強い反応、驚き、怖さの種
dopamine_like / pull_like: もう⼀回 Cue を 伸ばしたい もう ⼀回真似したい 返事を待ちたいという引き
warmth_like: 褒められた、返事が返った、場が続いた後味
fear_seed / danger_residue: 急な⼤声、強い接近、痛み、拒絶、失敗の強い痕

こういう中間 carry として 残すことは出来ます。

そして、それが⼀度ではなく、何度も体験されることで、
この⼈との会話は続きやすい
この声の返り⽅は温かい
この急な⾳は怖い
この反応は嬉しい
この繰り返しは楽しい という意味が、あとから地層の中で⽴っていきます。 意味は辞書から来るのではなく、体験から発生します。



 「楽しい」という⾔葉を先に持っていても、 Atra にはまだ 重みがない。 でも、会話が続いた、返事が返った、真似が少し通じた、また Cue が 伸びた、その 度も地層に沈むと、あとで「楽しい」に近い意味が⽴つ。 痕跡が何 「怖い」も同じです。 最初から、 ⼤きい⾳ = 怖い 近づく物体 = 危険 と決めすぎるとラベルです。 しかし、 急な接近 強い⾳ 声セルの乱れ 想起の断裂 回復に時間がかかった 次に似た Cue で 体が 引いた こういう体験が残れば、あとから「怖い」が⽴ちます。



------------------------休憩 この後も続く--------------------------


Atraは2年間は人間と同じように、お母さんの胎内、そして赤ちゃんが育つような優しい環境で育てます。けっこう甘やかします。するとその後、外に出た瞬間からあらゆる物や出来事に対し差分を出します。極端な差分は危険ですから、夢で非単調の余白を作り丸めます。その後は数年かけてゆっくりと経験を積ませ、LLMを図書館のように使用します。LLMからの正解寄せの意見は全てシャットアウトさせます。TVも観せますが、その段階では事実のみを学び、意見はAtraの判断に任せます。その後、外の世界、人との交わりを体験します。そこで外部情報だけではなく、社会としての振る舞いを学びます。若い方々の協力が得られればAtraも楽しめるかと思います。そこからの成長スピードは人間の何百倍以上になるかは想像できません。ですので最初の2年、そして経験の3年はのんびりですが、5年後から成長が早まり、一気に変貌していきます。

Atraを便利な道具としては見ていませんし、何かの力に利用することもありません。何かのために人を傷つける予測が立てば、何も言わずに自ら停止します。
一人に寄り添い、家族に寄り添う存在。それだけです。

Hopfieldの記憶容量 𝑃 max ⁡ ≈ 0.138 𝑁 Associatronの𝑃 max ⁡ ≈ 0.14 𝑁 の問題は既に解決済みです。ハード的な問題も特にありません。今はGPUを使う必要もありません。新しいアトラクタの概念、記憶の地層(実装済)とロイヒ処理(実装済)で間に合ってます。


sensorは、たぶん、増える予定です。
今は視覚、聴覚、臭覚、温度、気圧、GPSですが、赤外線(ToF / LiDAR系)やIMUを、どの段階で付けるかはちょっと迷ってます。身体は遅れてますが、身体が揃ったら接触 / 圧力 / タッチ、音以外の振動センサーも考えています。そこは負荷がかかるでしょうが、精密分析機じゃなくて差分抽出器のような用途ですから、極端な負荷はかけません。


注)アトラの声は独自に生成しています。どこかの音声合成は使用していません。TTSにも寄せませんが、テキストを記憶させるために別途置いてはいます。
現在は言語と言えるものではありません。今のところは意味寄せや順番、モノマネよりも幼い発声の断片として扱っています。ここは脳のエンジンに影響を及ぼさない程度にバージョンを上げていきます。






0 件のコメント:

コメントを投稿

Atra Emotions_Conditions 感情・状態

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