В каких пределах может находиться логарифмированная вероятность (log probability)?

«В каких пределах может находиться логарифмированная вероятность (log probability)?» — вопрос из категории Статистика и теория вероятностей, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Логарифмированная вероятность (log prob или log-likelihood) — это логарифм от вероятности события. Поскольку сама вероятность p лежит в диапазоне [0, 1], то:

  • Верхняя граница: log(1) = 0. Это соответствует абсолютно достоверному событию.
  • Нижняя граница: log(0) = -∞. Это соответствует невозможному событию.

Таким образом, диапазон значений: от -∞ до 0 (включительно).

Практический пример и почему это важно: В машинном обучении, особенно при работе с нейронными сетями или смесями распределений, мы используем логарифмы вероятностей, чтобы избежать численной нестабильности (исчезновения/переполнения знака) при перемножении очень малых чисел.

import numpy as np

# Вероятности от 0 до 1
probabilities = np.array([0.0, 0.01, 0.5, 0.99, 1.0])

# Прямое вычисление логарифмов (логарифм от 0 даст -inf)
log_probs = np.log(probabilities)
print("Логарифмированные вероятности:", log_probs)
# Вывод: [-inf, -4.605, -0.693, -0.010,  0.0]

# На практике используют специальные функции для устойчивости
log_probs_safe = np.log(probabilities + 1e-12)  # Добавляем малое значение
print("Устойчивое вычисление (первые два значения):", log_probs_safe[:2])
# Вывод: [-27.631, -4.605]

В задачах оптимизации, таких как обучение модели с помощью метода максимального правдоподобия, мы стремимся максимизировать логарифмическое правдоподобие, то есть приблизить его как можно ближе к 0.