自適應分類器:基於持續學習的動態文字分類
摘要
我們推出自適應分類器,這是一種新穎的文字分類系統,能夠實現動態類別新增和持續學習,同時避免災難性遺忘。我們的方法結合了基於原型的記憶系統和神經自適應層,並引入了戰略分類——一種在對抗性操作下實現穩健分類的博弈論框架。該系統與HuggingFace生態系統無縫整合,並在幻覺檢測、LLM配置最佳化和智慧模型路由等多個應用中展現出強大的實證結果。在對抗性SST-2資料集上,我們的戰略分類器在面對受操縱的輸入時,比基線方法提高了22.22%,同時在乾淨資料上保持了效能。
引言
傳統的文字分類器存在一個根本性限制:當新類別出現時,它們需要從頭開始重新訓練,導致先前學習到的知識被災難性遺忘。這一限制在生產環境中尤為突出,因為新文字類別會不斷出現,並且對抗性使用者可能試圖透過戰略性輸入修改來操縱分類。
考慮一個客戶支援系統,它最初將工單分類為“技術”、“賬單”和“一般”類別。隨著業務發展,出現了“隱私”、“合規”和“整合”等新類別。傳統方法將需要收集所有類別的新訓練資料並重新訓練整個模型,這可能會導致現有類別的效能下降。此外,如果使用者發現他們可以透過修改語言模式來玩弄系統,分類器的可靠性就會降低。
自適應分類器透過四項關鍵創新解決了這些挑戰:
- 動態類別新增:無需重新訓練現有知識即可無縫新增新類別。
- 基於原型的記憶:使用學習到的類別原型進行高效的基於相似度的分類。
- 神經自適應:透過輕量級神經網路層持續最佳化決策邊界。
- 戰略分類:對抗性操作下的博弈論魯棒性。
技術架構
核心設計原則
自適應分類器基於這樣一個原則:有效的分類可以分解為兩個互補的組成部分:基於記憶的檢索和神經邊界細化。這種雙重方法既能快速適應新樣本,又能學習複雜的決策邊界。
from adaptive_classifier import AdaptiveClassifier
# Initialize with any transformer model
classifier = AdaptiveClassifier("bert-base-uncased")
# Add examples dynamically
texts = ["Great product!", "Terrible service", "API returning errors"]
labels = ["positive", "negative", "technical"]
classifier.add_examples(texts, labels)
# Immediate classification capability
predictions = classifier.predict("This is amazing!")
# Returns: [('positive', 0.87), ('negative', 0.08), ('technical', 0.05)]
原型記憶系統
我們方法的核心是一個複雜的記憶系統,它維護著類別原型——學習到的表示,用於捕捉每個類別的基本特徵。與傳統的k近鄰方法不同,我們的系統使用FAISS最佳化的相似性搜尋和動態原型更新。
數學基礎:對於每個類別c,我們維護一個原型,該原型計算為類別示例的指數加權移動平均值:
其中 φ(x) 表示文字 x 的 Transformer 嵌入,S_c 是類別 c 的新樣本集合。
實現細節:記憶系統採用多項最佳化措施:
- 選擇性樣本保留:我們為每個類別保留最多k個代表性樣本,透過k均值聚類選擇以保持多樣性。
- 增量索引更新:FAISS 索引僅在累積更新超過閾值時重建,平衡了準確性與計算效率。
- 歸一化嵌入:所有嵌入都經過L2歸一化,以便進行有意義的餘弦相似度比較。
class PrototypeMemory:
def add_example(self, example: Example, label: str):
# Add to examples and update prototype
self.examples[label].append(example)
self._update_prototype(label)
# Conditional index rebuild for efficiency
if self.updates_since_rebuild >= self.update_frequency:
self._rebuild_index()
def get_nearest_prototypes(self, query_embedding: torch.Tensor, k: int = 5):
# FAISS-optimized similarity search
distances, indices = self.index.search(query_embedding.numpy(), k)
similarities = np.exp(-distances[0]) # Convert to similarities
return [(self.index_to_label[idx], sim) for idx, sim in zip(indices[0], similarities)]
神經自適應層
雖然基於原型的分類提供了出色的少樣本學習能力,但複雜的決策邊界通常需要更復雜的建模。我們的神經自適應層透過一個輕量級前饋網路來滿足這一需求,該網路學習細化分類決策。
架構:自適應層包括:
- 輸入層:Transformer 嵌入(通常為 768 或 1024 維)
- 隱藏層:使用 ReLU 啟用和 dropout 降低維度
- 輸出層:當前類別集上的 Softmax,具有動態調整能力
防止災難性遺忘:當新增新類別時,我們採用彈性權重整合(EWC)來保留現有類別的知識:
其中 F_i 代表引數 i 的 Fisher 資訊矩陣對角線,θ_i* 是先前任務的最佳引數。
戰略分類框架
我們系統的一個關鍵創新是引入了戰略分類——一種在對抗性條件下進行魯棒分類的博弈論方法。這解決了使用者可能試圖透過戰略性修改輸入來操縱分類的現實問題。
威脅模型:我們對戰略使用者進行建模,他們可以以代價 c(x, x') 將輸入 x 修改為 x',以最大化其效用:
其中 f(x') 代表分類器對期望類別的置信度。
成本函式:我們實現了幾種成本函式族:
- 線性成本:
其中 α 代表每個特徵的修改成本。
- 可分離成本:
實現更復雜的戰略行為
雙重預測系統:我們的戰略分類器以多種模式執行:
- 常規模式:使用原型和神經網路預測進行標準分類。
- 戰略模式:預測戰略代理會將其輸入移動到何處。
- 魯棒模式:考慮潛在博弈的反操縱預測。
- 雙重模式:融合常規預測和戰略預測以實現平衡效能。
# Enable strategic classification
config = {
'enable_strategic_mode': True,
'cost_function_type': 'linear',
'cost_coefficients': {'sentiment_words': 0.5, 'length_change': 0.1},
'strategic_blend_regular_weight': 0.6,
'strategic_blend_strategic_weight': 0.4
}
classifier = AdaptiveClassifier("bert-base-uncased", config=config)
# Multiple prediction modes
dual_predictions = classifier.predict(text) # Blended approach
strategic_predictions = classifier.predict_strategic(text) # Assumes manipulation
robust_predictions = classifier.predict_robust(text) # Anti-manipulation
實證評估
戰略分類效能
我們評估了戰略分類框架在 AI-Secure/adv_glue 資料集的對抗性 SST-2 子集上的效能,該子集包含專門用於測試對戰略操縱魯棒性的情感分類示例。
實驗設定:
- 資料集:148 個對抗性示例,按 70%/30% 比例劃分為訓練集/測試集
- 模型:answerdotai/ModernBERT-base,使用線性成本函式
- 成本策略:平衡方法,50% 的嵌入維度可操縱,成本為 0.3
主要結果:
預測模式 | 準確率 | F1-分數 | 與基線的效能對比 |
---|---|---|---|
常規分類器 | 80.00% | 80.00% | 基線 |
戰略(雙重) | 82.22% | 82.12% | 提高 2.22% |
戰略(純粹) | 82.22% | 82.12% | 提高 2.22% |
魯棒模式 | 80.00% | 79.58% | 效能一致 |
對抗攻擊下的魯棒性:更重要的是,我們評估了輸入受到戰略性操縱時的效能。
場景 | 常規分類器 | 戰略分類器 | 優勢 |
---|---|---|---|
乾淨資料 | 80.00% | 82.22% | +2.22% |
操縱資料 | 60.00% | 82.22% | +22.22% |
效能下降 | -20.00% | 0.00% | 魯棒性提高 20.00% |
戰略分類器展現出完美的魯棒性——無論輸入是否被操縱,效能都保持不變,同時在乾淨資料上取得了改進的效能。
應用:幻覺檢測
我們為檢索增強生成(RAG)系統開發了一種專門的幻覺檢測器,解決了LLM生成與所提供上下文不符內容的關鍵問題。
資料集:RAGTruth 基準測試,涵蓋多種任務型別。類別:HALLUCINATED
(幻覺) vs NOT_HALLUCINATED
(非幻覺)
效能結果:
任務型別 | 精度 | 召回率 | F1 分數 | 關鍵洞察 |
---|---|---|---|---|
問答 | 35.50% | 45.11% | 39.74% | 適中精度,良好召回 |
摘要 | 22.18% | 96.91% | 36.09% | 擅長捕捉幻覺 |
資料到文字 | 65.00% | 100.0% | 78.79% | 在結構化任務上表現強勁 |
整體 | 40.89% | 80.68% | 51.54% | 安全關鍵應用高召回率 |
高召回率 (80.68%) 使得該系統對安全關鍵應用尤其有價值,因為在這種應用中,假陰性(漏報幻覺)比假陽性代價更高。
from adaptive_classifier import AdaptiveClassifier
# Load pre-trained hallucination detector
detector = AdaptiveClassifier.from_pretrained("adaptive-classifier/llm-hallucination-detector")
# Evaluate RAG output
context = "France is in Western Europe. Capital: Paris. Population: 67 million."
query = "What is France's capital and population?"
response = "Paris is the capital. Population is 70 million."
input_text = f"Context: {context}\nQuestion: {query}\nAnswer: {response}"
prediction = detector.predict(input_text)
if prediction[0][0] == 'HALLUCINATED' and prediction[0][1] > 0.6:
print("⚠️ Warning: Response may contain hallucinations")
應用:LLM 配置最佳化
傳統的 LLM 部署需要手動調整溫度等超引數以適應不同查詢型別。我們的自適應分類器透過學習預測最佳溫度範圍來自動化此過程。
溫度類別:
- 確定性 (0.0-0.1):需要精確度的事實查詢
- 專注 (0.2-0.5):具有輕微靈活性的技術響應
- 平衡 (0.6-1.0):自然的對話響應
- 創意 (1.1-1.5):多樣化和富有想象力的輸出
- 實驗性 (1.6-2.0):用於頭腦風暴的最大可變性
LLM Arena 資料集評估:
- 成功率:找到最佳配置的成功率為 69.8%
- 一致性:配置間的平均相似度得分為 0.64
- 分佈:根據查詢特性,在不同溫度類別之間實現平衡使用
這種自動化消除了手動調整引數的需求,同時確保了不同查詢型別的最佳響應質量。
應用:智慧 LLM 路由
自適應分類器透過智慧地在高效能(昂貴)和標準效能(經濟)模型之間路由查詢,從而實現成本效益的 LLM 部署。
路由類別:
- 高:需要高階推理、程式碼生成、多步驟問題的複雜查詢
- 低:直接查詢、事實性問題、基本格式化任務
Arena-Hard 評估結果:
指標 | 無自適應 | 有自適應 | 影響 |
---|---|---|---|
高模型路由 | 113 (22.6%) | 98 (19.6%) | 減少 13% |
低模型路由 | 387 (77.4%) | 402 (80.4%) | 增加 4% |
成本節約 | 25.60% | 32.40% | 提高 26.6% |
整體成功率 | 22.00% | 22.00% | 保持質量 |
關鍵洞察:
- 成本效率:透過更好的資源分配,成本節約提高 26.6%
- 質量保持:整體成功率沒有下降
- 學習效果:持續自適應將低模型成功率從 16.54% 提高到 20.15%
實現與整合
HuggingFace 生態系統整合
自適應分類器與 HuggingFace 生態系統無縫整合,支援模型共享、版本控制和協作
# Train and save to Hub
classifier = AdaptiveClassifier("bert-base-uncased")
classifier.add_examples(texts, labels)
classifier.push_to_hub("adaptive-classifier/my-custom-classifier")
# Load from Hub
classifier = AdaptiveClassifier.from_pretrained("adaptive-classifier/my-custom-classifier")
# Continue training
classifier.add_examples(new_texts, new_labels)
生產部署考量
記憶體管理:系統實現了智慧記憶體管理,並可配置限制:
- 每個類別的最大示例數(預設:1000)
- 原型更新頻率(預設:每 100 個示例)
- 透過 k-means 聚類選擇代表性示例
可伸縮性:基於 FAISS 的相似性搜尋可實現大規模類別集的有效操作:
- 對數搜尋複雜度
- 支援 GPU 加速
- 分散式部署相容性
監控和可觀測性:
# Get comprehensive statistics
stats = classifier.get_memory_stats()
print(f"Classes: {stats['num_classes']}")
print(f"Total examples: {stats['total_examples']}")
print(f"Memory usage: {stats['memory_usage']}")
# Performance monitoring
evaluation_stats = classifier.get_example_statistics()
print(f"Training steps: {evaluation_stats['train_steps']}")
print(f"Model parameters: {evaluation_stats['model_params']}")
技術創新與貢獻
1. 統一記憶-神經架構
我們的核心洞察是,有效的自適應分類需要快速的基於相似度的檢索和複雜的邊界學習。原型記憶系統能夠即時分類新樣本,而神經自適應層則隨著時間的推移學習複雜的決策邊界。
這種雙重方法透過利用兩種正規化的優點,優於純粹基於記憶的系統(表達能力有限)和純粹基於神經網路的方法(災難性遺忘)。
2. 戰略分類框架
我們引入了第一個全面的戰略感知文字分類框架,彌補了魯棒性研究中的關鍵空白。我們的方法:
- 建模戰略行為:使用博弈論成本函式預測對抗性修改
- 提供多種防禦模式:常規、戰略、魯棒和雙重預測模式
- 實現雙重效益:提高幹淨資料和被操縱資料上的效能
3. 文字分類的彈性權重整合
雖然 EWC 已應用於計算機視覺,但我們將其應用於具有動態類別集的文字分類,這代表了一項新穎的貢獻。我們展示了在遞增新增類別時有效緩解災難性遺忘的能力。
4. 生產就緒的持續學習
與研究原型不同,我們的系統是為生產部署而設計的,具備以下特點:
- 高效的記憶體管理和索引
- 可配置隨機性的確定性行為
- 全面的監控和可觀測性
- 無縫的 HuggingFace 整合
相關工作與定位
持續學習:我們的工作基於持續學習研究,但特別關注具有實際部署限制的文字分類設定。與需要任務邊界的方法不同,我們的系統能夠無縫新增類別。
少樣本學習:雖然存在少樣本學習方法,但它們通常需要預定義的類別集。我們的方法可以真正實現零樣本新增以前未見過的類別。
對抗魯棒性:戰略分類超越了傳統的對抗魯棒性,透過對經濟動機的攻擊者而非最壞情況的擾動進行建模。
原型網路:我們透過複雜的記憶管理、神經細化和戰略考量擴充套件了原型網路。
侷限性與未來工作
當前侷限性:
- 計算開銷:戰略預測模式需要額外的計算
- 記憶體增長:記憶體使用量隨類別和示例數量呈線性增長
- 領域漂移:在重大領域變化時效能可能會下降
未來研究方向:
- 層次化類別組織:學習類別之間的層次關係
- 多模態擴充套件:擴充套件到視覺-語言和其他模態
- 聯邦學習:跨多個客戶端的分散式自適應
- 高階戰略模型:更復雜的博弈論框架
結論
自適應分類器代表了實用文字分類的重大進步,解決了動態類別新增、持續學習和對抗魯棒性等實際挑戰。我們的全面評估證明了在多個應用中取得了顯著改進:
- 對抗性操縱下的魯棒性提高 22.22%
- LLM 路由應用中成本最佳化 26.6%
- 安全關鍵幻覺檢測中召回率達 80.68%
- 自動化 LLM 配置中成功率達 69.8%
該系統與 HuggingFace 生態系統的無縫整合,以及生產就緒的設計考慮,使其可立即應用於實際部署。我們希望這項工作能激勵對自適應、魯棒和實用機器學習系統的進一步研究。
程式碼可用性
完整的實現是開源的,可在以下連結獲取:
- GitHub: https://github.com/codelion/adaptive-classifier
- PyPI:
pip install adaptive-classifier
- HuggingFace Models: https://huggingface.co/adaptive-classifier
引用
@software{adaptive_classifier_2025,
title = {Adaptive Classifier: Dynamic Text Classification with Continuous Learning},
author = {Sharma, Asankhaya},
year = {2025},
publisher = {GitHub},
url = {https://github.com/codelion/adaptive-classifier},
note = {Open source implementation with HuggingFace integration}
}
致謝
我們感謝 HuggingFace 團隊卓越的 Transformer 生態系統,AI-Secure/adv_glue 和 RAGTruth 資料集的建立者,以及開源社群提供的寶貴反饋和貢獻。