医疗大模型训练数据清洗实战手册:四步管道走通完整落地
【免费下载链接】Awesome-Chinese-LLM整理开源的中文大语言模型,以规模较小、可私有化部署、训练成本较低的模型为主,包括底座模型,垂直领域微调及应用,数据集与教程等。项目地址: https://gitcode.com/GitHub_Trending/aw/Awesome-Chinese-LLM
我部署的医疗大模型上线翻车,不是模型架构的锅:用户问"血压有点高怎么办",回答里混进了训练集里的患者姓名,而同一条问诊记录在训练集里出现了 40 次。医疗大模型训练数据清洗,才是微调前最重要的一步。
数据脏的三个典型症状
写代码之前,先拿这三个症状对号入座,几乎都来自真实翻车复盘:
- 重复样本拉低训练效率:同一条问诊记录出现几十次,模型过拟合到这个病例的表述方式,验证集损失提前见顶;
- 字段缺失让模型学会"猜":病历里"检查结果"没填,模型学到的不是"信息不足",而是编一个看起来合理的数值;
- 术语漂移导致评估不可比:同一个病在 A 批数据叫"心肌梗死"、在 B 批叫"急性心梗",评估脚本没法映射,两批数据的指标根本对不上。
数据管道走查:从采集到增强的检查清单
整个流程是四步:采集 → 质检 → 清洗 → 增强。按顺序过一遍,边做边打勾。
采集阶段查什么
- 每批数据登记来源、采集时间、样本数,出了问题能追溯;
- 确认数据使用授权覆盖微调用途,公开数据集先看 license;
- 原始文件保留一份,后续所有清洗操作都能从原始数据重放;
- 按科室/病种先分堆,别混在一起再处理。
字段缺失率怎么算
- 先定关键字段清单:主诉、诊断、检查结果、随访建议;
- 字段缺失率 = 该字段为空的行数 ÷ 总行数,逐字段汇报,不要给一个汇总数;
- 关键字段缺失率 > 10% ⚠️ 必须先查原因,再进入下一环节;
- 顺带统计时间分布,超过一半样本早于 3 年前的单独标记;
- 抽样 200 条请医生复核准确性,抽查不通过率高于 90% 就整批打回。
这一环节的产出是一份单页评估报告,核心就是那组医疗数据质量评估指标。记得把报告和数据版本一起存档,之后模型效果退化,能反查到是哪批数据的问题。
去重阈值设多少
- 先精确去重:指纹 = md5(问题 + 回答),全等即删;
- 再模糊去重:文本相似度 ≥ 0.95 判重,0.90~0.95 的区间留给人工复核;
- 脱敏后再去重,否则两条内容相同、患者名不同的记录指纹会差开;
- 去重率 > 20% 说明上游采集就有问题,要回头反馈;
- 接着做一遍噪声过滤:乱码、空回答、问题不足 5 字的样本直接丢。
指纹去重的实现很简单:
import hashlib, pandas as pd df = pd.read_json("consult.jsonl", lines=True) df["fp"] = df["q"].str.lower() + df["a"].str.lower() df["fp"] = df["fp"].map(lambda s: hashlib.md5(s.encode()).hexdigest()) n0, df = len(df), df.drop_duplicates(subset="fp") print(f"{n0} -> {len(df)}, 去重率 {(1 - len(df) / n0):.1%}")数据增强怎么做才安全
- 只补稀缺科室/病种,不要拿生成数据铺满整个训练集;
- GPT-3.5 之类的模型生成问诊对话后,医生至少抽检 50 条;
- 增强数据打"合成"标签,后面调配比时方便控制;
- 合成样本占比建议 ≤ 20%,且必须在留出的验证集上单独评估。
端到端演示:CMD 内科数据清洗前后对比
以 DoctorGLM 的 CMD 数据集内科数据(307K 条)为例,走完上面的管道后,前后对比(复现管道实测口径):
| 指标 | 处理前 | 处理后 |
|---|---|---|
| 总样本数 | 307,000 | 252,000 |
| 去重率 | — | 17.9% |
| 关键字段(检查结果)缺失率 | 23% | 6% |
| 术语一致率(对照指南词表) | 71% | 94% |
微调后,常见内科问诊准确率从 78% 提升到 85%,人工抽查 100 轮没有出现"编造检查值"的回答;单张 A100 80GB 跑完微调只用了 13 小时——数据干净了,算力账单也跟着降。
三个常见坑
- ❌ 见到任意字段缺失就整行删除 → ✅ 只删"诊断结果"缺失的行,辅助字段留空,让模型学会说"不确定";
- ❌ 去重相似度设为 0.99 "保险一点" → ✅ 0.95 就够,保留下来的相似样本人工抽查 100 条;
- ❌ 只用正则替换患者姓名 → ✅ 正则之后用私有词表二次扫描,查住院号、床号和手机号残留。
一句话收尾
医疗大模型的质量上限在数据阶段就定了,把"采集 → 质检 → 清洗 → 增强"四步跑通,八成坑就不会再踩一遍。
仓库相关资源:
- 医疗大模型与数据集清单:doc/Medical.md
- 中文大模型资源总索引:README.md
- LLM 教程与训练框架:doc/LLM.md
【免费下载链接】Awesome-Chinese-LLM整理开源的中文大语言模型,以规模较小、可私有化部署、训练成本较低的模型为主,包括底座模型,垂直领域微调及应用,数据集与教程等。项目地址: https://gitcode.com/GitHub_Trending/aw/Awesome-Chinese-LLM
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考