codelion/adaptive-classifier
A flexible, adaptive classification system for dynamic text classification
Adaptive Classifier – 动态、持续学习的文本分类
简介 – 一个基于 PyTorch 和 Hugging Face Transformers 的 Python 库,让您能训练一个具备以下能力的文本分类器:
- 持续学习 – 即时添加新示例,且不会发生灾难性遗忘。
- 运行时添加类别 – 无需重新训练整个模型即可引入全新标签。
- 保持在线 – 在生产环境中更新模型,实现零停机时间。
- 防御对抗性或“游戏化”输入 – 具备博弈论“策略”模式,当用户试图操纵系统时,仍能保持预测的鲁棒性。
- CPU 高速运行 – 自动 ONNX-Runtime 导出,相较于原生 PyTorch 可获得 2‑4 倍的速度提升。
核心组件
| 组件 | 角色 |
|---|---|
| 原型记忆 | 基于 FAISS 的句子嵌入相似度搜索;提供非参数化的“最近原型”信号。 |
| 自适应神经头 | 具备弹性权重巩固 (EWC) 保护的可训练分类层,避免新数据进入时发生遗忘。 |
| 混合预测 | 最终分数是原型相似度和神经头输出的加权混合(可通过 prototype_weight / neural_weight 设置)。 |
| 策略性分类 | 可选模式,增加成本感知对抗模型;您可以要求常规、策略性或鲁棒的预测。 |
| 多标签支持 | MultiLabelAdaptiveClassifier 增加基于 Sigmoid 的多标签头、自动阈值调整及各标签阈值。 |
| ONNX 导出 | 内置转换为量化 (INT8) 和全精度 ONNX;库会自动在 CPU 上选择最快版本。 |
快速入门 (30 秒)
from adaptive_classifier import AdaptiveClassifier
# 1️⃣ 使用任何 HuggingFace 模型初始化
clf = AdaptiveClassifier("bert-base-uncased")
# 2️⃣ 添加几个标记示例
texts = ["The product works great!", "Terrible experience", "Neutral about this purchase"]
labels = ["positive", "negative", "neutral"]
clf.add_examples(texts, labels)
# 3️⃣ 进行预测
print(clf.predict("This is amazing!"))
# → [('positive', 0.85), ('neutral', 0.12), ('negative', 0.03)]
对于多标签任务,请将 AdaptiveClassifier 替换为 MultiLabelAdaptiveClassifier 并调用 predict_multilabel。
安装
pip install adaptive-classifier # 自动拉取 ONNX Runtime
开发安装:
git clone https://github.com/codelion/adaptive-classifier.git
cd adaptive-classifier
pip install -e .
重要基准测试 (README 报告)
| 场景 | 指标 | 常规模型 | Adaptive (策略性) | Δ |
|---|---|---|---|---|
| 对抗鲁棒性 (AI‑Secure/adv_glue) | 清洁数据准确率 | 80.00 % | 82.22 % | +2.22 % |
| 对抗数据准确率 | 60.00 % | 82.22 % | +22.22 % | |
| 鲁棒性下降 | –20 % | 0 % | perfect | |
| 幻觉检测 (RAGTruth) | 整体 F1 | – | 51.54 % | – |
| LLM 路由成本节省 (arena‑hard‑auto‑v0.1) | 成本降低 | 25.60 % | 32.40 % | +6.80 % |
| 效率比 | 1.00× | 1.27× | +27 % |
持续学习工作原理
- 新示例存储在原型记忆中,并可选择用于微调神经头。
new_class_example_threshold(默认 10) 控制新标签何时获得自己的原型权重;在此之前,神经头主导预测。- 弹性权重巩固 (EWC) 对神经头进行正则化,确保模型适应新数据时,旧类别仍能保持性能。
策略性 (反游戏化) 模式
clf = AdaptiveClassifier(
"bert-base-uncased",
config={
"enable_strategic_mode": True,
"cost_function_type": "linear",
"cost_coefficients": {
"sentiment_words": 0.5,
"length_change": 0.1,
"word_substitution": 0.3,
},
"strategic_blend_regular_weight": 0.6,
"strategic_blend_strategic_weight": 0.4,
},
)
predict→ 混合常规与策略性分数。predict_strategic→ 纯策略性视角 (模拟攻击者)。predict_robust→ 假设输入可能已被操纵并返回强化后的预测。
模型持久化与 Hub 集成
clf.save("./my_model") # 保存 PyTorch + ONNX (量化与全精度)
AdaptiveClassifier.load("./my_model") # 在 CPU 上自动加载量化 ONNX
clf.push_to_hub("adaptive-classifier/my-model")
clf2 = AdaptiveClassifier.from_pretrained("adaptive-classifier/my-model")
使用场景
- 客户支持工单路由 – 持续添加问题类别,无需停机。
- 动态产品类别标记 – 出现新产品线时,可立即教导模型。
- 企业 LLM 流水线 – 使用内置路由或幻觉检测器来降低成本并提高可靠性。
- 任何必须在演进过程中保持在线的生产级文本分类服务。
社区与授权
- Apache 2.0 授权 – 可免费商业使用。
- PyPI 下载量显示活跃采用;仓库设有讨论区以提供支持。
- 预训练模型与演示笔记本托管于专属的 HuggingFace 组织。
总结 – Adaptive Classifier 是一个开箱即用、基于 PyTorch 的库,结合了基于原型的相似度、持续学习头以及可选的博弈论防御,并具备开箱即用的 ONNX 加速功能,适用于生产级、零停机时间的文本分类。
相关
- 项目
- 项目
- 项目
- 项目