Meaning Dataset 详细介绍文档

目录

  1. 概述
  2. 核心概念
  3. 语义层级结构
  4. Rank 编码机制
  5. 序列生成机制
  6. 特殊功能机制
  7. 数据示例

概述

Meaning Dataset 是一个模仿自然语言结构和抽象表达的数据集。它通过层级化的树形结构来表示语义(meaning),其中每个复杂的语义都可以分解为更简单的语义单元,最终分解为不可再分的基本单元(token)。

设计理念

层级化语义表示

每个 meaning 都有一个唯一编号,编号的大小直接反映其复杂度:

这种设计模仿了人类认知的层级特性——复杂概念总是建立在简单概念之上。

可组合性原理

所有复杂的 meaning 都可以由更低编号的 meaning 组合而成。这种递归分解的特性确保了:

自然语言模拟

Meaning Dataset 模仿了自然语言的核心特征:


核心概念

Token(词元)- 原子语义单元

Token 是整个 meaning 系统中最基本的、不可再分的数据表达单元。

特征

类比:就像自然语言中,"苹果"、"红色"、"吃"这些单词无法再分解为更小的有意义的单位。

Meaning(语义)- 可组合的语义单位

Meaning 是一种语义或符号的表达,用唯一编号标识。

编号规则

编号范围 类型 特性
0 ~ vocab_size-1 基本 meaning 即 token,不可拆解
vocab_size 及以上 复合 meaning 可拆解为更低编号的 meaning

复杂度递增:编号越大,表示语义越复杂。这是因为:

类比:在自然语言中:

Level(层级)- 语义深度

Level 表示当前 token 相对于 root meaning 的距离,反映了语义的深度。

层级定义

可视化

Level 3:        Meaning A
                /        \
Level 2:    Meaning B   Meaning C
            /    \        /    \
Level 1:  Token  Token  Meaning D  Token
                      /     \
Level 0:             Token   Token

特殊 Level 值

含义 用途
0 基本层 token 所在的层
255 Tree 标记 标识树节点位置(with_tree 模式)
511 Stride 标记 标识重复的 token(stride 模式)

Meaning Height(高度)- 树的深度

Meaning Height 是当前 meaning 从根节点到叶节点的最大层级深度。

意义

示例

Meaning A (Height = 1):
    └── Token1, Token2, Token3

Meaning B (Height = 2):
    └── Meaning C (Height = 1)
        └── Token1, Token2
    └── Token3

Meaning C (Height = 3):
    └── Meaning D (Height = 2)
        └── Meaning E (Height = 1)
            └── Token1, Token2
        └── Token3
    └── Token4

Meaning Weight(宽度)- 叶节点数量

Meaning Weight 是当前 meaning 的叶节点(token)总数,也称为序列长度。

意义

示例

Meaning A (Weight = 5):
    ├── Token1
    ├── Token2
    ├── Token3
    ├── Token4
    └── Token5
    (Height = 1, Weight = 5)

Meaning B (Weight = 5):
    └── Meaning C
        └── Meaning D
            └── Meaning E
                └── Token1, Token2, Token3, Token4, Token5
    (Height = 4, Weight = 5)

语义层级结构

树形分解结构

每个 meaning 通过层层递归分解形成树形数据结构:

前序遍历序列化

树形结构通过前序遍历(pre-order traversal)展开为线性序列:

遍历规则

  1. 访问当前节点的第一个子项
  2. 递归访问该子项的所有子项
  3. 返回并访问当前节点的第二个子项
  4. 重复直到所有子项被访问

示例

树形结构:
        A
      / | \
     B  C  D
    /\   |
   E  F  G

前序遍历序列:B, E, F, C, G, D

Meaning 分解规则

基本 Meaning(0 到 vocab_size-1)

复合 Meaning(>= vocab_size)

复合 meaning 的生成遵循以下规则:

  1. 子项选择:从 [0, current_meaning) 范围内随机选择子项

    • 确保子项编号小于父项,满足"编号越小越简单"的原则
    • 可以选择 token 或其他复合 meaning
  2. 子项数量:在 [min_subitem, max_subitem] 之间

    • min_subitem:最少子项数
    • max_subitem:最多子项数
    • 实际数量随机决定
  3. 递归分解

    • 对于每个子项,如果是复合 meaning,递归获取其序列
    • 如果是 token,直接使用其值
  4. 序列拼接

    • 按子项顺序拼接所有子序列
    • 计算每个位置的新 level、rank_idx、rank_all
  5. 层级计算

    • 新 level = 子项 level + 1
    • 这样逐层递增,形成层级结构

Level 传播机制

Level 信息随着 meaning 的分解逐层传播:

传播规则

父 meaning 的 level = 子 meaning 的 level + 1

示例

