Теория информации
Теория информации (Клод Шеннон, 1948) измеряет передачу, хранение и обработку данных независимо от смысла. Текст, звук, картинка или телеметрия — для теории это последовательности символов с вероятностями.
Энтропия
Энтропия H — средняя неопределённость символа источника (в битах на символ):
H = −Σ pᵢ · log₂(pᵢ) (сумма по всем символам алфавита с вероятностями pᵢ).
- Равномерный алфавит — максимум для данного размера алфавита.
- Перекошенные частоты (частая буква "а") — ниже
H, больше избыточности, лучше сжимается. - Случайный шифротекст — энтропия близка к пределу, сжатие без потерь почти бесполезно.
Теорема Шеннона об источнике: средняя длина безпотерьного кода не может быть меньше энтропии источника. ZIP, Huffman, arithmetic coding приближаются к этому пределу. Прикладной разбор на примере PNG — Растровые форматы.
От частот к битам (числовой пример)
Пусть источник выдаёт только A и B с вероятностями p(A)=0.8, p(B)=0.2:
| Символ | pᵢ | −pᵢ log₂ pᵢ (бит) |
|---|---|---|
| A | 0.8 | ≈ 0.72 |
| B | 0.2 | ≈ 0.46 |
| Сумма H | ≈ 1.18 бит/символ |
Если кодировать оба символа по 1 биту, средняя длина 1 бит/символ — уже близко к пределу. При p(A)=0.99, p(B)=0.01 энтропия мала (~0.08 бит), а фиксированный 1 бит на символ — избыточность, которую Huffman и арифметическое кодирование "сжимают".
Play ITЗагрузка интерактивного демо…
Энтропия в коде (оценка по тексту)
import math
from collections import Counter
def shannon_entropy(text: str) -> float:
"""Энтропия в битах на символ."""
n = len(text)
if n == 0:
return 0.0
counts = Counter(text)
h = 0.0
for c in counts.values():
p = c / n
h -= p * math.log2(p)
return h
sample = "aaaaab" * 100 + "c" * 10
print(f"H ≈ {shannon_entropy(sample):.3f} бит/символ")
На короткой выборке оценки pᵢ шумные — для метрик в продакшене смотрят доверительные интервалы (см. вероятность и статистику).
Энтропия Шеннона и кросс-энтропия в ML
| Понятие | Формула (идея) | Интерпретация |
|---|---|---|
| Энтропия H(p) | неопределённость истинного распределения меток | "насколько трудно угадать класс" |
| Кросс-энтропия H(p, q) | −Σ p(x) log q(x) | штраф, если модель q плохо предсказывает реальные p |
| KL-дивергенция | H(p, q) − H(p) | "лишняя" битовая цена неверной модели |
В классификации кросс-энтропия — мера расхождения предсказанных вероятностей с one-hot меткой.
Кодирование и избыточность
Практические коды добавляют избыточность для устойчивости к ошибкам (CRC, Reed–Solomon) — платят объёмом за надёжность канала.
Условная энтропия учитывает контекст: символы не независимы ("q" почти всегда за "u" в английском). Отсюда словарные методы (LZ) и предсказательное моделирование (PPM).
Пропускная способность канала
Теорема Шеннона о канале: при заданном уровне шума существует предел скорости передачи, ниже которого ошибки можно делать сколь угодно малыми, а выше — нет.
В IT это объясняет:
- выбор кодеков и протоколов с учётом BER;
- trade-off между сжатием, latency и CPU;
- почему "сжать уже сжатое" (jpeg повторно) не даёт выигрыша.
Инженерная иллюстрация: если байты файла выглядят как случайные (высокая энтропия), gzip почти не уменьшит размер; если в логах повторяются шаблоны (ERROR, user_id=), энтропия ниже — сжатие эффективнее.
Связь с безопасностью и данными
- Стойкость пароля — логарифм мощности пространства ключей; словари и утечки снижают эффективную энтропию.
- Длина хеша — комбинаторика коллизий (см. дискретную математику).
- ML — кросс-энтропия как мера "расстояния" распределений предсказания и метки.
Обзор блока: Математическая основа IT.