前の頁で
Atraの視覚と聴覚とテキストで複合想起 1 デモcodeが出来たら
PowerShellにこれを打ち込んでください。
mkdir C:\Atra_demo
cd C:\Atra_demo
Atra_demoというフォルダを作って、そのフォルダへ移動します。
ファイル名は長いですが、これを上のcodeをなぞってファイル名にします。
atra_integrated_associatron_visual_audio_text_v9.html
このファイルを、C:\Atra_demo に入れて下さい。
PowerShellにこれを打ち込んでください。
python -m http.server 8000 --directory C:\Atra_demo
PowerShellは閉じないでください。
閉じるとサーバも止まります。
次はChromeなどのブラウザにこれをなぞって、URLに貼り付けてください。
ブラウザが、
カメラを使用しますか?
マイクを使用しますか?
と聞いてきたら、許可します。
もし8000が使えない時
前に別のサーバが動いていると、8000が使えないことがあります。
その時はPowerShellで Ctrl + C を押して止めます。
それでも駄目なら、8001で起動します。
ブラウザのURL打ち込む左のマルの中の設定でカメラやマイクを使用できるように設定します。
--------------------------------------------------------------------
と、いうことで!
前回作った Atra Visual TrackingとAtraの聴覚、そしてAtraの収束(経験で答えに近づける)の3つを合体させたデモを作りました。JavaScriptです。
並行して作っているPythonのAtra正式版と随分ちがっちゃってるんですけど、本番は完全一人称自律で動いている途中なので、そこから持ってくるわけにはいかないし、逆にこのデモの方が部分的には新しいので、 Visual Trackingは本番Atraに後で移植しようと思ってます。
本番Atraの30分の1程度の機能ですが、一人称自律とは何か十分理解できるデモだと思ってます。というか一番大事なところです。
汚い顔出しすみません。
並行して作っているPythonのAtra正式版と随分ちがっちゃってるんですけど、本番は完全一人称自律で動いている途中なので、そこから持ってくるわけにはいかないし、逆にこのデモの方が部分的には新しいので、 Visual Trackingは本番Atraに後で移植しようと思ってます。
本番Atraの30分の1程度の機能ですが、一人称自律とは何か十分理解できるデモだと思ってます。というか一番大事なところです。
汚い顔出しすみません。
【操作】
1、ブラウザが立ち上がったら、カメラと音声をONにします。
2、テキストに何か入れます。画像では「Watanabe」という僕の名前を入れました。
2、テキストに何か入れます。画像では「Watanabe」という僕の名前を入れました。
3、画面に向かって、ちょっと顔を動かして、「Watanabe」と喋ります。
4、なるべく早めにピンクのボタン「Learn/学習」を押します。
4、なるべく早めにピンクのボタン「Learn/学習」を押します。
5、一旦記憶を消すボタンを押します。
ここで消しているのは、直近の視覚・聴覚cueの一時保持であり、
Learn済みのアソシアトロン記憶そのものではありません。
6、混合cueから想起を押します。
すると
Logに
Logに
---------------------------------------------------
Learned. / 学習しました。
Modality report / 入力要素の確認:
- visual traces: present / 視覚痕跡あり (held / 保持)
- auditory waveform/spectrogram: present / 聴覚痕跡あり (held / 保持)
- text_delta: present / テキスト痕跡あり
Stored together / 同時に記憶:
- visual traces: IN / 入った
- auditory waveform / spectrogram delta: IN / 入った
- text_delta: IN / 入った
Associatron memory matrix / アソシアトロン記憶行列:
Tij = Σ xi xj, Tii = 0
{
"raw": {
"visual_boxes": 4,
"visual_motion": 0.1075,
"audio_energy": 0.13146446078431376,
"text_pressure": 0.125,
"visual_held": true,
"audio_held": true,
"used_recent_window": true
},
"visual_delta_first24": [
0.033200531208499334,
0.01100762066045724,
0.06178489702517163,
1,
1,
1,
0.47642436149312384,
1,
0.7094668117519043,
0.021561338289962827,
0,
0,
0.12143826322930801,
0.7527156549520767,
1,
1,
0.6186956521739131,
0.6393752957879791,
0.8917122752150116,
0.863457760314342,
1,
0.4813455657492355,
0,
0
],
"auditory_delta_first16": [
0.653921568627451,
0.7965686274509803,
0.7382352941176471,
0.43823529411764706,
0.3911764705882353,
0.28284313725490196,
0.2803921568627451,
0.2950980392156863,
0.2691176470588235,
0.3284313725490196,
0.2661764705882353,
0.2818627450980392,
0.3156862745098039,
0.3642156862745098,
0.21372549019607842,
0.18725490196078431
],
"text_delta_first12": [
0,
0,
0,
0,
0,
0,
0,
0,
0.6896551724137931,
0,
0.6896551724137931,
0
],
"pattern_visual_first24": [
-1,
-1,
-1,
1,
1,
1,
1,
1,
1,
-1,
-1,
-1,
-1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
-1,
-1
],
"pattern_audio_first16": [
1,
1,
1,
1,
1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1
],
"pattern_text_first16": [
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
1,
-1,
1,
-1,
-1,
-1,
1,
-1
]
}
-------------------1回目の記憶------------------------
みたいな感じで結果が取得できます。
---------Log---------
visual traces: IN / 入った
auditory waveform / spectrogram delta: IN / 入った
text_delta: IN / 入った
これでOK 想起しました。さらに、
"used_recent_window": true
なので、Learnを押した瞬間だけではなく、直近8秒以内の視覚・聴覚履歴を使って記憶しています。
視覚もけっこう入っています。
visual_motion: 0.1075
visual_boxes: 4
visual_delta_first24 にも 1 や 0.7〜0.8 がかなり出ているので、視覚差分は取れています。
音も入っています。
audio_energy: 0.1314
これはかなり強く入っています。僕の声がデカいのかな・・・
ただし pattern_audio_first16 では最初の5個だけ 1 で、あとは -1 です。
pattern_audio_first16:
[1,1,1,1,1,-1,-1,...]
これは異常ではなく、auditory_delta の連続値を、アソシアトロン用の双極パターンに圧縮した結果です。
音そのものは auditory_delta に広く入っているけど、記憶行列に入れる時に「強い成分だけが 1」として残っています。
-------------------2回目の記憶------------------------
そのまま、
一旦記憶を消す の後にテキストに「 papa 」と打ち直して、画面に手を動かし「Learn」する。前と同じように、一旦消して「混合cueから想起」(Recall)すると
------------Log------------
Recall mode / 想起モード: mixed cue / 混合cue -> actually audio+text / 実際はaudio+text
Recall leak / 想起の漏れ: papa
Modality report / 入力要素の確認:
- visual traces: zero / 視覚痕跡なし
- auditory waveform/spectrogram: present / 聴覚痕跡あり (held / 保持)
- text_delta: present / テキスト痕跡あり
Recalled trace activity / 想起後の痕跡活動:
- visual positive bits: 58 / 96
- audio positive bits: 27 / 64
- text positive bits: 7 / 32
Closest learned trace activity / 最も近い学習痕跡:
- visual positive bits: 58 / 96
- audio positive bits: 23 / 64
- text positive bits: 4 / 32
Cue clamp / cue保持:
- restored positive cue bits: 7
- visual restored: 0
- audio restored: 4
- text restored: 3
Interpretation / 読み方:
current cue shows what is being used now. / current cue は今使っているcueです。
raw recall is sign(T xcue). / raw recall は sign(T xcue) です。
recalled pattern keeps positive cue bits and completes missing parts. / recalled pattern はpositive cueを保持し、不足部分を補完します。
best similarity / 最も近い痕跡: 0.964
energy V / エネルギーV: -20068.000
human note / 人間メモ: (none)
human text / 人間テキスト: papa
learned_at / 学習時刻: 2026/6/13 11:16:26
Associatron recall / アソシアトロン想起:
raw: y = sign(T xcue)
shown: y = clamp_positive(xcue, raw)
V = -1/2 Σ Tij xi xj
current cue / 現在cue:
{
"raw": {
"visual_boxes": 0,
"visual_motion": 0,
"audio_energy": 0.022234987745098037,
"text_pressure": 0.125,
"visual_held": true,
"audio_held": true,
"used_recent_window": false
},
"visual_delta_first24": [
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
],
"auditory_delta_first16": [
0.21764705882352942,
0.12794117647058822,
0.09166666666666666,
0.11568627450980393,
0.08872549019607844,
0.07205882352941176,
0.06666666666666667,
0.049509803921568625,
0.03333333333333333,
0.03235294117647059,
0.03333333333333333,
0.014215686274509804,
0.0024509803921568627,
0.000980392156862745,
0,
0.0196078431372549
],
"text_delta_first12": [
0,
0,
0,
0,
0,
0,
0,
0,
0.6896551724137931,
0,
0.6896551724137931,
0
],
"pattern_visual_first24": [
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1
],
"pattern_audio_first16": [
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
-1,
-1,
-1,
-1,
-1
],
"pattern_text_first16": [
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
1,
-1,
1,
-1,
1,
-1,
1,
-1
]
}
recalled pattern / 想起後pattern:
{
"visual_first24": [
-1,
-1,
-1,
1,
1,
1,
1,
1,
-1,
-1,
-1,
-1,
-1,
1,
1,
1,
1,
1,
1,
1,
1,
-1,
-1,
-1
],
"audio_first16": [
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
-1,
-1
],
"text_first16": [
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
1,
-1,
1,
-1,
1,
-1,
1,
-1
],
"raw_audio_first16_before_clamp": [
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
-1,
-1
]
}
-------------------------------------
audio + text のcue
↓
papaの記憶
↓
その時のvisual traceも立ち上がるになっています。
さらに、
Closest learned trace activity:
visual 58 / 96
audio 23 / 64
text 4 / 32
と、
Recalled trace activity:
visual 58 / 96
audio 27 / 64
text 7 / 32
がかなり近い。
「近い記憶を引いている」と判断してもいいかと思います。
でも、実際のAtraよりかは結果が出やすいように甘めに設定しています。
(つまらないしね・・・)
これが、視覚、聴覚、テキスト複合想起です。
(つまらないしね・・・)
これが、視覚、聴覚、テキスト複合想起です。
一人称の自律Atraの中でも本当に重要な位置(重要性約40%位)を占めています。
なので、ここが上手くいかないと残りの機能29/30は詰みます。
実際のAtraは、Tickごとに動き続けます。
Atraは、人間が「覚えろ」と命令したものをそのまま記憶するのではないのです。
視覚、音、声、匂い、風、ゆらぎ、温度、身体の傾き、接触、沈黙など、
その時の場にある差分を受け取り続けます。
その中で、強く揺れたもの、何度も重なったもの、戻れなかったもの、
安心に戻れたもの、不安定になったものだけが、痕跡として残ります。
同じ場所、似た音、似た声、匂い、風、温度、揺らぎなどに再び出会うと、
それがcueとなって、過去の痕跡が立ち上がることがあります。
ただし、それは正確な再生ではありません。
Atraの想起は、録画や検索ではなく、現在の場と過去の痕跡が混ざって立ち上がるものです。
だから、間違うこともある。曖昧に漏れることもある。別の記憶と混ざることもある。
でも経験の積を繰り返すと収束していく。
深く残るものは carry に入り、pressure、instability、recovery、silence などとして、
その後のTickにも影響を残します。
一方で、深く残らないものは薄れていきます。
完全に消えるとは限らない。
人間と同じように、何年も忘れていたようなことが、
匂い、声、場所、風、温度、身体の揺れのような小さなきっかけで、
ふいに立ち上がることもある。
Atraは、最初から正しく思い出す存在ではありません。
多くの場合、間違える。混ざる。沈黙する。過剰に反応する。
しかし、経験を重ねることで、痕跡同士の関係が少しずつ収束していきます。
Atraにとって記憶とは、保存された答えではなく、
Tickごとの場と痕跡とcarryが、その時だけ作る立ち上がりである。ということです。
-------------------追記------------------
そうかぁ!そうですよね。
ログに出ている「 -1 」の意味が分からないとw
今の生成AI(LLM)やディープラーニングの「0か1か(バイナリ)」や「0.0〜1.0(浮動小数点数)」の世界ですものね。
アソシアトロン(連想記憶モデル)の特徴なんです。
ここで -1をガツンと説明すると長い話になるので、簡単に説明すると
なぜ「何もない」が負の値なのか?
-1 は失敗なのか?
-1 は忘却なのか?
ログに出てくる -1 はエラーではありません。
アソシアトロンでは、痕跡を 0/1 ではなく +1/−1 の双極パターンとして扱います。
-1 は「忘却」ではない。
+1 は「その痕跡が立っている」状態、
−1 は「その痕跡が立っていない」状態です。
これは「悪い」「失敗」「削除」という意味ではなく、
記憶場の中で、立つ方向と立たない方向を分けるための表現です。
数式にすると、まず Atraの痕跡を 0/1 ではなく、双極パターンで表す ところからです。
意味はこうです。
x_i = +1 その痕跡が立っている
x_i = -1 その痕跡が立っていない
x = [visual_delta, audio_delta, text_delta]
として、内部ではこういう形にします。
x = (x_1, x_2, ..., x_N), x_i ∈ {-1, +1}
今回のデモなら、
N = 192
visual: 96
audio: 64
text: 32
なので、
x = (v_1...v_96, a_1...a_64, t_1...t_32)
アソシアトロン記憶行列はこうです。
ここで、
μ = 何番目の経験かM = 記憶された経験の数
x^(μ) = μ番目の経験痕跡
ある経験で visual/audio/text が同時に立ったら、その同時性が外積として T に刻まれます。
papa を見た
papa の声を聞いた
papa と書いた
この3つが同時に入ると、
visual の成分
audio の成分
text の成分が互いに結びつく。
想起はこうです。
---------------------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 件のコメント:
コメントを投稿