BypBERT-tiny-zh-v2

全词遮盖(WWM)预训练的中文 Tiny BERT 模型


模型信息

项目 值
模型规模 8.7M 参数(4 层 / 256 隐藏维 / 4 注意力头)
预训练策略 WWM(Whole Word Masking)
分词工具 jieba
训练语料 1,287,957 句中文维基百科(137 MB)
训练步数 100,625 步(5 epochs × 20,125 步/epoch)
批大小 64
学习率 1e-4(AdamW + 线性 warmup + 线性衰减)
训练平台 Google Colab Pro · NVIDIA Tesla T4(15 GB)
训练耗时 ~5 小时
最终 Loss 4.3068

策略说明

本模型采用 WWM(全词遮盖) 策略:使用 jieba 分词识别中文词边界,以词为单位进行遮盖——一个词的所有 WordPiece token 同时遮盖或同时保留。

原句:我喜欢吃苹果
分词:我 / 喜欢 / 吃 / 苹果
遮盖:我 喜欢 吃 [MASK][MASK]  ← "苹果"两个字同时遮盖

与 v1(MLM 随机子词遮盖)相比,WWM 在每个对比检查点的 loss 均更低(差距约 0.05-0.10),表明全词遮盖策略在 tiny 规模上具有学习优势。


适用场景

任务 示例
文本分类 情感分析、意图识别、垃圾邮件检测
命名实体识别 从文本中抽取人名、地名、机构名
语义匹配 判断两句话是否表达相同意思
关键词抽取 从文档中提取核心关键词
端侧部署 RK3588、手机等资源受限设备

不适用场景

任务 原因
对话/问答 需要生成式模型(GPT、Qwen 等)
文本生成/写作 同上
翻译 需要 Encoder-Decoder 架构(如 T5)

快速使用

from transformers import AutoModelForMaskedLM, AutoTokenizer

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

inputs = tokenizer("我喜欢吃[MASK]", return_tensors="pt")
outputs = model(**inputs)
predicted_token_id = outputs.logits[0, 3].argmax().item()
print(tokenizer.decode([predicted_token_id]))  # 预测被遮盖的词

系列模型

版本 策略 仓库
v1 MLM(随机子词遮盖) eebyp/BypBERT-tiny-zh-v1
v2 WWM(全词遮盖) eebyp/BypBERT-tiny-zh-v2(本模型)
v3 MacBERT(近义词替换) 训练中

局限性

  • Tiny 规模(8.7M)牺牲精度换取速度和资源效率
  • 绝对性能低于 base 规模模型(110M)
  • 仅在中文维基百科语料上预训练,未做领域自适应

引用

@misc{bai2026bypbert,
  title={Tiny-Scale Chinese BERT Pretraining: A Controlled Comparison of MLM, WWM, and MacBERT Strategies},
  author={Bai, Yiping},
  year={2026},
  publisher={Hugging Face},
  url={https://huggingface.co/eebyp/BypBERT-tiny-zh-v2}
}

作者

Yiping Bai(ORCID: 0009-0004-2842-8241)
广东海启星海洋科技有限公司
HuggingFace: eebyp

Downloads last month
19
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