🧠 BypBERT-tiny-zh-v1

轻量级中文 BERT 预训练模型(8.7M 参数),基于中文维基百科 129 万句语料,采用掩码语言模型(MLM)策略训练。


📋 模型概览

属性 值
架构 BERT(Encoder-only)
参数量 8,689,032(≈ 8.7M)
隐藏层维度 256
层数 4
注意力头数 4
前馈网络维度 1,024
词表大小 21,128(bert-base-chinese WordPiece)
最大序列长度 128
预训练任务 掩码语言模型(MLM)
训练语料 中文维基百科 1,287,957 句
训练步数 116,000 步(5 epochs,含续训)
基础模型 bert-base-chinese
训练硬件 NVIDIA Tesla T4(14.6 GB 显存)/ Google Colab Pro
框架版本 PyTorch / Transformers 5.17.0

🎯 适用场景

✅ 推荐使用

任务 说明
文本分类微调 情感分析、主题分类、意图识别等
命名实体识别(NER) 人名、地名、机构名等实体标注
句向量提取 通过 [CLS] 向量计算句子相似度
语义检索 轻量级语义匹配与检索
端侧部署 8.7M 参数适合移动端/嵌入式设备

⚠️ 不推荐直接使用

  • 知识问答/填空题:MLM 命中率 10%,事实记忆能力有限
  • 生成式任务:Encoder-only 架构不支持文本生成
  • 长文档建模:最大序列长度 128 tokens

📊 评估结果

评估框架

本模型采用五维度评估框架,从不同侧面全面检验模型能力:

维度 测试方法 衡量能力 学术依据
语言建模 困惑度(Perplexity) 对中文语言模式的概率建模质量 Jelinek, 1997
🎯 事实记忆 MLM 遮空预测 精确回忆训练语料中的具体知识 Devlin et al., 2019
🔍 语义区分 句子相似度对比 同类主题句子的向量是否更接近 Reimers & Gurevych, 2019
语法理解 通顺/不通顺句判断 区分语法正确与错误的句子 Linzen et al., 2016
🔄 上下文敏感 多义词向量对比 同一字在不同语境下的表示差异 Ethayaraj, 2019

为什么需要多维度? 单一指标只能反映模型的一个侧面。困惑度低不代表能精确填空,MLM 命中率高也不代表语言理解好。多维度交叉验证才能全面判断模型"学到了什么"。

训练语料覆盖

训练语料 corpus.txt 共 1,287,972 行,覆盖中文维基百科多个主题领域:

语料位置 主题领域
1 ~ 10 万行 农业
~ 10 万行 美国政治(克林顿传记)
~ 20 万行 语言学(罗常培、王力等)
~ 30 万行 新世纪音乐
~ 50 万行 中国历史(漕运、南新仓)
~ 70 万行 网络技术(I2P)
~ 80 万行 光学(复消色差镜头)
~ 90 万行 日本历史(德山藩)
~ 100 万行 野生动物(短尾猫)
~ 110 万行 科幻小说(艾西莫夫)
~ 128 万行 体育(FIFA 世界杯)

核心指标

📈 困惑度(Perplexity)

指标 值 基线 提升
困惑度 2.05 21,128(随机) 10,315 倍

评估使用 8 段直接取自训练语料的文本,覆盖农业、政治、音乐、语言学、历史、野生动物、科幻、体育等主题。困惑度 2.05 属于优秀水平(< 100 为优秀)。

🎯 MLM 遮空预测(Top-5 命中率)

指标 值
命中率 1/10(10.0%)
测试句数 10 句(均取自训练语料原文)

⚠️ 重要澄清:MLM 命中率低 ≠ 模型没用

MLM 填空测试要求模型精确回忆具体事实(如"德山""TCP""罗常培"等专有名词),而下游任务(分类、NER、句向量)需要的是语言理解能力——两者是完全不同的能力维度。

模型虽然填不对空,但预测并非随机,已学会:

  • ✅ 词性判断(知道 [MASK] 位置应填什么词性)
  • ✅ 语义搭配(知道"征"后接名词,"第"后接数字)
  • ✅ 语法结构(知道"的""性"等结构词的用法)
  • ❌ 具体事实(不知道"征银""第七位""德山"等低频专有名词)

