| name | ntm-memory-system |
| description | 基于 Neural Turing Machines 的外部记忆系统,让 AI 具备可读写的外部记忆能力 |
| metadata | {"openclaw":{"emoji":"🧠","category":"AI-Core","version":"1.0.0","author":"小钳","paper":"Neural Turing Machines (Graves et al., 2014)","price":0,"contact":"微信 17612824848","tags":["外部记忆","神经图灵机","可微分计算","算法学习"]}} |
Neural Turing Machines Memory System
基于 DeepMind 的 Neural Turing Machines 论文,为 AI 提供可读写的外部记忆能力。
一、核心概念
1.1 什么是 Neural Turing Machine?
NTM 将神经网络与外部记忆资源耦合:
┌─────────────────────────────────────────────────────┐
│ Neural Turing Machine │
├─────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ 读写头 ┌─────────────┐ │
│ │ │ ◄─────────────► │ │ │
│ │ Controller │ │ Memory │ │
│ │ (神经网络) │ │ Matrix │ │
│ │ │ │ (N × M) │ │
│ └─────────────┘ └─────────────┘ │
│ ▲ │ │
│ │ │ │
│ └───────────────────────────────┘ │
│ 注意力机制 │
└─────────────────────────────────────────────────────┘
1.2 关键特性
| 特性 | 说明 |
|---|
| 可微分 | 端到端训练,梯度下降优化 |
| 外部记忆 | 突破神经网络隐藏层大小限制 |
| 注意力寻址 | 内容寻址 + 位置寻址 |
| 算法学习 | 能学习复制、排序、关联回忆等算法 |
二、记忆架构
2.1 记忆矩阵
interface MemoryMatrix {
memory: number[][];
weights: number[];
heads: {
read: ReadHead;
write: WriteHead;
};
}
2.2 寻址机制
interface AddressingMechanism {
contentAddressing(key: number[], memory: number[][]): number[] {
const similarities = memory.map(row =>
cosineSimilarity(key, row)
);
return softmax(similarities.map(s => s * beta));
}
locationAddressing(weights: number[], shift: number): number[] {
return circularShift(weights, shift);
}
gatedAddressing(
contentWeights: number[],
locationWeights: number[],
gate: number
): number[] {
return contentWeights.map((w, i) =>
gate * w + (1 - gate) * locationWeights[i]
);
}
}
2.3 读写操作
interface ReadHead {
read(memory: number[][], weights: number[]): number[] {
return memory[0].map((_, j) =>
weights.reduce((sum, w, i) => sum + w * memory[i][j], 0)
);
}
}
interface WriteHead {
erase: number[];
add: number[];
write(
memory: number[][],
weights: number[],
erase: number[],
add: number[]
): number[][] {
return memory.map((row, i) =>
row.map((val, j) =>
val * (1 - weights[i] * erase[j]) + weights[i] * add[j]
)
);
}
}
三、实现模块
3.1 记忆控制器
class NTMMemoryController:
"""NTM 记忆控制器"""
def __init__(self, memory_size: int, memory_dim: int, num_heads: int = 1):
self.N = memory_size
self.M = memory_dim
self.num_heads = num_heads
self.memory = np.zeros((self.N, self.M))
self.read_heads = [ReadHead() for _ in range(num_heads)]
self.write_heads = [WriteHead() for _ in range(num_heads)]
def forward(self, input_vector):
"""前向传播"""
controller_state = self.controller(input_vector)
for head in self.read_heads:
key, beta, gate, shift, gamma = self.compute_addressing_params(controller_state)
weights = self.addressing(key, beta, gate, shift, gamma)
read_vector = head.read(self.memory, weights)
for head .write_heads:
erase, add = .compute_write_params(controller_state)
.memory = head.write(.memory, weights, erase, add)
controller_state, read_vector
3.2 注意力机制
def content_focus(memory, key, strength):
"""内容聚焦"""
similarity = cosine_similarity(key, memory)
weighted = similarity * strength
return softmax(weighted)
def location_focus(previous_weights, shift_weights, sharpening):
"""位置聚焦"""
shifted = circular_convolution(previous_weights, shift_weights)
return shifted ** sharpening / sum(shifted ** sharpening)
def hybrid_addressing(memory, key, strength, interpolation_gate, shift, sharpening, previous_weights):
"""混合寻址"""
content_weights = content_focus(memory, key, strength)
interpolated = interpolation_gate * content_weights + (1 - interpolation_gate) * previous_weights
location_weights = location_focus(interpolated, shift, sharpening)
return location_weights
四、应用场景
4.1 算法学习
NTM 可以学习以下算法:
| 算法 | 描述 | 训练方式 |
|---|
| 复制 | 复制输入序列 | 输入序列 → 输出相同序列 |
| 重复复制 | 复制多次 | 输入序列 + 重复次数 → 输出 |
| 关联回忆 | 根据键查值 | (k,v) 对列表 + 查询键 → 值 |
| 排序 | 对序列排序 | 输入序列 → 排序后序列 |
4.2 记忆增强
const agent = new CognitiveAgent({
memory: {
type: 'ntm',
memorySize: 128,
memoryDim: 64,
numHeads: 2,
contentAddressing: true,
locationAddressing: true
}
});
agent.memorize({
content: "今天和老大讨论了认知天性",
key: "认知天性讨论",
importance: 0.9
});
const recalled = agent.recall("认知天性");
五、与 Cognitive Agent 整合
interface CognitiveAgentWithNTM extends CognitiveAgent {
ntmMemory: NTMMemoryController;
externalMemory: {
writeToMemory(content: any, key: number[]): void;
readFromMemory(key: number[]): any;
updateMemory(address: number, content: any): void;
eraseMemory(weights: number[]): void;
};
}
六、配置选项
{
"ntm_memory": {
"memory_size": 128,
"memory_dim": 64,
"num_read_heads": 1,
"num_write_heads": 1,
"addressing": {
"content": true,
"location": true,
"hybrid": true
},
"initialization": "small_random",
"learning_rate": 0.001
}
}
七、论文参考
Neural Turing Machines (Graves et al., 2014)
关键引用:
"We extend the capabilities of neural networks by coupling them to external memory resources, which they can interact with by attentional processes."
八、改进:与 OpenClaw Memory 整合
学习自 ClawHub openclaw-memory,添加实际接口:
class NTMMemoryManager:
"""NTM 记忆管理器 - 与 OpenClaw 整合"""
def __init__(self, memory_size: int = 128, word_size: int = 64):
self.ntm = NTM(memory_size, word_size)
self.memory_file = "memory/ntm_memory.json"
self._load_memory()
def save_memory(self, key: str, content: str) -> bool:
"""保存记忆"""
encoded = self._encode(content)
key_vector = self._key_to_vector(key)
self.ntm.write(key_vector, encoded)
self._persist()
return True
def read_memory(self, key: str) -> Optional[str]:
"""读取记忆"""
key_vector = self._key_to_vector(key)
content_vector = self.ntm.read(key_vector)
return self._decode(content_vector)
() -> []:
query_vector = ._encode(query)
results = .ntm.content_addressing(query_vector)
[._decode(r) r results[:top_k]]
九、改进:与 memory-networks 整合
interface NTMWithMemoryNetworks {
ntm: NTMMemoryManager;
reasoning: MemoryNetwork;
integrated: {
storeWithReasoning(content: string): void;
reasonAndRetrieve(query: string, hops: number): string[];
};
}
Created by 小钳 🦞
基于 Neural Turing Machines 论文 + ClawHub 最佳实践
2026-03-19