Zhangzhe's Blog

The projection of my life.

0%

Dynamic Chunking for End-to-End Hierarchical Sequence Modeling

URL

TL;DR

  • 标题是 “用于端到端分层序列建模的动态分块” ,实际上包含了不少信息量:
    • “端到端”:意味着 token free,真正的端到端语言模型,输入输出都是字节流,不需要 tokenization 过程
    • “分层”:意味着 H-Net 模型结构是 递归 的,H-Net 模型由 encoder + main network + decoder 组成,其中 main network 还可以是 H-Net 模型
    • “动态分块”:意味着 H-Net 模型可以动态地调整 chunk 的大小,可以理解为维护了一个隐式的动态 tokenizer,模型会在学习过程中找到最优的隐式分词方法
  • 本质是一个基于 SSM + Transformer 结构的大模型,抛弃了 tokenization 过程,直接在字节流上进行训练和推理

Algorithm

H-Net 总体结构

hnet.png

现有的分词机制的缺陷

  • 当前主流语言模型(如 ChatGPT )依赖预定义的分词器(如 BPE ),存在以下问题:
    • 语义割裂​​:分词器基于统计规则,无法根据上下文动态调整边界(如将 “product” 错误拆分为 “pro-duct” )
    • 跨语言/模态适配性差​​:在中文、代码或 DNA 序列等缺乏显式分隔符的领域表现不佳
  • 直接字节级建模(如 MambaByte ),计算开销巨大,且性能低于分词模型
  • 一些启发式分块规则(如 MegaByteSpaceByte)依赖​​启发式分块规则​​(如固定步长或空格分隔),无法学习数据驱动的分块策略,限制了模型对复杂信息的表达能力

H-Net 的解决方案

层级化处理架构(U-Net 式设计)​​

  • 三级模块
    • 编码器(E)​​:处理原始字节(小规模 SSM 层,高效捕获细粒度特征)
    • 主网络(M)​​:处理压缩后的语义块(大规模 Transformer 层,学习高层抽象)
    • 解码器(D)​​:恢复原始分辨率(SSM 层)
  • 递归扩展​​:主网络可嵌套 H-Net 自身,形成多级抽象(如字符 → 词 → 短语)

Encoder Network

  1. 路由模块(Routing Module
    • 用相邻向量的余弦相似度判断是否需要分块
    • pt=12(1sim(qt,kt1))p_t=\frac{1}{2}(1-sim(q_t,k_{t-1}))
      • tt 表示 position
      • qq 表示 query
      • kk 表示 key
      • simsim 表示余弦相似度
      • ptp_t 表示当前位置分块概率
    • 当相邻向量语义变化大时,ptp_t 会趋近于 1,表示需要分块
  2. 下采样模块(Downsampler
    • 将上一步分块的序列下采样
    • 具体使用的下采样方式是 只保留路由模块选定的边界向量,其他向量直接丢弃

Main Network

  • 一个最常见的 Transformer 结构
  • 输入是 Encoder Network 输出的下采样后的向量
  • 输出和输入的 shape 相同

Decoder Network

  1. 平滑模块(Smoothing Module
    • 用指数移动平均法解决离散决策的梯度不可导问题
    • zˉt=Pz^t1+(1Pt)zˉt1\bar z_t=P\cdot \hat z_{t-1}+(1-P_t)\cdot \bar z_{t-1}
      • PtP_t 表示当前位置分块概率
      • z^t\hat z_t 表示主网络输出的压缩向量
      • zˉt1\bar z_{t-1} 表示上一步平滑后的向量
      • zˉt\bar z_t 表示平滑后的向量
  2. 上采样模块(Upsampler

    ct={ptif bt=11ptif bt=0c_t=\left\{ \begin{array}{l} p_t & \text{if}\ b_t=1 \\ 1- p_t & \text{if}\ b_t=0 \end{array} \right.

    Upsamplert=STE(ct)z~t\text{Upsampler}_t = STE(c_t)\cdot \tilde z_t

    • btb_t 表示当前位置是否分块,bt=1b_t=1 表示分块,bt=0b_t=0 表示不分块
    • ptp_t 表示当前位置分块概率
    • ctc_t 表示当前位置 main network 输出的置信度
    • z~t\tilde z_t 表示当前位置 main network 输出的向量 复制到原始分辨率

效果

  • 效果比 tokenization 更好
  • 在语言、代码、DNA等异构数据中验证普适性,为多模态基础模型提供新范式

Thoughts

  • 能看出 SSM 模型已经开始改变战略,从正面和 Transformer 硬刚到 曲线救国
  • STE 真是个万金油,哪哪都有它