GrowPIP
← 返回所有素材

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 的"预测-实际"差异计算
    • 高阶上下文区分机制可能对多轮对话理解有启发