Перейти к основному содержимому

Classifier distillation

Результат главы

После главы вы сможете:

  • различить classical knowledge distillation и LLM-assisted labeling;
  • построить label pipeline с human review и provenance;
  • сравнить majority baseline с TF-IDF/logistic regression;
  • использовать calibration и abstain как product policy;
  • спроектировать shadow deployment, drift detection и rollback.

Что именно мы дистиллируем

В классической постановке большой teacher отдаёт student не только hard class, но и распределение вероятностей. Работа Hinton, Vinyals и Dean показала такой перенос на конкретных задачах; это research result, а не гарантия для любого домена.

В прикладных LLM-системах словом «distillation» часто называют другую цепочку:

unlabeled production-like text
→ LLM teacher proposes structured labels
→ rules + human review accept/correct/reject
→ compact classifier learns reviewed dataset

Здесь teacher label — weak supervision, не ground truth. Если автоматически принять все ответы teacher и проверить student на labels того же teacher, experiment измеряет согласие двух моделей, а не product correctness.

Label contract раньше teacher prompt

Для каждого intent задайте:

  • определение и scope;
  • positive/negative examples;
  • приоритет при overlap;
  • unknown/needs_context policy;
  • запрещённые признаки, например tenant или sensitive attributes;
  • version и owner taxonomy;
  • escalation при неоднозначности.

Teacher output должен быть структурированным artifact:

{
"example_id": "case-1042",
"taxonomy_version": "v3",
"proposed_label": "wallet_refund",
"teacher_version": "provider-model-snapshot",
"prompt_version": "intent-labeler-7",
"review_status": "pending"
}

Rationale можно сохранять для review, но нельзя считать доказательством label. Sensitive raw text и rationale требуют отдельной retention policy.

Review sampling

Проверять только low-confidence cases недостаточно: teacher может быть уверенно неправ. Практичный queue сочетает:

  • случайную репрезентативную выборку;
  • все новые/редкие classes;
  • high-impact wallet/medical intents;
  • teacher disagreement;
  • near-threshold cases;
  • temporal и language slices;
  • явные unknown/abstain.

Измеряйте inter-annotator agreement и причины disagreement. Низкое agreement часто означает не «плохих annotators», а конфликтующую taxonomy.

Baseline сначала

Helios начинает с двух baseline:

  1. majority class — нижняя граница при imbalance;
  2. word/bigram TF-IDF + logistic regression — дешёвый обучаемый baseline.

Почему это сильная отправная точка:

  • быстро обучается на CPU;
  • feature vocabulary можно инспектировать;
  • artifact мал;
  • вероятности доступны для calibration;
  • failure slices показывают, нужна ли более сложная семантика.

Слабые стороны: spelling/semantic variation, длинный context и перенос на новые языки. Они являются причиной следующего experiment, а не автоматическим аргументом за transformer.

Imbalance и правильные метрики

Accuracy может расти, пока редкий опасный intent исчезает. Поэтому отчёт включает:

  • confusion matrix;
  • precision/recall/F1 per class;
  • macro F1;
  • weighted metrics только как дополнение;
  • coverage и selective accuracy при abstention;
  • business-weighted false-route cost;
  • slices по языку, channel, tenant class и времени.

Для binary safety gate отдельно полезны:

FAR = false accepts / actual negatives
FRR = false rejects / actual positives

Calibration ≠ accuracy

Classifier может правильно ранжировать classes, но быть переуверенным. Хорошо calibrated значение 0.8 означает: среди похожих predictions примерно 80% оказываются верными. Reliability bins сравнивают mean confidence с observed rate.

Helios обучает scalar temperature на отдельном calibration split. Test не участвует ни в fitting classifier, ни в выборе temperature/threshold.

Temperature scaling сохраняет порядок logits и меняет confidence. Исследование Guo et al. показало его полезность на рассмотренных neural-network datasets; для вашего classifier это кандидат, который всё равно проверяется на held-out data.

Abstain — нормальный outcome

Threshold — product policy. Высокий threshold уменьшает coverage и обычно снижает false routes; низкий повышает automation, но может увеличить дорогие ошибки. Один threshold для всех classes удобен, но class-specific thresholds лучше отражают разную цену wallet, delivery и medical routes.

Helios возвращает typed decision predict | abstain, label, confidence и threshold:

Варианты решения

ПодходСильная сторонаСлабая сторонаВыбирать, когда
RulesПолная объяснимостьВысокая ручная стоимостьМало стабильных intents
TF-IDF + linear modelСкорость и хороший baselineОграниченная семантикаSupport routing, CPU serving
Embeddings + linear headСемантический переносProvider/model dependencyЕсть multilingual paraphrases
Fine-tuned encoderCapacity/controlTraining и serving сложнееBaseline доказуемо недостаточен
LLM per requestOpen-ended reasoningCost/latency/varianceLow-volume ambiguous tail

Часто оптимален cascade: rules для точных high-precision cases → classifier → LLM/human fallback.

Shadow, canary и drift

Не переключайте router сразу. В shadow режиме новая модель получает копию допустимого input, но не управляет production action. Сравнивайте:

  • predictions с текущим route и review sample;
  • coverage/abstention;
  • confusion по high-impact slices;
  • latency/cost;
  • taxonomy mismatch.

Canary добавляет малую долю реальных решений с kill switch. Rollback должен возвращать одновременно model artifact, preprocessing, taxonomy и thresholds.

Drift бывает разным:

  • input drift: новые слова/channels;
  • label drift: изменилась taxonomy;
  • prior drift: изменились доли intents;
  • concept drift: те же слова означают другой route;
  • feedback drift: labels зависят от старой модели.

Одной feature-distribution metric недостаточно; связывайте drift alarm с outcome и review queue.

Helios и реальный аналог

Helios routing classifier выбирает delivery, wallet или rental. Wallet false accept дороже delivery abstain, поэтому wallet получает отдельный threshold и обязательный shadow slice. Реальный аналог — neobank/support platform, где компактная модель снимает понятные intents, а длинный спорный запрос остаётся LLM или человеку.

Лаборатория

cd examples/helios_ml
uv run --frozen python scripts/train_intent_classifier.py

Команда печатает dataset size, train/calibration/test, seed, threshold, accuracy, macro F1, coverage, selective accuracy и artifact path.

Эксперименты:

  1. Поднимите threshold с 0.55 до 0.8; объясните изменение coverage.
  2. Уберите calibration split и обучите temperature на train; почему reliability report станет оптимистичнее?
  3. Добавьте редкий high-impact class; сравните accuracy и macro F1.
  4. Создайте teacher labels с 10% systematic wallet→delivery error; какой review sampling быстрее заметит проблему?

Self-check

  • Label принадлежит taxonomy или teacher model?
  • Test labels независимы от teacher pipeline?
  • Grouping предотвращает entity leakage?
  • Baseline превзойдён на тех же данных?
  • Threshold выбран по цене ошибок, а не эстетике?
  • Есть typed abstain и fallback?
  • Rollback возвращает preprocessing и taxonomy вместе с model?

Источники

Проверено 2026-08-30: