ENIGMA AI
ENIGMA AI

Какую функцию потерь (loss function) вы использовали в своей модели?

встречается 1× Python middle backend

Как ответить

В последнем проекте по классификации текстов я использовал комбинацию из кросс-энтропии и регуляризации L2. Основа — это стандартная категориальная кросс-энтропия (categorical cross-entropy), потому что задача была многоклассовой: нужно было отнести текст к одному из 12 типов обращений в техподдержку. К ней добавил L2-регуляризацию на веса полносвязных слоёв, чтобы бороться с переобучением — датасет был небольшой, около 8 тысяч примеров.

Конкретно loss выглядела так:

import tensorflow as tf

model.compile(
    optimizer='adam',
    loss=tf.keras.losses.CategoricalCrossentropy(),
    metrics=['accuracy']
)

# L2-регуляризация добавлена через kernel_regularizer в Dense слоях:
# tf.keras.regularizers.l2(0.001)

Почему именно такой выбор. Во-первых, кросс-энтропия хорошо штрафует модель за уверенные неправильные предсказания, что критично для классификации с чёткими границами классов. Во-вторых, L2 с коэффициентом 0.001 подобрал экспериментально — на валидации loss без регуляризации расходился с тренировочным уже после 10 эпох, а с L2 разница стабилизировалась. Пробовал ещё dropout (0.3), но он дал чуть хуже по recall на редких классах.

Из альтернатив рассматривал focal loss из-за дисбаланса классов: класс «жалоба на качество» встречался в 3 раза реже, чем «запрос статуса». Но на практике кросс-энтропия с взвешиванием классов (class weights) сработала не хуже, а код был проще. Focal loss оставил как запасной вариант, если бы дисбаланс был сильнее — например, 1:100.

Ещё один нюанс: я использовал label smoothing с коэффициентом 0.1, чтобы модель не была слишком самоуверенной. Это немного снизило точность на тренировке (с 98% до 96%), но на тесте accuracy выросла с 89% до 91% — модель лучше обобщала.

Ключевые тезисы

  • Основная функция — categorical cross-entropy для многоклассовой классификации
  • Добавлена L2-регуляризация (0.001) для борьбы с переобучением на датасете из 8k примеров
  • Рассматривал focal loss из-за дисбаланса классов, но остановился на class weights — проще и достаточно
  • Использовал label smoothing (0.1) — улучшило обобщение на тесте с 89% до 91% accuracy
  • Подбор коэффициента регуляризации и сглаживания делал по валидационной выборке, не по тесту

Что спросят дальше

  • — Почему вы выбрали L2, а не L1 или ElasticNet? Как это повлияло на разреженность весов?
  • — Как бы вы изменили loss, если бы классовый дисбаланс был 1:100? Сравните focal loss и weighted cross-entropy в таком сценарии.
  • — Вы упомянули label smoothing — как вы выбирали коэффициент? И как он влияет на калибровку вероятностей модели?

Готовьтесь к собеседованию с ENIGMA AI

AI-суфлёр подсказывает ответы прямо на собеседовании в реальном времени — незаметно для интервьюера.

Скачать приложение