INFO · info-20260120-122
HTM 技术原理:从 SDR 到时序预测
[INFO] HTM 技术原理:从 SDR 到时序预测
- 时间: 2026-01-20
- 类型: 引用
- 来源: HTM 技术文档整理
- 置信度: 9/10
- 标签: #AI #HTM #神经科学 #算法 #技术实现
内容
生物学基础
HTM 模拟大脑新皮层(neocortex)的工作方式:
大脑新皮层结构:
┌─────────────────────────────────────┐
│ 皮层柱 (Cortical Column) │
│ ┌─────┐ ┌─────┐ ┌─────┐ │
│ │Cell│ │Cell│ │Cell│ ← 同一列 │
│ │Cell│ │Cell│ │Cell│ 的多个 │
│ │Cell│ │Cell│ │Cell│ 细胞 │
│ └─────┘ └─────┘ └─────┘ │
│ 列1 列2 列3 │
└─────────────────────────────────────┘
核心概念 1: SDR (稀疏分布式表示)
传统表示 (Dense):
[0.23, 0.87, 0.45, 0.12, 0.99, ...] ← 每个位都有意义
SDR (Sparse):
[0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,...]
↑ ↑ ↑ ↑
只有约2%的位是1,其余都是0
| 特性 | 说明 |
|---|---|
| 稀疏性 | 只有 ~2% 的位是激活的 |
| 分布式 | 语义分散在多个位上 |
| 鲁棒性 | 部分位翻转不影响识别 |
| 相似性 | 语义相似 → SDR 重叠度高 |
核心概念 2: 空间池化 (Spatial Pooling)
目标:将输入转换为稳定的稀疏表示
输入 SDR (1024位)
│
▼
┌─────────────────────────────────────┐
│ 空间池化器 │
│ │
│ 每列与输入的一部分随机连接 │
│ 列1 ← 连接到输入位 [3,17,42,...] │
│ 列2 ← 连接到输入位 [8,23,55,...] │
│ │
│ 激活规则: │
│ 1. 计算每列的输入重叠度 │
│ 2. 选择重叠度最高的 ~2% 列激活 │
│ 3. Boosting: 长期不活跃的列提高概率│
└─────────────────────────────────────┘
│
▼
输出 SDR (2048列,~40列激活)
关键机制:
- 竞争抑制:只有最匹配的列被激活
- Boosting:防止某些列永远不激活
- 学习:调整连接权重,相似输入→相似输出
核心概念 3: 时序记忆 (Temporal Memory)
目标:学习序列模式,预测下一个输入
每列有多个细胞(区分上下文):
列1 列2 列3
┌─────┐ ┌─────┐ ┌─────┐
│Cell0│ │Cell0│ │Cell0│
│Cell1│ │Cell1│ │Cell1│ ← 同一列的不同细胞
│Cell2│ │Cell2│ │Cell2│ 代表不同上下文
│Cell3│ │Cell3│ │Cell3│
└─────┘ └─────┘ └─────┘
细胞状态:
| 状态 | 含义 |
|---|---|
| Inactive | 未激活 |
| Active | 当前输入激活 |
| Predictive | 被预测将要激活 |
学习过程:
时间 t=1: 输入 A
列1 激活,但不知道上下文 → 列1所有细胞激活 (bursting)
时间 t=2: 输入 B
列2 激活
学习: 列1的活跃细胞 → 列2的某个细胞 (建立突触连接)
时间 t=3: 输入 C
列3 激活
学习: 列2的活跃细胞 → 列3的某个细胞
... 多次重复 A→B→C 序列后 ...
预测时:
看到 A → 列1.Cell2 激活 (特定上下文)
→ 列2.Cell3 变为 Predictive (预测B)
看到 B → 列2.Cell3 激活 (符合预测,不bursting)
→ 列3.Cell1 变为 Predictive (预测C)
核心概念 4: 树突和突触
每个细胞有多个树突段 (Dendritic Segment):
Cell
/ | \
/ | \
Seg1 Seg2 Seg3 ← 树突段
│ │ │
[突触] [突触] [突触] ← 每个段有多个突触连接到其他细胞
突触学习规则:
# 突触永久值 (permanence): 0.0 ~ 1.0
# 连接阈值: 0.5
if 突触参与正确预测:
permanence += 0.1 # 增强
elif 突触参与错误预测:
permanence -= 0.1 # 减弱
if permanence > 0.5:
突触有效 (connected)
else:
突触无效 (potential)
核心概念 5: 高阶上下文预测
一阶预测(概念图):
P(C | B) = ? 只看当前输入
高阶预测(HTM):
P(C | A→B) ≠ P(C | X→B)
通过激活同一列的不同细胞来区分上下文:
- A→B 后: 列2.Cell3 激活
- X→B 后: 列2.Cell7 激活
不同细胞有不同的突触连接,指向不同的预测。
异常检测原理
正常情况:
预测: [列2, 列5, 列8 将激活]
实际: [列2, 列5, 列8 激活]
异常分数: 0 (完全匹配)
异常情况:
预测: [列2, 列5, 列8 将激活]
实际: [列3, 列6, 列9 激活]
异常分数: 1.0 (完全不匹配)
计算公式:
anomaly = 1 - (预测正确的列数 / 实际激活的列数)
HTM 完整数据流
原始输入 (文本/数值)
│
▼
┌─────────────────┐
│ SDR 编码器 │ → 转换为稀疏二进制向量
└─────────────────┘
│
▼
┌─────────────────┐
│ 空间池化器 │ → 生成稳定的稀疏表示
└─────────────────┘
│
▼
┌─────────────────┐
│ 时序记忆 │ → 学习序列,生成预测
└─────────────────┘
│
├── 预测激活的列/细胞
├── 异常分数
└── 学习更新(突触调整)
HTM vs LLM:适用场景对比
| HTM 假设 | 对话系统现实 |
|---|---|
| 连续数据流 | 离散请求-响应 |
| 模式重复出现 | 话题随机跳跃 |
| 固定词汇表 | 开放域文本 |
| 数值/类别输入 | 复杂语义 |
结论:HTM 更适合时序异常检测、传感器数据流等场景;LLM 的 Attention 机制更适合自然语言的长上下文理解。
关联
-
概念层面:
- INFO-120(HTM 层次时序记忆)- 本条目的概念版本
- INFO-121(千脑智能)- HTM 的理论升级
- INFO-123(SDR 编码器训练)- SDR 如何从数据生成
- INFO-124(HTM 网络结构)- 从细胞到层级的架构
-
技术对照:
- SDR 的"语义相似→重叠度高"与 Embedding 的"语义相似→向量距离近"是不同的表征方式
- 时序记忆的"预测性激活"机制在 Transformer 中没有对应物
-
应用启发:
- 异常检测算法可借鉴 HTM 的"预测-实际"差异计算
- 高阶上下文区分机制可能对多轮对话理解有启发