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 加速功能,適用於生產級、零停機時間的文字分類。

相關

  • 專案
  • 專案
  • 專案
  • 專案