Sobes.tech
Назад к вопросам
Senior
9

Что такое deep ensembles как способ оценки uncertainty?

Компании, где спрашивали
Sensemitter

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

Deep ensembles — это практический способ оценивать неопределённость модели через обучение нескольких независимых моделей с разными инициализациями и/или подвыборками данных. Идея в том, что разброс их предсказаний отражает epistemic uncertainty, то есть неопределённость из-за недостатка знаний о данных. Это один из самых рабочих и часто сильных baseline-подходов для uncertainty estimation.

Определение:

Deep ensembles — это ансамбль нейросетей, обученных отдельно на одной и той же задаче, обычно с разными random seed, shuffle, bootstrap-выборками или другими вариациями обучения. На инференсе предсказания агрегируются, например усреднением вероятностей или значений регрессии. Если модели сильно расходятся, это сигнал высокой неопределённости; если согласны — неопределённость ниже.

Важно различать два типа uncertainty:

  • Epistemic uncertainty — связана с недостатком знаний модели и обычно уменьшается при наличии большего количества данных.
  • Aleatoric uncertainty — связана с шумом в самих данных и deep ensembles её напрямую не устраняют, хотя могут косвенно помогать оценивать.

Пример использования:

Например, для классификации медицинских снимков можно обучить 5–10 одинаковых нейросетей с разными инициализациями. Для нового снимка ансамбль выдаёт распределение вероятностей по классам. Если все модели уверенно согласились — предсказание надёжное. Если часть моделей считает снимок патологическим, а часть — нормальным, это повод передать кейс на ручную проверку.

import numpy as np

# Предсказания 3 моделей для одного объекта: вероятности класса 1
preds = np.array([0.92, 0.88, 0.51])

mean_prob = preds.mean()
variance = preds.var()

print("Средняя вероятность:", mean_prob)
print("Разброс предсказаний:", variance)

# Простая интерпретация:
# высокий variance -> высокая epistemic uncertainty

Пояснение кода:

В примере код показывает саму идею оценки uncertainty через разброс предсказаний:

  1. Есть несколько моделей ансамбля, каждая выдаёт свою вероятность класса.
  2. Считается среднее значение — это итоговое предсказание ансамбля.
  3. Считается дисперсия — это простой индикатор неопределённости.
  4. Чем выше разброс между моделями, тем меньше у нас уверенности в результате.

В реальной задаче вместо ручного массива preds на каждом объекте собирают предсказания всех моделей и используют:

  • среднее по вероятностям для classification;
  • среднее по регрессионным выходам для regression;
  • меру разброса, entropy или mutual information как uncertainty score.

Ключевые моменты:

  • Deep ensembles — один из самых практичных и надёжных способов оценивать uncertainty в deep learning.
  • Основной сигнал — разброс предсказаний между независимыми моделями.
  • Лучше всего подходят для оценки epistemic uncertainty.
  • Просты в реализации и часто сильны на практике без сложной байесовской математики.
  • Основной минус — высокая стоимость по памяти и времени, потому что нужно обучать несколько моделей.
  • В задачах вроде uncertainty-aware classification, OOD detection и Bayesian optimization deep ensembles часто служат сильным baseline.