开发者生态
morning
在 AI 时代,中文的底层编码到底需不需要被重新发明?
2026-08-13
1 阅读
约7分钟阅读
小胡子的饭盒_ShU5J
字号:
目前所有中文 AI 模型(无论 GPT、Llama 还是国产大模型)处理汉字的底层方式,本质上都是把汉字当做一个「编号」(Unicode 码点),或者拆成 BPE 子词。模型看到的「一」(U+4E00)和「丁」(U+4E01),在数学上没有任何结构关系——它俩的编码仅差 1,但字形完全不同;而「一」和「贰」的编码相差巨大,但结构上却都含有「一」的部件。 汉字本身有明确的部件、笔画、结构关系。我想确认的核心问题是: 在 AI 时代,中文的底层编码到底需不需要被重新发明? 也就是说,我们是否应该在 Unicode/BPE 之上,建立一层可计算的、包含汉字结构信息的中文编码层,而不是继续让模型把汉字当成无结构编号? 为此我设计了一套 32 位中文结构编码(CNBE-32),把每个汉字拆成 5 个字段: 字段 位数 含义 radix 8 bit 部首(如「亻」「木」「氵」) strokes 5 bit 笔画数(1-32) struct 4 bit 结构类型(左右/上下/包围/独体等) index 11 bit 同结构字内的序号 ext 4 bit 扩展标记 核心思想:相近结构的汉字,在编码空间里距离也近。项目已开源: CNBE-32-Chinese-Native-Binary-Encoding 。 已完成的核心实验 我用完全相同的 Transformer 模型,唯一区别是输入编码不同: 编码方式 模型 next-token 准确率 备注 Unicode 8 层 Dense 0.001% 基本等于随机猜 CNBE-32 8 层 Dense 2.61% 同样模型,2600 倍提升 CNBE-32 128 专家 MoE 22.96% 结构路由,进一步放大 其中「结构类型」(左右/上下/包围等)的预测准确率达到 43%(随机基线约 6.7%)。 其他工程事实: 用正规出版物(非互联网爬虫)构建了 51.4 亿字符、三重去重、15 分类的语料库,CJK 覆盖率 99.9996%,已通过 A+ 级自动质量校准。 CNBE 的五层实现(Python/C/Rust/Verilog/RISC-V)全部 PASS,Linux 内核已在 QEMU/OpenSBI 下启动。 数学基础已验证:伪度量边界、分配格、3D 前缀和 1500x 加速。 想请教的子问题 方向本身是否有价值?让 AI 直接学习汉字的结构信息,而不是把汉字当成无结构编号,这种「结构先验」的思路是否值得继续投入? 如果意义不大,核心问题在哪?是技术路线有根本性缺陷(比如结构先验可以被大模型自动学到),还是工程落地太难(需要从头改芯片/指令集/操作系统),还是中文本身就不需要这种细粒度编码? 如果真的有价值,下一步该怎么走?继续冲 MoE 规模(256/512 专家、更大语料),还是转向应用场景(形近字校验、古籍校对、手写识别),还是先把论文投出去占坑? 实验结论是否足以支撑论文?四组对照实验(24M v1 语料,固定 eval split)结果如下;如果稳健性复核(独立重评估 + 3 种子 × 3 条件 + 等计算预算对照)全部通过,是否足以支撑「CNBE 为中文结构计算提供了可验证的底层编码方案」这一结论? 条件 eval_loss next-acc struct Gini 参数量 MoE-128 4.54 22.96% 43.05% 0.147 289.9M Dense same 7.30 2.61% 38.41% — 37.9M Dense matched 待执行 待执行 待执行 — ~289M Unicode Dense 7.79 0.001% — — 38.1M 具体技术子问题(希望重点回答): MoE 训练中 expert_gini 达到 0.297(上一轮小规模实验为 0.207),如何调整路由均衡?已尝试 balance_weight 从 0.01 调到 0.02(Gini 降到约 0.28,但 eval_loss 上升约 0.05)和 aux_loss_weight 从 0.1 调到 0.2(效果不明显),期望将 Gini 降到 0.20 以下且 eval_loss 不显著上升(当前 4.59)。 CNBE 码流中约 21.6% 是 code 0(标点、英文、数字、空格等非汉字字符统一映射为 0),是否应该在 next-code prediction 的 loss 计算中 mask 掉?实测 mask 后 eval_loss 从 4.59 降到约 4.3,但 next-code 准确率从 23.56% 降到约 21%。 DCU 双卡训练接近完成时(step 125,970/125,976),NCCL 的 ALLREDUCE 操作超时导致进程崩溃,如何排查超时原因,并让训练在超时时能优雅保存 checkpoint? 补充说明(避免误解) 我不是在试图「替代 Unicode」,而是在 Unicode 之上加一层可计算的结构语义层。项目定位是「从位字段到 Linux 内核到 MoE 实验全链路可审计」的中文结构计算研究项目,所有代码、数据、论文草稿均可审计。 期望结果 希望得到真正懂行的人对母题及上述子问题的真实看法:如果这个方向有问题,请明确告诉我为什么;如果值得继续,也请指出下一步最该投入的地方。
这篇文章对您有帮助吗?
订阅66必读
每日精选科技资讯,直达你的邮箱