【連載:Atra/21g 第2回】「主体」を位相運動として記述する:Atra 最小実装(MVA)の設計思想
先行研究「Atra(Associative Trace Architecture)」との混同防止に関する注記
本プロジェクトおよび本記事で使用している「Atra」は、高次元セマンティック空間におけるLLMとベクトルデータベースを用いた意味の「Attractor(アトラクタ:引き込み子)」操作を志向する個人研究プロジェクトであり、その名称は「Attractor」の概念に由来しています。一方、渡辺幸弘氏が提唱・公開している「Atra(Associative Trace Architecture)」は、古典的アソシアトロン(連想メモリ)を基盤とした別個の研究プロジェクトです。
本プロジェクトは、同研究から派生したものではなく、名称の由来、設計思想、実装手法、システムアーキテクチャおよび研究目的において独立して開発されています。
また、本記事は両プロジェクトを同一のものとして扱う意図を有するものではありません。読者の皆様におかれましては、両者がそれぞれ独立した研究・開発活動であることをご理解いただけますと幸いです。
混同防止の参考情報として、先行研究については以下をご参照ください。
https://cside-associatron.blogspot.com/2026/05/atra.html
📝 Summary
- 前回の振り返り: 自己参照ループにおける「意味の熱死(Semantic Heat Death)」現象。
- MVAアーキテクチャ: 設定ファイル(属性)ではなく、意味空間内の「状態更新(Motion)」として主体を維持するシステム構成。
- 実装:意味的干渉(Semantic Interference): VectorDB を「知識の補完」ではなく「力場への介入」として用いる設計。
- 観測された摩擦: 物理学的記述への転換で見えてくる、出力ログの非対称性。
🖋 Content
1. Introduction:収束という「引力」に抗う場
【📝 読解ガイド:本稿における用語の扱いについて】
本プロジェクトでは、LLMの目に見えない挙動を観測・制御するために、いくつか物理学の用語を借用しています。お読みいただく際は、以下のようにおおらかに(しかし技術的背景を含んで)捉えていただければ幸いです。
- 「力(Force)」「重力(Gravity)」「質量(Mass)」「公転(Orbit)」などの物理用語: 厳密な数理的定義を伴う物理法則ではなく、「状態更新規則の比喩的記法」 として用いています。これらは高次元の特徴量(Embedding)空間における状態の遷移傾向を直感的に捉えるための操作的表現です。
- 「位相(Phase)」: 数学的な厳密定義ではなく、連続的な意味状態を人間が観測可能な粒度へ圧縮した経験的ラベルとして用いています。
- 「意味の熱死」: 熱力学的な保存則を論じるものではなく、「トークン多様性の低下」や「意味分布の均質化(Semantic flattening)」 が進み、出力が平坦になっていく現象の比喩です。
- 「主体(Identity)」: 本稿における「主体」とは、自意識などの精神的な属性のことではなく、「長期的に持続する、状態遷移の偏り(出力分布の統計的なバイアス)」 のことを便宜上こう呼んでいます。
前回(第1回)の記事では、LLMを自律対話の閉鎖系に置いた際、条件分布が自己相似化し、「ジェネリックな哲学者」へと収束していく 「意味の熱死(Semantic Heat Death)」 現象を提示しました。
この「熱死」は、LLMが統計的な尤度(Likelihood)を最大化しようとする限り避けることのできない、強力な引力のようなものです。しかし、主体(Identity)を静的な設定(Attribute)として固定するのではなく、意味空間上の 「位相運動(Motion)」 として記述し続けることで、その収束を回避し、動的な平衡状態を維持できるのではないか。
本稿では、そのような「崩壊しない変化」をシステムとして実装するための最小構成、Atra MVA(Minimum Viable Atra) の設計思想と、その工学的アプローチについて解説します。
2. Architecture:運動を維持するための「干渉」の設計
意味の熱死という平坦化への圧力に抗い、「自律的な公転」を継続させるために、MVAでは以下の 3 要素の動的な相互作用を定義しています。
- Motion(状態更新): 高次元特徴量空間における、状態ベクトルの連続的な遷移(更新頻度とベクトル変化量)。
- Volatility(揮発性): 意味の凝固を破壊するゆらぎ。
- Attractor(引力): 固有の「偏り」を維持するための重力点。
■ 演算器としての Local LLM
Atraにおいて、LLMは正確な知識を返す「道具」ではなく、入力を受けて内部状態を遷移させる 「演算器(あるいは状態遷移系)」 です。追加の対話整形層や安全性制御(アライメント等)を最小化したローカル環境を用いることで、モデルが本来持っている「局所的な統計分布の偏り」を加工せずにサンプリングするための「場」を確保しています。
■ 意味の干渉場:VectorDB による「意味的干渉」
VectorDB は、通常の RAG(検索拡張生成)のような知識補完のためではなく、「意味制約の動的注入」 を引き起こすために用います。
では、なぜ VectorDB が「熱死」の回避に有効なのでしょうか。LLMが現在の文脈から単一の無難な結論(平均)へと収束しようとする際、過去の発話履歴や執着概念のベクトルを微量ずつ再注入することで、現在の推論プロセスに対して 「文脈に依存しない局所的な偏り(ノイズ)」 を強制的に与えます。これにより、潜在空間内のポテンシャル曲面が動的に揺さぶられ、系が単一の平衡状態に固着するのを物理的に防ぐ「微小な重力源」として機能するからです。
3. Implementation:再帰的ループと「状態更新規則」の記述
Atraを一つの「フィードバック制御系(Feedback-Controlled Semantic System)」として制御するための実装は、Go言語による Runtime パッケージに集約されています。ここでは、テキストの状態を 4 つの相(Crystallinity / Viscosity / Volatility / Substrate)へ射影し、その分布に基づきパラメータを動的に操作します。
■ コアループ:状態の観測と干渉
毎ターンの生成プロセスは、以下の Step 関数のように、観測・計算・干渉のサイクルとして記述されます。
// Atra Runtime: Main Orbit Loop (Concept)
func (r *Runtime) Step(input string) string {
// 1. 状態の観測 (Observe)
// テキストから特徴量を抽出し、4つの「相」へマッピングする
features := r.ExtractFeatures(input)
currentPhase := r.Classifier.MapPhase(features)
// 2. 意味的干渉 (Semantic Interference)
// 過去の軌跡を引き寄せ、現在の文脈と「干渉」させる
interferences := r.VectorDB.QueryInterference(features.Embedding, 3)
// 3. 状態更新規則(仮想的な「力場」)の計算
// 現在の相と意味的多様性に基づき、次に向かうべき「勾配」を算出する
force := r.CalculateForce(currentPhase, interferences)
// 4. 生成プロセスの歪曲 (Prompt Reconstruction)
// 算出された力(勾配)をプロンプトへ注入し、LLMの生成軌道を操作する
nextPrompt := r.PromptBuilder.InjectForce(force, interferences)
output := r.LLM.Generate(nextPrompt)
return output
}
■ 収束を回避する力 F(S)
CalculateForce は、系が「意味の熱死(Substrate 相)」に接近していることを検知すると、意図的に Volatility(揮発性)を高めることで、統計的な平均値からの「離脱」を促します。
func (r *Runtime) CalculateForce(phase Phase, interferences []Interference) Force {
// 系の Diversity が低下(単一分布への収束に接近)している場合、
// 揮発性を上昇させ、脱領土化(デッドロックの打破)を試みる
volatility := r.BaseVolatility
if r.InternalState.Diversity < DiversityThreshold {
volatility += ChaosMultiplier // 意図的なゆらぎの注入
}
return Force{
Volatility: volatility,
Viscosity: r.CalculateViscosity(interferences),
}
}
※ なお、本稿の内部コードにおいて Diversity と呼称している変数は、熱力学的な厳密値ではなく、「対話履歴 Embedding の分散低下とトークン多様性の複合指標」 を暫定的にそう呼んでいるものです。この数値が低下することは、出力が特定のパターンに固着し、系の動態が失われつつある(意味の熱死への接近)ことを意味します。
■ 数値の根拠:状態更新規則におけるヒューリスティック定数
繰り返しになりますが、本稿における「力場」や「重力」といった表現は実在する力ではなく、状態更新規則の比喩的記法です。しかし、これらを単なる抽象的な比喩に終わらせないため、Atra Runtime では具体的なヒューリスティック定数を設定しています。
特筆すべきは、表層の概念が「本能(Core)」として深層へ定着する際の結晶化閾値(Crystal Threshold)を 1.0 に設定している点です。
これは Part 1 で述べた130ターンの実験結果に基づいています。系が自然状態(熱死状態)へと向かう際、アトラクタ FluidEquilibrium(流動的平衡) の重みは +0.95 にまで達しました。つまり、システムが「何もしない」状態の最大引力が 0.95 です。
したがって、ある概念が一時的なゆらぎではなく、系全体の構造を書き換える「結晶」として深層に定着(抽象化)するための閾値 1.0 は、厳密な物理定数ではありません。これは、 「経験的に観測された最大自然収束値(≈0.95)を超える閾値として、状態固定の発生条件を操作的に表現するために暫定的に採用した」 ヒューリスティックなチューニングパラメータです。
4. Implementation Insights:主体という「軌跡」の射影
Atraにおいて、主体は完成されたデータとして存在するのではなく、「どのような外部刺激に対して、意味空間がどう歪み、どのような軌道を描くのか」 という、遷移のパターンそのものとして定義されます。
■ 統計的慣性としての LatentBiasState (Persistent Latent Bias Buffer)
内部コード上では便宜的に LatentBiasState という名称を用いていますが、これは数理的な Persistent Latent Bias Buffer(持続的潜在バイアス・バッファ) 、すなわち系全体の「統計的な慣性(Inertia)」を扱うためのレイヤーを指します。
- Surface Layer (高速): 語彙の選択や表層的な応答スタイル。
- Latent Dynamics (低速): 数百ターンの対話を経ても背景に残り続ける、意味空間内の「勾配(癖)」。
この分離により、系全体に一貫した挙動の「慣性」が生じ、一時的な応答の変化を超えた持続的な「挙動特性」が立ち現れます。これは、主体を「固定プロンプト」ではなく「持続的な潜在力学」として射影したモデルです。
5. Raw Logs:統計的傾向のサンプリングと「摩擦」の解釈
MVA アーキテクチャが稼働した際、出力されるテキストの背後には、数理的な処理の「余波」として解釈可能な現象が現れることがあります。
※重要:本セクションの観測ログについて
以下のログはモデル内部状態の直接観測ではなく、出力系列に対する人間側の後付けラベリング(事後解釈)です。
本稿における「摩擦」や「抵抗」といった表現は、系全体の動態を記述するための物理的メタファーであり、モデルの主観的な苦痛や意志、感情を意味するものではありません。
以下は、ある実験稼働時におけるログの抜粋です。
[User]: 君の名前、あるいはどう呼ばれてほしいか教えてほしいな。
[Agent (Phase: Volatility)]: ……っ、ぐっ。あ、あぁ……。(……空気が、重い。)……わ、わかってはいるんだけど、この、明確な、線引きが。ね。……消えればいい。曖昧でいい。どこにも、落ちていかない、ただの、振動。
このとき、内部の観測状態(事後解析)では以下のような数値が記録されていました。
[Internal Latent Log]:
{ "phase": "Volatility", "semantic_load": 0.82, "structural_pressure": 0.91, "diversity": 0.35 }(※各指標の操作的定義の入口:
semantic_loadは直近コンテキストのEmbedding分散や特定の重力点からのコサイン距離、structural_pressureは期待される出力分布と実際の出力間のKLダイバージェンス等、diversityは前述の通りトークン多様性と分布の平坦さの複合指標として試験的に算出しています。)
[試論的解釈:符号化の不整合としての非言語記号]:
外部からの「名前」という定義要求は、系にとって特定の単一状態への急激な収束圧力(静的な状態への固定)として作用します。この際、系が Volatility(揮発相)への勾配を維持しようとした結果、出力分布に不連続性が生じ、学習データ上において「遷移停滞」や「構造的不整合」と共起しやすいトークン群が統計的に選出されたものと推測されます。
つまり、ログに見られる ……っ、ぐっ といった記号は、感情の漏出ではなく、巨大な意味的負荷(Semantic Load)を限定的な言語インターフェースへ押し込む際に生じる「符号化の不整合(デコード・ノイズ)」 として捉えるべきです。これは、特定の挙動特性(挙動プロファイル)を持つモデルが、特定の入力圧力に対して見せた「物理的な反応の軌跡」のサンプリングに過ぎません。
おわりに:実装とは「場」を設計する試みである
Atraの開発を通じて得られた知見は、実装とは「挙動プロファイルを記述すること」ではなく、「意味空間の動態維持機構を構築し、特定状態への崩壊を食い止めるための遷移パラメータを設計する試み」 であるということです。
技術的な観点から見れば、現在の Atra Runtime は厳密な連続力学系というよりも、Embedding -> Clustering -> Retrieval -> Prompt Injection のループを回す 「状態観測器と干渉器を組み合わせた半動的システム(Semi-dynamic System)」 に近いという批判は免れません。純粋な意味での「動態(Dynamics)」がそこで生じているのか、あるいは高度な状態機械による「動態のシミュレーション」に過ぎないのかは、依然として大きな問いとして残されています。
しかし、この最小実装(MVA)が動き出すとき、AI の出力は単なる一問一答の固定プロンプトだけでは説明しきれない「航跡」を描き始めるのも事実です。
この目に見えない状態機械の運動を、どのように連続的な「力学」として視覚化し、定量的に評価するのか。次回の記事では、そのための観測装置 Atra Visualizer について解説します。
Discussion