Meaning 1000 (Level 在序列中为 1)
├── Meaning 500 (Level 在序列中为 2)
│   ├── Token 10 (Level 在序列中为 3)
│   └── Token 20 (Level 在序列中为 3)
└── Token 30 (Level 在序列中为 2)

序列:[500(分解), 30]
实际上序列展开为:[10, 20, 30]
Level:  [3,  3,  2]

可视化

Level 0: ████████████████ (Token 层)
Level 1:     ██████       (第一层组合)
Level 2:       ████       (第二层组合)
Level 3:        ██        (第三层组合)

Rank 编码机制

Rank 编码是 meaning 系统的核心机制,用于精确定位每个 token 在树形结构中的位置。

设计目标

Rank 编码需要解决两个问题:

  1. 位置定位:token 在每一层中的位置是什么?
  2. 分支信息:每一层有多少个分支?

Rank_idx(排序索引)- 位置编码

Rank_idx 记录了 token 在每一层中的位置信息。

编码方式

编码公式

rank_idx = (pos_0) | (pos_1 << 4) | (pos_2 << 8) | ...

示例解析

rank_idx = 273 = 0x111

二进制:0001 0001 0001
      层2  层1  层0

含义:
- 第 0 层位置:1 (二进制 0001)
- 第 1 层位置:1 (二进制 0001)
- 第 2 层位置:1 (二进制 0001)

填充规则

Tree Token 特殊处理

Rank_all(排序总数)- 分支计数

Rank_all 记录了每一层的总分支数量。

编码方式

编码公式

rank_all = (count_0) | (count_1 << 4) | (count_2 << 8) | ...

示例解析

rank_all = 4369 = 0x1111

二进制:0001 0001 0001 0001
      层3  层2  层1  层0

含义:
- 第 0 层总数:1
- 第 1 层总数:1
- 第 2 层总数:1
- 第 3 层总数:1

计算规则

Tree Token 特殊处理

Rank 计算示例

考虑以下树形结构:

        A (rank_idx=?, rank_all=?)
      / | \
     B  C  D
    /\   |
   E  F  G

计算过程

  1. 叶节点(E, F, G)

    • 都是 token(level 0)
    • rank_idx = 0, 1, 0(各自在父节点中的位置)
    • rank_all = 0xFFFFFFF(填充值)
  2. 中间节点(B, C, D)

    • B 有 2 个子项(E, F)
    • C 有 1 个子项(G)
    • D 是 token
    • rank_idx(B) = 0 | (0 << 4) = 0(第 0 层第 0 个)
    • rank_all(B) = 0xF | (2 << 4) = 0x2F(第 1 层有 2 个)
  3. 根节点(A)

    • 有 3 个子项(B, C, D)
    • rank_idx(A) = 0 | (0 << 4) | (0 << 8) = 0
    • rank_all(A) = 0xF | (0xF << 4) | (3 << 8) = 0x3FF

Rank 的用途

1. 位置查询: 通过 rank_idx 和 rank_all 可以快速判断:

2. 结构分析

3. 训练 Mask: 可以使用 rank 信息精确控制哪些 token 参与训练:

val_mask_level = [0, 1]     # 只看第 0 层和第 1 层
val_mask_idx = [0, -1]      # 第 0 层第 0 个,第 1 层最后 1 个

序列生成机制

序列展开过程

将 meaning 树展开为线性序列的过程:

步骤 1:从根 meaning 开始 步骤 2:获取 meaning 的所有子项 步骤 3:对每个子项:

信息携带

序列中的每个位置携带多种信息:

信息 描述 用途
token 基本单元的值 模型的输入
level 当前 token 的层级 理解结构深度
rank_idx 当前 token 在各层的位置 定位和结构分析
rank_all 各层的分支总数 结构完整性信息

约束条件

为了保证 rank 编码的有效性,系统有以下约束:

约束 原因
每层最多子项数 15 rank 使用 4 位存储
最大层级数 8 rank 总共 32 位,每层 4 位
token 范围 0 ~ vocab_size-1 词汇表大小限制

特殊功能机制

Stride(步长)功能

目的:通过重复 token 来模拟某种强调或时序特性。

机制

示例

