项目挑战
单纯 BERT 微调已有不错的基线水平,进一步提升需要让模型显式感知局部情绪词、程度副词和否定词,而不是只依赖端到端隐式学习。同时需要在同一项目中展示从创新建模到工程落地的完整能力。
解决思路
核心思路是“多任务学习 + 先验知识注入”:辅助分支的梯度回传到共享编码器,迫使 BERT 关注情感关键位置。词典标注提供的是弱监督信号,即使词典覆盖不完整,也能通过多任务正则化提升句级分类效果。蒸馏和 LoRA 则分别验证了压缩和扩展两个方向的可行性。
工程实现
项目按七个阶段组织脚本,每个阶段独立可运行,输出标准化评估报告。双分支训练中通过 α 系数平衡主辅 loss,词典标注用 -100 忽略特殊 token,量化时只量化 Linear 层、保留 Embedding 和 LayerNorm 的精度。
项目价值
这个项目最能体现 NLP 项目深度:从结构创新(双分支)到知识融合(词典监督)再到部署优化(蒸馏/量化/LoRA),展示了我不是只会套用预训练模型,而是会围绕任务难点设计针对性方案。
项目拆解
亮点、过程与结果
核心亮点
设计词典增强的主辅双分支 BERT:主分支基于 [CLS] 做句级分类,辅助分支对每个 token 输出情感标签,用情感词典做监督,双分支准确率 95.50%(相比基线提升 1.75 个百分点)。
基于 4 层 DistilBERT 完成知识蒸馏与 INT8 量化,模型从 172MB 压缩到 91MB,准确率无损保持 93.75%。
新增 Qwen2-1.5B + LoRA/QLoRA 方案,仅训练约 9M 参数(0.6%),准确率达到 95.83%,LoRA 权重仅约 37MB。
实现过程
对 ChnSentiCorp 9,600 条训练样本做字符级 dropout 与词序打乱增强,扩展至约 19,200 条。
构建情感词典(800+ 情感词 + 否定词 + 程度副词),生成 token 级监督标签。
训练词典增强双分支 BERT,主分支做句级分类,辅助分支做 token 级情感预测。
将 12 层 BERT 蒸馏到 4 层学生模型(T=3.0, α=0.7),再做 INT8 动态量化。
接入 Qwen2-1.5B,通过 PEFT 注入 LoRA 适配器(r=8, α=16),QLoRA 4bit 加载训练。
结果总结
双分支设计相比基线提升 1.75 个百分点,token 级辅助任务验证了词典监督信号的有效性。
蒸馏 + 量化将模型从 393MB 压缩到 91MB,推理速度提升约 2.5 倍,准确率无损。
Qwen2 + LoRA 以仅 0.6% 可训练参数达到最优效果,补足了 LLM 微调能力展示。