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_contextpolicy;- запрещённые признаки, например 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:
- majority class — нижняя граница при imbalance;
- 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 encoder | Capacity/control | Training и serving сложнее | Baseline доказуемо недостаточен |
| LLM per request | Open-ended reasoning | Cost/latency/variance | Low-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.
Эксперименты:
- Поднимите threshold с
0.55до0.8; объясните изменение coverage. - Уберите calibration split и обучите temperature на train; почему reliability report станет оптимистичнее?
- Добавьте редкий high-impact class; сравните accuracy и macro F1.
- Создайте 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: