meaning dataset
Meaning Dataset 详细介绍文档
目录
概述
meaning数据集是一个模仿自然语言,以及抽象表达的数据集。Meaning Dataset 是一个模仿自然语言结构和抽象表达的数据集。它通过层级化的树形结构来表示语义(meaning),其中每个复杂的语义都可以分解为更简单的语义单元,最终分解为不可再分的基本单元(token)。
设计理念
层级化语义表示
每个 meaning 都有一个唯一编号,编号的大小直接反映其复杂度:
这种设计模仿了人类认知的层级特性——复杂概念总是建立在简单概念之上。
可组合性原理
所有复杂的 meaning 都可以由更低编号的 meaning 组合而成。这种递归分解的特性确保了:
自然语言模拟
Meaning Dataset 模仿了自然语言的核心特征:
核心概念
Token(词元)- 原子语义单元
Token 是整个 meaning 系统中最基本的、不可再分的数据表达单元。
特征:
类比:就像自然语言中,"苹果"、"红色"、"吃"这些单词无法再分解为更小的有意义的单位。
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 值:
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)展开为线性序列:
遍历规则:
示例:
树形结构:
A
/ | \
B C D
/\ |
E F G
前序遍历序列:B, E, F, C, G, D
Meaning 分解规则
基本 Meaning(0 到 vocab_size-1)
复合 Meaning(>= vocab_size)
复合 meaning 的生成遵循以下规则:
子项选择:从 [0, current_meaning) 范围内随机选择子项
子项数量:在 [min_subitem, max_subitem] 之间
递归分解:
序列拼接:
层级计算:
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 编码需要解决两个问题:
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
计算过程:
叶节点(E, F, G):
中间节点(B, C, D):
根节点(A):
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:对每个子项:
信息携带
序列中的每个位置携带多种信息:
约束条件
为了保证 rank 编码的有效性,系统有以下约束:
特殊功能机制
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 类型:
数据示例
完整示例
以下是一个完整的 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>
...
图例:
<> 中的数字:token 的序列索引位置
普通数字:meaning 的编号
统计特性
对于 vocab_size = 256, size = 115200 的配置:
设计优势
1. 层次化表达
Meaning Dataset 通过层级结构自然地表达了语义的组合性和层次性,这与人类认知和自然语言的结构高度一致。
2. 可控复杂度
通过调整参数,可以控制:
3. 丰富的结构信息
每个 token 携带多层信息:
4. 灵活的训练控制
通过验证 mask,可以:
5. 可扩展性
系统支持多种扩展:
与自然语言的类比
这种类比使得 Meaning Dataset 成为研究语言模型对结构化信息处理能力的理想工具。