Ответ
Логарифмированная вероятность (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.