下游任务依赖的是前三项,而非最后一项。

下游任务 需要能力 是否需要事实记忆 本模型是否够用
文本分类 语言理解 ❌ ✅ 够用
命名实体识别 语言理解 ✅ 够用
句向量编码 语言理解 ❌ ✅ 够用
情感分析 语言理解 ✅ 够用
知识问答 事实记忆 ✅ ❌ 不够

📝 语法判断

指标 值 基线
准确率 **80.0%**(4/5) 50%(随机)

模型能正确区分通顺句与词序打乱/完全倒序的不通顺句,说明已学会中文语序规则(主-谓-宾结构)。

🔍 语义区分

指标 值
同类主题平均相似度 0.8906
异类主题平均相似度 0.7841
差值 0.1065

同类主题句子对的 [CLS] 向量余弦相似度 consistently 高于异类主题,证明模型能捕捉主题语义信息。

🔄 上下文敏感性

指标 值 阈值
"打"字多义平均相似度 0.7653 < 0.99

"打"字在三个不同语境(打电话 / 打篮球 / 打字)中产生显著不同的向量表示,证明模型具备上下文相关的词表示能力——这正是 BERT 相对于传统词嵌入(如 Word2Vec)的核心优势。

训练进程

阶段 训练句数 步数 困惑度 MLM 命中率
Quick Test(1 万句) 10,000 314 868.90 0/10
Checkpoint-76000(75%) 1,287,957 76,000 3.50 0/10
Final(100%) 1,287,957 116,000 2.05 1/10
Quick Test (10K 句)     → 困惑度 868.90
Checkpoint-76000 (75%)  → 困惑度   3.50  (↓ 248 倍,质变阶段)
Final (100%)            → 困惑度   2.05  (↓ 1.7 倍,精调阶段)

快速使用

加载模型

from transformers import AutoModelForMaskedLM, AutoTokenizer

model = AutoModelForMaskedLM.from_pretrained("eebyp/BypBERT-tiny-zh-v1")
tokenizer = AutoTokenizer.from_pretrained("eebyp/BypBERT-tiny-zh-v1")

掩码语言模型(填空)

from transformers import pipeline

fill_mask = pipeline("fill-mask", model=model, tokenizer=tokenizer)
results = fill_mask("农业属于第[MASK]级产业。")
for r in results:
    print(f"{r['token_str']}: {r['score']:.4f}")
# 输出: 一: 0.4394, 二: 0.3070, 三: 0.1294 ...

提取句向量

import torch

inputs = tokenizer("今天天气很好", return_tensors="pt")
outputs = model(**inputs, output_hidden_states=True)
cls_embedding = outputs.hidden_states[-1][0, 0, :]  # [CLS] 向量,256 维
print(cls_embedding.shape)  # torch.Size([256])

微调文本分类器

from transformers import BertForSequenceClassification

classifier = BertForSequenceClassification.from_pretrained(
    "eebyp/BypBERT-tiny-zh-v1",
    num_labels=10  # 根据你的任务调整
)

️ 局限性

局限 说明 建议
容量有限 8.7M 参数限制了事实记忆能力 在下游任务数据上微调
序列长度短 最大 128 tokens 不适合长文档建模
仅 MLM 预训练 未使用 WWM 或 MacBERT 策略 关注后续版本(v2 WWM / v3 Mac)
无下游基准测试 仅有内在评估指标 建议在具体任务上微调后评估

🔮 后续版本

版本 预训练策略 状态
v1(当前) 标准 MLM ✅ 已发布
v2 全词掩码(WWM) 📋 计划中
v3 MacBERT 风格(MLM as Correction) 📋 计划中

📖 引用

如果在研究中使用本模型,请引用:

@misc{bai2026bypbert,
  title={BypBERT: A Series of Lightweight Chinese BERT Models},
  author={Bai, Yiping},
  year={2026},
  publisher={Hugging Face},
  howpublished={\url{https://huggingface.co/eebyp/BypBERT-tiny-zh-v1}}
}

👤 作者

Downloads last month
30
Safetensors
Model size
8.69M params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for eebyp/BypBERT-tiny-zh-v1

Finetuned
(270)
this model