Свойства логарифмов 📊
Представь: ты обучаешь нейросеть и видишь в коде функцию потерь — loss = -sum(y * log(p)). Или смотришь на формулу информационной энтропии Шеннона: H = -Σ p·log(p). Или просто пытаешься понять, почему в TensorFlow loss падает не линейно, а как-то странно — сначала быстро, потом всё медленнее.
Везде — логарифмы. И если ты не знаешь их свойства, ты работаешь с ML как с чёрным ящиком: видишь формулы, но не понимаешь, что происходит внутри.
Хорошая новость: свойств логарифмов всего пять-шесть, и все они логичны — буквально следуют из определения. После этого урока ты будешь щёлкать логарифмические выражения как семечки, понимать, почему cross-entropy работает именно так, и без страха смотреть на математику ML-статей.
В уроке ты узнаешь:
🎯 Что такое логарифм и как его “читать” глазами
🎯 Все ключевые свойства с доказательствами (не страшными!)
🎯 Почему логарифмы — это язык ML: loss functions, entropy, normalization
🎯 Как свойства помогают упрощать сложные выражения
🎯 30 заданий от простых до прикладных (с решениями)
История: откуда это взялось? 📜
Начало XVII века. Астрономы — Тихо Браге, Кеплер — вычисляют орбиты планет. Вручную. Умножение двенадцатизначных чисел занимает часы, и ошибки неизбежны. Астрономы буквально умирали раньше времени от перегрузки — это не метафора, это медицинский факт той эпохи.
В 1614 году шотландский математик Джон Непер публикует таблицы, которые переворачивают научный мир. Его идея гениальна: умножение можно заменить сложением — если перейти к логарифмам. Вместо того чтобы перемножать огромные числа, берёшь их логарифмы, складываешь (это быстро!), и переводишь результат обратно. Именно поэтому главное свойство логарифмов — логарифм произведения равен сумме логарифмов — это не случайная формула, это была революция в вычислениях.
Лет через 400 мир снова изобрёл то же самое, только в другом контексте. В машинном обучении логарифмы появились по той же причине: перемножение вероятностей (крошечных чисел вроде 0.0001 × 0.0003 × 0.00002) приводит к численному underflow — компьютер теряет точность. Решение? Перейти к логарифмам вероятностей и складывать их. Log-likelihood, cross-entropy, KL-divergence — всё это прямые наследники таблиц Непера.
Что такое логарифм: быстрое напоминание
Прежде чем разбирать свойства, давай убедимся, что мы одинаково понимаем исходное определение.
Интуиция: логарифм — это “показатель степени”
Задай себе вопрос: в какую степень нужно возвести 2, чтобы получить 8?
2^? = 8
2^3 = 8 → ? = 3
Вот это и есть логарифм: log₂(8) = 3.
Читается: “логарифм восьми по основанию два равен трём”.
Смысл: 2 нужно возвести в степень 3, чтобы получить 8.
Определение:
log_a(b) = cтогда и только тогда, когдаa^c = bгдеa > 0,a ≠ 1,b > 0
Ключевая связь:
$$\log_a(b) = c \iff a^c = b$$
Это не просто формула — это определение, из которого вытекают все свойства. Запомни эту двустороннюю стрелку: каждый раз, когда видишь логарифм, ты можешь “перевернуть” его в показательную запись.
Специальные случаи, которые нужно знать сразу
| Выражение | Результат | Почему |
|---|---|---|
log_a(1) |
0 | Потому что a^0 = 1 |
log_a(a) |
1 | Потому что a^1 = a |
log_a(a^n) |
n | Потому что a^n = a^n |
a^(log_a(b)) |
b | Обратное действие |
📌 Самый важный факт: логарифм и показательная функция — это взаимно обратные операции. Как умножение и деление.
Натуральный и десятичный логарифм
Перед свойствами — ещё один момент, который часто путает.
Натуральный логарифм ln(x) = log_e(x), где e ≈ 2.718...
Это не просто “удобное основание”. Число e — это скорость непрерывного роста. Именно поэтому в ML везде используют ln: производные функций с ln получаются красивыми, а функция потерь cross-entropy технически считается именно через натуральный логарифм.
Десятичный логарифм lg(x) = log₁₀(x)
Используется в технике, акустике (децибелы), шкалах pH. В ML встречается реже.
💡 Правило: в ML-коде, когда видишь torch.log(x) или np.log(x) — это всегда натуральный логарифм ln(x).
Свойство 1: Логарифм произведения
Интуиция
Вернёмся к Неперу. Он хотел заменить умножение на сложение. Свойство произведения — это именно оно.
Представь, что у тебя есть два числа: 100 и 1000. Их произведение — 100 000.
log₁₀(100) = 2 (потому что 10² = 100)
log₁₀(1000) = 3 (потому что 10³ = 1000)
log₁₀(100 000) = 5 (потому что 10⁵ = 100 000)
Смотри: 2 + 3 = 5. Логарифм произведения = сумма логарифмов!
Строгое определение
Свойство 1 (произведение): $$\log_a(M \cdot N) = \log_a(M) + \log_a(N)$$ при условии
M > 0,N > 0,a > 0,a ≠ 1
Доказательство (не страшное!):
Пусть log_a(M) = p и log_a(N) = q.
По определению: a^p = M и a^q = N.
Тогда:
M · N = a^p · a^q = a^(p+q)
Применяем определение логарифма к этому равенству:
log_a(M · N) = p + q = log_a(M) + log_a(N)
Готово. ✅
Примеры
Пример 1 (простой): Вычисли log₂(4 · 8)
Решение:
Шаг 1: Применяем свойство произведения:
log₂(4 · 8) = log₂(4) + log₂(8)
Шаг 2: Вычисляем каждый логарифм:
log₂(4) = 2 (так как 2² = 4)
log₂(8) = 3 (так как 2³ = 8)
Шаг 3: Складываем:
log₂(4 · 8) = 2 + 3 = 5
Проверка: log₂(32) = 5? Да, 2⁵ = 32 = 4 · 8. ✅
Ответ: 5
Пример 2 (средний): Вычисли log₃(81 · 27)
Решение:
log₃(81 · 27) = log₃(81) + log₃(27)
= log₃(3⁴) + log₃(3³)
= 4 + 3
= 7
Проверка: 3⁷ = 2187 = 81 · 27. Можно проверить: 81 · 27 = 81 · 27 = 2187. ✅
Ответ: 7
Пример 3 (ML-пример): Почему в cross-entropy используется сумма логарифмов?
Допустим, модель предсказывает вероятности для трёх независимых объектов:
- Объект 1: p₁ = 0.9
- Объект 2: p₂ = 0.8
- Объект 3: p₃ = 0.7
Совместная вероятность (все предсказания верны одновременно):
P = p₁ · p₂ · p₃ = 0.9 · 0.8 · 0.7 = 0.504
Проблема: на реальных датасетах с тысячами объектов:
P = 0.9 × 0.8 × 0.7 × ... × 0.6 (1000 множителей)
≈ число, настолько маленькое, что float64 округлит его до 0
Решение — перейти к логарифму:
log(P) = log(p₁ · p₂ · p₃) = log(p₁) + log(p₂) + log(p₃)
= log(0.9) + log(0.8) + log(0.7)
= -0.105 + (-0.223) + (-0.357)
= -0.685
Вместо умножения маленьких чисел — складываем отрицательные числа. Никакого underflow, никакой потери точности. Именно поэтому в PyTorch пишут torch.log(probs).sum().
Почему это важно
Это свойство — основа log-likelihood в статистике и cross-entropy loss в ML. Когда ты максимизируешь правдоподобие (likelihood), ты работаешь с логарифмом произведения вероятностей — и превращаешь его в сумму, с которой удобно работать градиентному спуску.
Свойство 2: Логарифм частного
Интуиция
Если произведение = сумма логарифмов, то деление = разность. Это следует из того, что деление — это умножение на обратное число.
Строгое определение
Свойство 2 (частное): $$\log_a\left(\frac{M}{N}\right) = \log_a(M) - \log_a(N)$$ при условии
M > 0,N > 0,a > 0,a ≠ 1
Доказательство:
log_a(M/N) = log_a(M · N⁻¹)
= log_a(M) + log_a(N⁻¹) [свойство произведения]
= log_a(M) + (-1)·log_a(N) [сейчас докажем это]
= log_a(M) - log_a(N)
Примеры
Пример 1 (простой): Вычисли log₂(64/8)
Решение:
log₂(64/8) = log₂(64) - log₂(8)
= 6 - 3
= 3
Проверка: 64/8 = 8, log₂(8) = 3. ✅
Ответ: 3
Пример 2 (ML-пример): KL-дивергенция
KL-дивергенция (мера “расстояния” между двумя распределениями) записывается как:
$$D_{KL}(P | Q) = \sum_x P(x) \cdot \log\left(\frac{P(x)}{Q(x)}\right)$$
Свойство частного позволяет раскрыть это:
$$D_{KL}(P | Q) = \sum_x P(x) \cdot [\log P(x) - \log Q(x)]$$
$$= \sum_x P(x) \log P(x) - \sum_x P(x) \log Q(x)$$
$$= -H(P) + H(P, Q)$$
где H(P) — энтропия Шеннона, а H(P,Q) — кросс-энтропия. Без свойства частного эту связь было бы сложно увидеть.
Свойство 3: Логарифм степени (выносим показатель)
Интуиция
Если log_a(M · N) = log_a(M) + log_a(N), то что будет с log_a(M · M · M) = log_a(M³)?
log_a(M³) = log_a(M · M · M) = log_a(M) + log_a(M) + log_a(M) = 3 · log_a(M)
Показатель степени просто “вылезает” вперёд!
Строгое определение
Свойство 3 (степень): $$\log_a(M^n) = n \cdot \log_a(M)$$ при условии
M > 0,a > 0,a ≠ 1,n ∈ ℝ
Важно: n может быть любым числом — целым, дробным, отрицательным.
Примеры
Пример 1 (простой): Вычисли log₃(81)
Решение:
log₃(81) = log₃(3⁴) = 4 · log₃(3) = 4 · 1 = 4
Ответ: 4
Пример 2 (средний): Упрости log₂(√32)
Решение:
Шаг 1: Корень — это степень 1⁄2:
log₂(√32) = log₂(32^(1/2))
Шаг 2: Применяем свойство степени:
= (1/2) · log₂(32)
Шаг 3: 32 = 2⁵, значит log₂(32) = 5:
= (1/2) · 5 = 2.5
Ответ: 2.5
Пример 3 (ML-пример): Почему softmax + log работает именно так?
В нейросетях для классификации используется softmax + cross-entropy. Числовой трюк (log-sum-exp):
$$\log\left(\sum_i e^{x_i}\right) = \log\left(e^c \cdot \sum_i e^{x_i - c}\right) = c + \log\left(\sum_i e^{x_i - c}\right)$$
Здесь log(e^c) = c · log(e) = c · 1 = c — это прямое применение свойства степени, где основание логарифма и степени совпадают. Без этого свойства log-sum-exp trick был бы непонятен.
Пример 4 (сложный): Вычисли log₅(∛(625))
Решение:
Шаг 1: Кубический корень — степень 1⁄3:
log₅(∛625) = log₅(625^(1/3))
Шаг 2: 625 = 5⁴:
= log₅((5⁴)^(1/3)) = log₅(5^(4/3))
Шаг 3: Применяем свойство:
= (4/3) · log₅(5) = (4/3) · 1 = 4/3
Ответ: 4⁄3 ≈ 1.333
Свойство 4: Логарифм корня
Это частный случай свойства степени, но его удобно выделить отдельно.
Свойство 4 (корень): $$\log_a(\sqrt[n]{M}) = \frac{1}{n} \cdot \log_a(M)$$
Почему? Потому что √[n]{M} = M^(1/n), и применяем свойство степени.
Пример
Вычисли log₄(√4)
log₄(√4) = log₄(4^(1/2)) = (1/2) · log₄(4) = (1/2) · 1 = 1/2
Проверка: 4^(1/2) = 2, log₄(2) = 1/2. ✅
Свойство 5: Формула смены основания
Интуиция
Это самое “технически полезное” свойство. Оно говорит: не важно, какое основание у логарифма — любое можно выразить через любое другое.
Представь: у тебя есть калькулятор, который умеет считать только ln (натуральный логарифм). Как вычислить log₂(100)? Используешь формулу смены основания.
Строгое определение
Свойство 5 (смена основания): $$\log_a(b) = \frac{\log_c(b)}{\log_c(a)}$$ для любого
c > 0,c ≠ 1
Самый частый случай — перейти к натуральному логарифму:
$$\log_a(b) = \frac{\ln(b)}{\ln(a)}$$
Доказательство
Пусть log_a(b) = x. Тогда a^x = b.
Возьмём логарифм с основанием c от обеих частей:
log_c(a^x) = log_c(b)
x · log_c(a) = log_c(b) [свойство степени]
x = log_c(b) / log_c(a)
Поскольку x = log_a(b), получаем формулу. ✅
Примеры
Пример 1 (простой): Вычисли log₄(8)
Решение через смену основания к основанию 2:
log₄(8) = log₂(8) / log₂(4) = 3 / 2 = 1.5
Проверка: 4^1.5 = (2²)^1.5 = 2³ = 8. ✅
Ответ: 1.5
Пример 2 (средний): Вычисли log₃(7) с точностью до 4 знаков
Решение:
log₃(7) = ln(7) / ln(3) = 1.9459 / 1.0986 ≈ 1.7712
Ответ: ≈ 1.7712
Пример 3 (ML-пример): В информационной теории часто переходят от log₂ к ln
Энтропия Шеннона в битах: H = -Σ p · log₂(p)
В ML обычно используют натуральный логарифм (натуральная энтропия в натах):
H_nat = -Σ p · ln(p)
Связь: H_nat = H_bits · ln(2), потому что:
log₂(p) = ln(p) / ln(2)
Вот почему в разных источниках формулы cross-entropy могут отличаться константой — это просто разные основания логарифма. Физически — то же самое.
Полезное следствие: log_a(b) · log_b(a) = 1
Из формулы смены основания:
$$\log_a(b) \cdot \log_b(a) = \frac{\ln b}{\ln a} \cdot \frac{\ln a}{\ln b} = 1$$
Значит: log_a(b) = 1 / log_b(a).
Пример: log₂(8) · log₈(2) = 3 · (1/3) = 1. ✅
Свойство 6: Логарифм единицы и основания
Это самые простые свойства, но их нужно знать автоматически:
$$\log_a(1) = 0$$ (потому что
a⁰ = 1)$$\log_a(a) = 1$$ (потому что
a¹ = a)$$\log_a(a^n) = n$$ (следует из определения)
$$a^{\log_a(b)} = b$$ (обратная функция)
Последнее особенно важно в ML. Когда ты пишешь exp(log(x)) — ты просто получаешь x обратно. Это используется в трюке log-sum-exp и в операциях со стабильным softmax.
Все свойства на одной странице
Свойство произведения: log_a(M·N) = log_a(M) + log_a(N)
Свойство частного: log_a(M/N) = log_a(M) - log_a(N)
Свойство степени: log_a(M^n) = n · log_a(M)
Свойство корня: log_a(ⁿ√M) = (1/n) · log_a(M)
Смена основания: log_a(b) = ln(b) / ln(a)
Логарифм единицы: log_a(1) = 0
Логарифм основания: log_a(a) = 1
Комбинирование свойств: разбираем сложные выражения
Реальная работа с логарифмами — это умение применять несколько свойств последовательно.
Пример (разбор по шагам): Упрости
$$\log_2\left(\frac{8 \cdot \sqrt{4}}{2}\right)$$
Решение:
Шаг 1: Разбиваем свойством частного:
= log₂(8 · √4) - log₂(2)
Шаг 2: Разбиваем числитель свойством произведения:
= log₂(8) + log₂(√4) - log₂(2)
Шаг 3: Применяем свойство корня:
= log₂(8) + (1/2)·log₂(4) - log₂(2)
Шаг 4: Вычисляем каждый логарифм:
log₂(8) = 3, log₂(4) = 2, log₂(2) = 1
Шаг 5: Подставляем:
= 3 + (1/2)·2 - 1 = 3 + 1 - 1 = 3
Ответ: 3
Пример (ML-пример): Упрости формулу log-likelihood
Допустим, у нас нормальное распределение, и мы хотим записать log-likelihood для выборки x₁, x₂, ..., xₙ:
$$\ell(\mu, \sigma) = \log \prod_{i=1}^{n} \frac{1}{\sigma\sqrt{2\pi}} e^{-\frac{(x_i - \mu)^2}{2\sigma^2}}$$
Шаг 1: Логарифм произведения = сумма логарифмов: $$= \sum_{i=1}^{n} \log\left(\frac{1}{\sigma\sqrt{2\pi}} e^{-\frac{(x_i - \mu)^2}{2\sigma^2}}\right)$$
Шаг 2: Логарифм произведения двух множителей: $$= \sum_{i=1}^{n} \left[\log\left(\frac{1}{\sigma\sqrt{2\pi}}\right) + \log\left(e^{-\frac{(x_i - \mu)^2}{2\sigma^2}}\right)\right]$$
Шаг 3: Свойство степени (и log(e^x) = x):
$$= \sum_{i=1}^{n} \left[-\log(\sigma\sqrt{2\pi}) - \frac{(x_i - \mu)^2}{2\sigma^2}\right]$$
Шаг 4: Выносим константы: $$= -n\log(\sigma\sqrt{2\pi}) - \frac{1}{2\sigma^2}\sum_{i=1}^{n}(x_i - \mu)^2$$
Всё! Из страшного произведения получилась приятная сумма, которую легко дифференцировать по μ и σ. Это — именно то, что делают алгоритмы типа EM и MLE под капотом.
Практика: 30 заданий
Базовые (задания 1–10)
Задание 1. Вычисли: log₂(16)
Задание 2. Вычисли: log₃(243)
Задание 3. Вычисли: log₁₀(1000)
Задание 4. Вычисли: log₅(1)
Задание 5. Вычисли: log₇(7)
Задание 6. Упрости: log₂(8) + log₂(4)
Задание 7. Упрости: log₃(27) - log₃(9)
Задание 8. Вычисли: log₂(√8)
Задание 9. Вычисли: log₄(64)
Задание 10. Вычисли: log₉(27)
Средние (задания 11–20)
Задание 11. Вычисли: 2·log₅(25) + log₅(5)
Задание 12. Упрости: log₂(48) - log₂(3)
Задание 13. Упрости: log₆(4) + log₆(9)
Задание 14. Вычисли: log₂(∛32)
Задание 15. Упрости: log₃(√27) + log₃(9)
Задание 16. Упрости: log₂(12) - log₂(3) + log₂(8)
Задание 17 (прикладное). В нейросетевом классификаторе вероятности трёх классов: p₁ = 1/2, p₂ = 1/4, p₃ = 1/4. Вычисли энтропию Шеннона: H = -Σ pᵢ · log₂(pᵢ).
Задание 18 (прикладное). Звук интенсивностью I = 10⁻⁴ Вт/м² — насколько это громко в децибелах? Формула: dB = 10 · log₁₀(I / I₀), где I₀ = 10⁻¹² Вт/м².
Задание 19. Вычисли log₆(6⁵)
Задание 20. Упрости: log₅(500) - log₅(4)
Продвинутые (задания 21–30)
Задание 21. Докажи, что log_a(b) · log_b(c) = log_a(c)
Задание 22. Вычисли: log₂(3) · log₃(4) · log₄(8)
Задание 23. Упрости: log₂(x³) - 3·log₂(x) + 2·log₂(y)
Задание 24. Упрости: log₃(x²y) - log₃(xy²) + log₃(y)
Задание 25 (прикладное). В Word2Vec embeddings расстояние между векторами измеряется через косинусную схожесть. Допустим, ты хочешь нормализовать схожесть с помощью log: score = log(1 + cos_sim). Если cos_sim = 0.9, cos_sim = 0.5, cos_sim = 0.1, вычисли разницу между максимальным и минимальным score. Используй натуральный логарифм.
Задание 26. Найди значение: log₂(log₃(log₄(64)))
Задание 27 (прикладное). Cross-entropy loss для бинарной классификации:
L = -(y·ln(p) + (1-y)·ln(1-p))
Если y = 1 (правильный класс) и p = 0.9, вычисли loss. Затем вычисли, насколько больше loss при p = 0.5. Используй свойства логарифмов, где возможно.
Задание 28. Упрости:
$$\frac{\log_8(27)}{\log_8(9)}$$
Задание 29 (прикладное). В процессе обучения нейросети loss убывает по формуле L(t) = L₀ · e^(-kt). Если начальный loss L₀ = 2.3, а через 100 эпох L(100) = 0.5, найди коэффициент убывания k.
Задание 30 (прикладное). Сравни без калькулятора: что больше — log₂(5) или log₃(7)?
Частые ошибки
❌ Ошибка 1: “Логарифм суммы = сумма логарифмов”
Неправильно:
log(a + b) = log(a) + log(b) ← ЭТО ЛОЖЬ
Правильно: свойство работает только для произведения, не для суммы:
log(a · b) = log(a) + log(b) ← это верно
log(a + b) ≠ log(a) + log(b) ← это неверно
Пример ошибки: log₂(4 + 4) ≠ log₂(4) + log₂(4)
log₂(8) = 3, но log₂(4) + log₂(4) = 2 + 2 = 4. Разные числа!
Почему важно: эта ошибка уничтожает правильность расчётов в любом контексте.
❌ Ошибка 2: “Выносим показатель без учёта знака”
Неправильно:
log(1/x²) = 2·log(x)
Правильно:
log(1/x²) = log(x⁻²) = -2·log(x)
Знак минус пропал при раскрытии 1/x² = x⁻².
❌ Ошибка 3: “log(a)/log(b) = log(a/b)”
Неправильно:
log(8)/log(4) = log(8/4) = log(2) ← ЭТО ЛОЖЬ
Правильно:
log₁₀(8)/log₁₀(4) = log₄(8) = 3/2 [формула смены основания наоборот]
Деление логарифмов — это смена основания, а не логарифм частного.
❌ Ошибка 4: Логарифм от отрицательного числа
Неправильно:
log(-9) = 2·log(-3) ← ЭТО ЛОЖЬ
Правильно: логарифм определён только для положительных аргументов. log(-9) не существует в вещественных числах.
В ML это важно: если нейросеть выдаёт вероятности, в код нужно добавлять clip(p, 1e-7, 1) перед log(p), иначе log(0) = -∞ или log(отрицательного) — ошибка.
❌ Ошибка 5: Путаница основания и аргумента
Неправильно:
log₃(5) = log₅(3) ← ЭТО ЛОЖЬ (в общем случае)
Правильно:
log₃(5) = 1/log₅(3) [из формулы: log_a(b)·log_b(a) = 1]
❌ Ошибка 6: “log_a(0) = 0”
Неправильно: log_a(0) не существует (уходит в -∞).
Правильно: log_a(1) = 0. Нулю соответствует не нуль, а единица!
В ML: именно поэтому cross-entropy добавляет epsilon = 1e-7 к вероятностям — защита от log(0) = -∞.
Главное запомнить
📝 Ключевые понятия
✅ Определение: log_a(b) = c ↔ a^c = b. Логарифм — это показатель степени.
✅ Свойство произведения: log_a(M·N) = log_a(M) + log_a(N) — умножение превращается в сложение. Основа log-likelihood.
✅ Свойство частного: log_a(M/N) = log_a(M) - log_a(N) — деление превращается в вычитание. Основа KL-divergence.
✅ Свойство степени: log_a(Mⁿ) = n·log_a(M) — показатель “выходит” вперёд. Используется везде в упрощениях.
✅ Свойство корня: log_a(ⁿ√M) = (1/n)·log_a(M) — частный случай степени с n = 1/n.
✅ Смена основания: log_a(b) = ln(b)/ln(a) — любой логарифм выражается через натуральный. В коде: np.log(b) / np.log(a).
✅ Ноль и единица: log_a(1) = 0, log_a(a) = 1 — запомни автоматически.
✅ Цепочка: log_a(b)·log_b(c) = log_a(c) — телескопическое свойство.
✅ Обратность: a^(log_a(b)) = b — логарифм и экспонента обратны друг другу.
✅ В ML: torch.log(x) = натуральный логарифм; перед log всегда клипай значения, чтобы избежать log(0).
Связь с другими темами
Что нужно было знать до этого урока: - Степени и корни — свойство степени напрямую вытекает из правил работы со степенями - Определение логарифма — без этого свойства — просто магические формулы - Показательная функция — логарифм — это её обратная функция
Что изучить дальше:
- Логарифмические уравнения — научимся решать уравнения с логарифмами (используя все свойства этого урока)
- Логарифмические неравенства — здесь важна монотонность: при a > 1 логарифм возрастает, при 0 < a < 1 — убывает
- Производная логарифма — (ln x)' = 1/x — фундамент для понимания градиентного спуска
Где это нужно в жизни:
💻 В программировании:
- math.log(x), np.log(x), torch.log(x) — натуральный логарифм
- Log-scale для осей на графиках (matplotlib: plt.yscale('log')) — когда данные меняются на порядки
- Binary search работает за O(log n) — логарифм в основе алгоритмической сложности
🤖 В ML/AI:
- Cross-entropy loss: L = -Σ yᵢ·log(pᵢ) — стандартная функция потерь для классификации
- Log-likelihood: максимизация правдоподобия через суммирование логарифмов вероятностей
- Entropy & KL-divergence: H = -Σ p·log(p) — мера неопределённости в распределении
- Softmax numerical stability: log-sum-exp trick использует ln(eᵃ) = a
- Word2Vec, BERT, GPT — везде в loss функциях логарифмы вероятностей
📊 В Data Science:
- Log-трансформация признаков — если распределение сильно скошено, log(x) его нормализует
- Шкала децибел для аудио (log₁₀)
- pH в химии — pH = -log₁₀[H⁺]
- Shaper ratio, log-returns — логарифмическая доходность в финансах
🔬 В науке: - Шкала Рихтера для землетрясений — логарифмическая - Звёздная величина в астрономии — логарифмическая - Информационная теория Шеннона — основана на логарифмах
Лайфхаки и полезные трюки
1. Быстрая оценка логарифма
Нужно прикинуть log₂(100) без калькулятора?
2^6 = 64, 2^7 = 128
64 < 100 < 128 → 6 < log₂(100) < 7
100 ближе к 128, значит ≈ 6.6
Точный ответ: log₂(100) ≈ 6.644. Оценка 6.6 — очень близко!
2. Трюк для log_a(b), когда a и b — степени одного числа
Если a = 2^m и b = 2^n, то:
log_a(b) = log_{2^m}(2^n) = n/m
Пример: log₈(32) = log_{2³}(2⁵) = 5/3. Очень быстро!
3. Смена основания через ln в коде
Когда нужен log₂(x) в Python:
import math
log2_x = math.log(x) / math.log(2)
# или просто:
log2_x = math.log2(x)
# или в numpy:
import numpy as np
log2_x = np.log2(x)
4. Численная стабильность: log-sum-exp
В ML нельзя просто писать log(exp(a) + exp(b)) — получишь overflow. Трюк:
# НЕСТАБИЛЬНО:
result = np.log(np.exp(a) + np.exp(b))
# СТАБИЛЬНО (log-sum-exp):
c = max(a, b)
result = c + np.log(np.exp(a - c) + np.exp(b - c))
Математически одно и то же, но без overflow.
5. Мнемоника для свойства произведения
“Лог произведения = сумма Логов” — акроним ЛПрСЛ, или запомни через фразу:
“Умножаешь внутри — складываешь снаружи”
6. Знак перед логарифмом от дроби 0 < x < 1
Если аргумент от 0 до 1 (например, вероятность), то при основании a > 1:
0 < p < 1 → log(p) < 0
Именно поэтому в cross-entropy стоит минус: -Σ p·log(p) — чтобы loss был положительным!
Интересные факты
💡 Слово “логарифм” придумал сам Непер — от греческих слов logos (соотношение) и arithmos (число). Буквально: “число соотношений”.
💡 Число e появилось через логарифмы — Эйлер открыл константу e ≈ 2.718, изучая непреровный рост. Натуральный логарифм ln исторически первичен по отношению к десятичному.
💡 Логарифмическая линейка — главный вычислительный инструмент инженеров с 1620-х по 1970-е годы. На ней были нанесены логарифмические шкалы, которые превращали умножение в сложение. Инженеры NASA, проектировавшие Аполлон-11, использовали логарифмические линейки.
💡 Самореференс в ML: логарифмы используются для обучения нейросетей, которые потом сами могут решать математические задачи с логарифмами. Такие дела.
💡 Совет: Лучший способ освоить логарифмы — начни замечать их в коде, который ты читаешь. Открой любой ML-репозиторий на GitHub и найди torch.log или np.log. Спроси себя: зачем здесь логарифм? Что он делает с числами? Через неделю такого наблюдения свойства логарифмов станут частью твоей интуиции.
Следующий шаг → Переходи к логарифмическим уравнениям: там ты будешь использовать все эти свойства, чтобы “раскрывать” уравнения и находить неизвестные. Именно там начинается настоящая работа с логарифмами.
Понял тему? Закрепи в боте! 🚀
Попрактикуйся на задачах и получи персональные рекомендации от AI
💪 Начать тренировку