如何微调BERT Base(uncased模型)生成适配无标注推文的优质词向量?
无标注语料微调BERT-base(uncased)获取高质量词向量操作方案
核心思路
你手头只有无标注推文的场景下,不需要做有监督分类微调,直接用领域自监督继续预训练的方式微调BERT即可,让模型学习推文领域的语义特征,输出的词向量适配性会远高于通用预训练的BERT。
操作步骤
1 选择适配的自监督任务
直接用BERT原生的自监督预训练任务即可,无需额外构造标签:
- 掩码语言建模(MLM):随机掩盖输入推文中15%的token,让模型预测被掩盖的token内容,是无标注微调的首选任务,能有效对齐模型到推文领域的语义分布
- 全词掩码(WWM):如果你的推文包含大量网络热词、行业缩写、特定话题标签,推荐用全词掩码替换原生的子词掩码,直接掩盖完整词汇,微调后得到的词向量对领域词汇的表征效果更好
注:无需使用下一句预测(NSP)任务,该任务对短文本推文场景的微调增益极低,还会增加训练成本
2 数据预处理
针对你的无标注推文做基础处理即可:
- 先清洗无效数据:去重、过滤纯广告/无意义内容、删除多余乱码符号,保留推文特有符号(@、#、话题标识等)即可
- 调用
bert-base-uncased对应的分词器做分词,序列最大长度设置为128即可覆盖绝大多数英文推文的长度 - 按照所选任务规则自动生成掩码标签,全程不需要人工标注
3 训练参数配置
- 初始权重直接加载官方公开的
bert-base-uncased预训练权重,无需随机初始化 - 学习率设置为1e-5~5e-5,比有监督微调的学习率更低,避免破坏BERT预训练学到的通用语义知识
- 训练轮次控制在2~4轮即可,轮次过高容易在小规模语料上发生过拟合
- 批次大小根据显存调整,单张16G显存显卡可支持批次大小32
4 词向量提取优化
微调完成后提取词向量时,可通过以下方式进一步提升表征质量:
- 不要仅取最后一层输出,推荐取BERT最后4层隐层输出做加权平均,得到的词向量包含的语义信息更丰富
- 如果需要获取整句向量,推荐对所有token的输出做平均池化,效果比直接取<[BOS_never_used_51bce0c785ca2f68081bfa7d91973934]> token的输出更稳定
内容的提问来源于stack exchange,提问作者S. D. chowdhury
相关产品推荐
相关产品推荐