stride = 2
原始序列:[A, B, C]
扩展后:  [A, A', B, B', C, C']
Level:   [0, 511, 0, 511, 0, 511]

用途

With Tree 功能

目的:在序列中显式标记树形结构的位置。

机制

示例

without_tree:
Meaning A 有子项 [B, C]
序列:[B(展开), C(展开)]

with_tree:
序列:[B(展开), TREE, C(展开), TREE]

可视化

Tree:     A
         / \
        B   C

序列:[B1, B2, TREE, C1, C2, C3, TREE]
      └─B的部分──┘ └──C的部分───┘

用途

验证 Mask(Validation Mask)

目的:精确控制哪些 token 参与训练损失计算。

机制

配置方式

val_mask_level = [0, 1, 2]    # 指定层级
val_mask_idx = [0, 0, -1]     # 指定每层的位置

含义:
- 第 0 层的第 0 个 token
- 且第 1 层的第 0 个 token
- 且第 2 层的最后 1 个 token
- 只有同时满足这 3 个条件的 token 才参与训练

用途

Mask 类型

类型 描述 用途
token_mask 区分正常 token 和特殊 token 过滤 stride/tree token
val_mask 根据位置筛选 token 控制训练目标

数据示例

完整示例

以下是一个完整的 meaning 树及其展开序列:

配置:
vocab_size = 256
meaning = 115200

树形结构:
                    115200
           /         |          \
      10240         1100          12322
     / | \         /  \         /    |   \
  512  32  1201  245  233   3214   532   324
  / \        /   \            /  \    |    / \
123 42    320    500       1231  23  324  93  176
          / \    / \       / \       / \
        176 11 255 129   129  99   211 111

展开序列

序列内容:  123   42    32   176   11   255  129  245  233  129   99   23  211  111   93  176
level:     3     3     2    4     4    4    4    2    2    4    4    3   4    4    3    3
rank_idx:  0     1     1    0     1    16   17   16   17   0    1    2   0    1    32   33
  at L0:   0     1     1    0     1    0    1    0    1    0    1    2   0    1    0    1
  at L1:   0     0     0    0     0    1    1    1    1    0    0    0   0    0    2    2

Rank 编码详解

以序列中的几个位置为例:

位置 0 (token=123)

位置 3 (token=176)

位置 14 (token=93)

实际树形可视化

90800
├── 17100
│   ├── 3078
│   │   ├── 153
│   │   │   ├── <25>
│   │   │   ├── 34
│   │   │   │   ├── <11>
│   │   │   │   └── <0>
│   │   │   ├── 39
│   │   │   │   ├── <3>
│   │   │   │   └── <7>
│   │   │   ├── <15>
│   │   │   └── 37
│   │   │       ├── <8>
│   │   │       ├── <10>
│   │   │       └── <7>
│   │   ├── 848
│   │   │   ├── 212
│   │   │   │   ├── 53
│   │   │   │   │   ├── <14>
│   │   │   │   │   └── <13>
│   │   │   │   └── 60
│   │   │   │       ├── <1>
│   │   │   │       ├── <12>
│   │   │   │       └── <13>
│   │   │   └── 124
│   │   │       ├── <12>
│   │   │       ├── <13>
│   │   │       ├── <24>
│   │   │       └── 32
│   │   │           ├── <5>
│   │   │           ├── <8>
│   │   │           ├── <8>
│   │   │           ├── <7>
│   │   │           └── <1>
│   │   └── 299
│   │       ├── 66
│   │       │   ├── <18>
│   │       │   ├── 38
│   │       │   │   ├── <1>
│   │       │   │   ├── <11>
│   │       │   │   ├── <11>
│   │       │   │   ├── <8>
│   │       │   │   └── <4>
│   │       │   ├── <0>
│   │       │   ├── <5>
│   │       │   └── <2>
│   │       ├── 61
│   │       │   ├── <20>
│   │       │   ├── <10>
│   │       │   ├── <6>
│   │       │   └── <16>
│   │       ├── 46
│   │       │   ├── <14>
│   │       │   └── <9>
│   │       └── 37
│   │           ├── <8>
│   │           ├── <10>
│   │           └── <7>
...

图例:

统计特性

对于 vocab_size = 256, size = 115200 的配置:

指标 典型值 说明
总 meaning 数 115200 包含基本 token 和复合 meaning
基本 token 数 256 vocab_size
最大序列长度 50-200 取决于分解规则
平均序列长度 20-50 取决于 min/max_subitem
最大层级深度 4-8 取决于随机分解结果
最常见序列长度 10-30 大多数 meaning 的复杂度

设计优势

1. 层次化表达

Meaning Dataset 通过层级结构自然地表达了语义的组合性和层次性,这与人类认知和自然语言的结构高度一致。

2. 可控复杂度

通过调整参数,可以控制:

3. 丰富的结构信息

每个 token 携带多层信息:

4. 灵活的训练控制

通过验证 mask,可以:

5. 可扩展性

系统支持多种扩展:


与自然语言的类比

Meaning Dataset 自然语言 说明
Token 单词 基本表达单元
Meaning 词组/句子 由单词组合成的有意义的单位
Level 嵌套深度 句法结构的嵌套层级
Rank_idx 词序/句法位置 单词在短语/句子中的位置
Rank_all 分支数 可选的并列成分数量
Tree 句法树 语法结构的树形表示
Sequence 线性文本 树形结构展开后的线性形式

这种类比使得 Meaning Dataset 成为研究语言模型对结构化信息处理能力的理想工具。


Revision #4
Created 2025-07-21 05:31:21 UTC by Colin
Updated 2026-01-24 07:55:03 UTC by Colin