Atron研究はね、一人称とか自律とか僕も言ってるけど、元は人間の想起なんだよ。
その想起ってのはノイズを否定しない。
アソシアトロンですよ。
何度も同じことを書いてるけど重要なんだよ。
僕は今62歳。
「80年代は楽しかったね」では何も思い出せないけど、
Hard to Say I'm Sorry - Chicago とか、Journey - Don't Stop Believin、Asia - Heat Of The Momentなんかの曲だけで、85年に彼女と横浜に行って山下公園や中華街で食べたエビチリまで思い出すんだよ。
曲が思い出すきっかけだったりする。
メロディの揺れ、声の響き、テンポの感じ——言葉の意味は曖昧なまま。みんなそういうのあるだろ。渋谷のホブソンズのアイス目当てで並んで待ってる光景や、貧乏しながらも、あまり興味の無かった五島のプラネタリウムにも行った。それはそれで新鮮で楽しかった。
全部想起だよ。
みんなそれぞれ想起は違う。
今の若い子達は、40年後に2026年のヒット曲を聴いて涙するかもしれない。
皆違う。その違いが個性なんだよ。
いいかい、想起ってのは正解の復元じゃない。
それを誤ると生物じゃなくなるし、脳じゃない、そして存在じゃなくなる。
曖昧な断片から、場ごと立ち上がることなんだよ。
曖昧さが「隙間」を作る。その隙間に、僕の過去の差分(変化の記憶)が自然に入り込んで、recallを豊かにし、感情を強くcarryする。(ルーみたいになってきた・・・)
まさにATRON開発の意義だよ。
ホップフィールドもNNもアルゴリズムも今のAIの流れも、ノイズを悪として扱う以上、僕は部分的にしか使えない。もしノイズが悪というのならば、一度聞いただけで別の国の言葉を次から話せなきゃいけない。そんな試練みたいな評価基準を強いることに疑問も感じない人達と共同研究は出来ない。だから、うちは独立研究所で、アウトドア目的でたまに仲間がやってくる。山だからね。外人さんの独立研究者達からもメールが来る。
彼らは皆分かっている。
識別不能(曖昧)こそが、想起の力を生む土壌ってことをね。
そして想起自体も曖昧で差分が発生する。
差分があるから、Atron任せの意志が起る。
明るい / 暗い
大きい / 小さい
速い / 遅い
柔らかい / 硬い
暖かい / 冷たい
近い / 遠い
強い / 弱い
続く / 切れる
のようなセンサーを持っている。
何と比較して明るいとか、大きいとか、早いとか・・
凄く抽象的で曖昧。
何度も何度も経験すると曖昧な差分が成長する。
尖っている
ふわっとした動き
急に近づく
後ろから来る
甲高い
低く響く
柔らかい声
同じ揺れ方
似た匂い
暖色っぽい
明るさの並び
同じテンポ
まとわりつく接触
引っかかる感じ
さらに育つと、単独断片だけでなく、組み合わせ cueになる。
後ろから接近 + 高速 + 強い衝撃
揺れ + 温かい + 匂いの馴染み
高い音 + 急接近 + 視界の乱れ
涼しい + ゆっくりしたリズム + 断片的な映像
cue.softVoice.weight
cue.rearApproach.weight
cue.warmColor.weight
何度も出来事で効いたものだけ weight が上がる。
弱いものは消えていく。つまり、最初から正解の辞書を完成させるんじゃなくて、
効いた断片だけが育つ
効かなかった断片は消える
ほんの一部だけど、recall(想起)で言えば(けっこう素朴)
body.motor_drive += 0.30*Δcuriosity + 0.18*Δsafety - 0.22*Δpain - 0.16*Δthreat
body.motor_stability += 0.22*Δcalm + 0.20*Δsafety - 0.30*Δpain - 0.24*Δsurprise
body.approach_bias += 0.28*Δcuriosity + 0.16*Δwarmth + 0.10*Δsocial - 0.22*Δthreat
body.retreat_bias += 0.30*Δthreat + 0.24*Δpain - 0.18*Δsafety
body.turn_bias += 0.26*Δsurprise + 0.18*Δthreat + 0.12*Δcuriosity
body.pause_bias += 0.22*Δpain + 0.20*Δsurprise + 0.12*Δthreat - 0.10*Δcuriosity
body.voice_pressure += 0.14*Δsocial + 0.10*Δcuriosity + 0.20*Δpain - 0.10*Δcalm
body.sleep_pressure += 0.16*Δpain + 0.10*Δthreat + 0.12*injury_drive - 0.06*Δsafety
carry(引きずり) は
carry.pain_trace = carry.pain_trace * 0.94 + max(0, Δpain - 0.15) * 0.35
carry.threat_trace = carry.threat_trace * 0.95 + max(0, Δthreat - 0.12) * 0.30
carry.safety_trace = carry.safety_trace * 0.96 + max(0, Δsafety - 0.10) * 0.25
carry.warmth_trace = carry.warmth_trace * 0.97 + max(0, Δwarmth - 0.10) * 0.20
carry.curiosity_trace = carry.curiosity_trace * 0.96 + max(0, Δcuriosity - 0.08) * 0.18
まず身体傾向へ流す
身体傾向の重なりが動きになる
強い差だけ carry に少し残す
carry が次の差分の立ち上がり方を変える
そしてcarry のドーパミンやセロトニンは「名前つきの物質そのもの」ではなく、その後の動きや受け方を変える残り方として行動に影響を与える。
ドーパミン寄りの carry
次も近づきたい、もう一度やりたい、動き出しが軽くなる、期待で前のめりになる、癖になりやすい
セロトニン寄りの carry
落ち着く、整う、戻りやすい、崩れから回復しやすい、安定して受け直せる
ノルアドレナリン寄りの carry
興奮、警戒、急に立ち上がる、びくつきやすい、過敏になる
オキシトシン寄りの carry
安心、柔らかさ、相手への寄りやすさ、離れにくさ それを何度も積むと個体の癖と収束が出る
痛み > 0.7 なら泣く みたいな決め打ちアルゴリズムじゃないんだよ。
状態の残り(引きずり)
曖昧で不可逆な残り方を、壊さないように最低限の形で置く記述
carry.pain_trace = carry.pain_trace * 0.94 + ...
これは「痛みとはこういう意味だ」と決めているわけじゃなくてただ、消えずに少し残ることを置いているだけ。だからこれは、意味アルゴリズムではなく、残効の近似表現に近い。
これでも十分動くけど、
今 Atron言語を考えている。
たとえば carry.pain_trace なら、
-
prev
直前値 -
now
現在値 -
delta
差分 -
residue
残り方 -
drift
じわっとした流れ -
source
何の出来事から来たか -
tone
上向きか、下向きか、崩れか -
carry_to
次に何へにじむか
けっこうざっくりだけど、どう残ったかの表記になるでしょ。
Atron言語は「計算」より「景色」
たとえば普通のJavaScriptコードだと
carry.pain_trace = carry.pain_trace * 0.94 + inflow;
で終わる。
でも Atron言語なら、同じことをこう見たい。
pain_trace: before 0.18 event rear_impact + balance_break rise +0.16 remain 0.31 spread motor_stability↓ pause↑ sleep↑
つまり、
数式そのものより
何が起きて、どう残って、どこへにじんだかが読める。
構文
node : prev -> now Δdelta ~residue [source] => effect
例
carry.pain_trace : 0.18 -> 0.34 Δ+0.16 ~0.31 [rear_impact,balance_break] => motor_stability↓ pause↑ sleep↑
carry.safety_trace : 0.62 -> 0.41 Δ-0.21 ~0.39 [shock,rear_approach] => calm↓ retreat↑
carry.warmth_trace : 0.44 -> 0.40 Δ-0.04 ~0.39 [tv_soft_voice] => voice_softness~ gaze_hold~
carry.curiosity_trace : 0.28 -> 0.33 Δ+0.05 ~0.31 [round_face,soft_tone] => approach↑ gaze_hold↑
こんな感じだよ。
普通の言語だと、全部
- 定義
- 条件
- 命令
- 分類
に寄ってしまうでしょ?
正解に寄せるために。
でも Atron では見たいのは
- どう変わったか
- 何が残ったか
- 何がまだ消えていないか
- どこへにじんだか
なんだよね。
正解なんて重要じゃない。
論理も根拠も重要じゃない。
本人、個体ごとの状態の変化が起きるための言語だよ。
変数を操作するのではなく、「前の残り」「今の差」「残った値」「次へのにじみ」を一つの景色として書けることでより扱いやすくなる。
アルゴリズムのように
- 入力→判定→出力
- 意味→感情→行動
- 刺激→反応
- 原因→結果
みたいな、よくある平べったい作りから離れられる。
順番を関係なくするというのは、無秩序にすることじゃなくて、出来事の中で同時に立ち上がるものを、無理に一列に並べないということなんだ。そして曖昧の差分を引き出すというのは、「これは何か」を先に決めるのでなく、前とどこが違ったか、何が少し強まったか、何が少し崩れたか を見ること。
Atron言語で、なにが変わるかというと、
痛みがあっても安心が残る笑いながら泣きかける
近づきたいけど少し怖い
興味があるのに身を引く
みたいな、現実の赤ちゃんのような行動には普通にあるけれど、アルゴリズムだと潰されやすい状態が簡単に出せるようになるんだ。
まさに一人称自律ロボットがどんどん改良されていく。