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 加速功能,适用于生产级、零停机时间的文本分类。

相关

  • 项目
  • 项目
  • 项目
  • 项目