Формулы и лайфхаки
Python · 97
Все формулы этого курса и простые способы их запомнить — на одной странице.
1Функции и модулиСредний
Функции
К уроку- Fтемпература в градусах Фаренгейта
- Cтемпература в градусах Цельсия
Превратим эту формулу в функцию
2Python в деталяхПродвинутый
Итераторы и генераторы
К урокуДекораторы и замыкания
К урокуКонтекстные менеджеры и оператор with
К урокуАннотации типов и dataclasses
К урокуПродвинутое ООП: специальные методы, свойства и MRO
К урокуРегулярные выражения: модуль re
К урокуАсинхронный Python: async и await
К урокуПакеты, модули и виртуальные окружения
К урокуПроизводительность, O-большое и модуль collections
К уроку3Веб и автоматизацияПродвинутый
Работа с JSON и CSV
К урокуВеб-API и библиотека requests
К урокуВеб-сервис на FastAPI
К урокуСкрипты автоматизации
К уроку4Наука о данных: NumPy, pandas, matplotlibУниверситет
Основы NumPy: массивы
К уроку- nчисло осей (
ndim) - dₖдлина по k-й оси (элемент
shape) - itemsizeразмер одного элемента в байтах: 8 для
float64иint64, 4 дляfloat32иint32, 1 дляboolиint8
Для m формы (2, 3): size = 2 · 3 = 6. Для temps: nbytes = 4 · 8 = 32 байта.
- hшаг между точками
linspace - nчисло элементов, которые даёт
arange - ⌈ ⌉округление вверх
np.linspace(0, 1, 5): h = 1 / 4 = 0,25. np.arange(0, 10, 2): n = ⌈10 / 2⌉ = 5 элементов.
- x̄среднее арифметическое (
mean) - nчисло значений
- σстандартное отклонение (
std): насколько значения в среднем удалены от среднего - ddof0 — для генеральной совокупности (по умолчанию в NumPy), 1 — для выборки (несмещённая дисперсия)
np.std по умолчанию делит на n, а учебники статистики и Series.std в pandas — на n − 1. Чтобы получить тот же результат, передай ddof=1.
NumPy: векторизация и линейная алгебра
К уроку- xᵢⱼj-й признак i-го примера
- μⱼ, σⱼсреднее и стандартное отклонение j-го столбца
- zᵢⱼстандартизованное значение (z-оценка): среднее 0, стандартное отклонение 1
- aᵢₖэлемент A в строке i, столбце k
- bₖⱼэлемент B в строке k, столбце j
- nобщее число столбцов A и строк B
- det Aопределитель; если он равен 0, матрица вырождена и обратной нет
- A⁻¹обратная матрица: A · A⁻¹ = I (единичная матрица)
- vсобственный вектор (v ≠ 0)
- λсобственное значение
- Iединичная матрица
Второе равенство — характеристическое уравнение: система (A − λI)v = 0 имеет ненулевое решение, только если определитель равен 0.
- Xматрица признаков n × d (первый столбец — единицы)
- yвектор целевых значений
- wкоэффициенты, минимизирующие сумму квадратов ошибок
Основы pandas: Series и DataFrame
К уроку- qуровень: 0,25 (первый квартиль), 0,5 (медиана), 0,75 (третий квартиль)
- x₍ₖ₎k-е значение после сортировки по возрастанию (счёт с 0)
- h«дробная позиция» в отсортированных данных
По умолчанию pandas и NumPy вычисляют квантили линейной интерполяцией между двумя соседними значениями.
Анализ данных в pandas
К уроку- xᵢсреднее i-й группы (например, средний чек)
- wᵢвес группы — обычно число наблюдений
Взвешенное среднее. В pandas: np.average(x, weights=w) или просто общая сумма, делённая на общее количество.
- xₜпоказатель текущего периода
- xₜ₋₁показатель предыдущего периода
Темп роста; в pandas его вычисляет pct_change() (без умножения на 100). У первого периода нет предыдущего значения, поэтому там NaN.
Визуализация в matplotlib
К уроку- kчисло интервалов (правило Стёрджеса)
- hширина интервала (правило Фридмана–Диакониса), в единицах данных
- nчисло наблюдений
- IQRмежквартильный размах Q3 − Q1
Правило Стёрджеса хорошо для примерно нормальных и не слишком больших данных; правило Фридмана–Диакониса устойчиво к выбросам. ax.hist(x, bins='fd') применяет второе автоматически.
- nᵢнаблюдения в i-м интервале
- fᵢвысота столбца при
density=True(плотность) - hширина интервала
ax.hist(x, density=True) делает сумму площадей столбцов равной 1 — такую гистограмму можно сравнивать с кривой плотности вероятности.
Статистика на Python
К уроку- nобъём выборки
- s²выборочная дисперсия (единица — квадрат единицы данных)
- sвыборочное стандартное отклонение (в единицах данных); в NumPy
std(ddof=1)
- Q1, Q3первый и третий квартиль (25% и 75%)
- IQRQ3 − Q1, ширина средней половины данных
Правило Тьюки: значения вне этого интервала считаются выбросами. Здесь: 14,75 + 1,5 · 1,75 = 17,375, значит, 45 — выброс.
- μсреднее распределения
- σстандартное отклонение (σ > 0)
- f(x)плотность вероятности; P(a < X < b) — площадь под кривой между a и b
- zz-оценка: положение в стандартном нормальном распределении (μ = 0, σ = 1)
- SEстандартная ошибка среднего
- σ, sстандартное отклонение генеральной совокупности и выборки
- t*критическое значение t-распределения; для 95% α = 0,05
- n − 1число степеней свободы
95%-й доверительный интервал для среднего. stats.t.ppf(0.975, df=n - 1) возвращает t*, а stats.t.interval — весь интервал.
- x̄₁, x̄₂средние групп
- s₁², s₂²выборочные дисперсии групп
- n₁, n₂объёмы групп
t-статистика Уэлча: разность средних, делённая на её стандартную ошибку. Чем больше |t|, тем меньше p.
- r−1 ≤ r ≤ 1; знак показывает направление, |r| — силу
- x̄, ȳсреднее каждой переменной
Машинное обучение в scikit-learn
К уроку- yᵢ, ŷᵢистинное значение и предсказание
- RMSEтипичная ошибка в единицах целевой переменной (здесь тысячи манатов)
- R²доля объяснённой вариации: 1 — идеально, 0 — уровень модели, всегда предсказывающей среднее
Модель нашла коэффициенты 1,48 и 11,06 — близко к истинным 1,5 и 12. RMSE ≈ 9,8 — это уровень добавленного шума (σ = 10): модель полностью уловила сигнал, а шум предсказать невозможно.
- σ(z)сигмоида: переводит любое число в интервал (0; 1), σ(0) = 0,5
- pвероятность принадлежности примера к положительному классу; при p ≥ 0,5 предсказывается «1»
- pₖдоля класса k в узле
- G0 — узел чистый (один класс); для двух классов максимум 0,5
- nL, nRчисло примеров в левом и правом дочерних узлах
- Precisionкакая доля названных спамом писем действительно спам
- Recallкакую долю всего спама удалось поймать
- F1гармоническое среднее precision и recall
- Nобщее число примеров
- kчисло блоков, обычно 5 или 10
- scoreᵢрезультат, когда i-й блок служит тестом
5ИИ и глубокое обучение на PyTorchУниверситет
Основные понятия машинного обучения
К уроку- nчисло примеров
- yᵢистинное значение (метка) i-го примера
- ŷᵢпредсказание модели
Среднеквадратичная ошибка (mean squared error). Возведение в квадрат сильнее наказывает большие ошибки; единица измерения — квадрат единицы метки.
- Kчисло классов
- yₖ1, если класс k правильный, иначе 0 (one-hot)
- pₖвероятность, которую модель даёт классу k
- pₜвероятность правильного класса
Перекрёстная энтропия (cross-entropy). Для двух классов: BCE = −[y · ln p + (1 − y) · ln(1 − p)]. Когда вероятность правильного класса стремится к 1, потери стремятся к 0.
- θвсе параметры модели (веса и смещения)
- ηскорость обучения, обычно 0,0001–0,1
- ∇L(θ)градиент — вектор частных производных потерь по каждому параметру
Правило обновления градиентного спуска. Каждое повторение — один шаг; один полный проход по обучающей выборке называется эпохой.
- w, bугловой коэффициент (вес) и свободный член (смещение) прямой
- ŷᵢ − yᵢошибка на i-м примере
- f̂(x)предсказание модели, обученной на случайной обучающей выборке
- Biasсмещение: средняя ошибка из-за слишком простых предположений модели
- Varдисперсия: насколько предсказание зависит от конкретной обучающей выборки
- σ²неустранимый шум в данных
Разложение MSE на смещение и дисперсию. С ростом сложности модели смещение падает, а дисперсия растёт; лучшая модель минимизирует сумму.
- λсила регуляризации (гиперпараметр, подбирается на валидации)
- ∑ⱼ θⱼ²сумма квадратов весов — штрафует большие веса
L2-регуляризация (weight decay): модель предпочитает более «гладкие» функции и меньше склонна запоминать шум.
PyTorch: тензоры
К уроку- d₁ … dₖразмеры из shape
- numelчисло элементов (
x.numel()) - sразмер одного элемента в байтах (
x.element_size())
- A, Bматрицы размеров m × n и n × p
- nвнутренний размер — должен совпадать у обеих матриц
- Cᵢⱼскалярное произведение i-й строки A и j-го столбца B
Матричное умножение — главная операция нейросетей: умножая входы размера (N, D) на матрицу весов (D, K), мы обрабатываем весь пакет за один раз. Для тензоров с большим числом осей @ действует на две последние оси, а остальные считаются пакетными.
PyTorch: autograd и автоматическое дифференцирование
К уроку- Lпотери (корень графа)
- y, ŷпромежуточные значения (внутренние узлы графа)
- x, wлистья: входы и параметры
Производная сложной функции равна произведению локальных производных. Если переменная влияет на потери по нескольким путям, произведения по всем путям складываются: ∂L/∂x = ∑ₖ ∂L/∂yₖ · ∂yₖ/∂x.
- σ(z)сигмоида, значения в интервале (0; 1)
- σ′(z)её производная; максимум 0,25 при z = 0
Доказательство: σ′(z) = e⁻ᶻ / (1 + e⁻ᶻ)² = σ(z) · e⁻ᶻ / (1 + e⁻ᶻ), а последняя дробь равна 1 − σ(z).
PyTorch: построение нейронных сетей
К уроку- xвходной вектор (n признаков)
- wвеса — важность каждого входа
- bсмещение (bias) — сдвигает порог активации
- φфункция активации (ReLU, сигмоида…)
- aвыход нейрона (активация)
- ReLUобнуляет отрицательные значения; производная 1 при z > 0 и 0 при z < 0
- σсигмоида: значения в (0; 1), трактуются как вероятность
- tanhгиперболический тангенс: значения в (−1; 1), симметричен относительно нуля
- zсырые оценки (логиты) для K классов
- softmax(z)ᵢвероятность класса i; все положительны и в сумме дают 1
В многоклассовой классификации softmax превращает логиты последнего слоя в распределение вероятностей.
- Xпакет входов, форма (N, nin)
- Wвеса, форма (nout, nin) —
layer.weight - bсмещения, форма (nout,) —
layer.bias - Yвыходы, форма (N, nout)
У каждого выходного нейрона nin весов и одно смещение, поэтому в полносвязном слое (nin + 1) · nout параметров.
PyTorch: цикл обучения модели
К уроку- Nчисло примеров в обучающей выборке
- Bразмер пакета (batch size)
- ⌈ ⌉округление вверх: последний неполный пакет — тоже шаг
- zсырые логиты модели
- tномер правильного класса
nn.CrossEntropyLoss объединяет log-softmax и перекрёстную энтропию: −ln softmax(z)ₜ = −zₜ + ln ∑ eᶻʲ. Для пакета потери усредняются.
- gₜградиент на шаге t
- mₜ, vₜскользящие средние градиента и его квадрата (импульс и масштаб)
- m̂ₜ, v̂ₜзначения с поправкой на смещение: mₜ/(1 − β₁ᵗ), vₜ/(1 − β₂ᵗ)
- β₁, β₂, ε, ηв PyTorch по умолчанию 0,9; 0,999; 10⁻⁸; 0,001
Оптимизатор Adam. Каждый параметр получает свой размер шага: параметр с постоянно большими градиентами обновляется осторожно, с маленькими — смелее. SGD с импульсом (momentum) работает по формуле v ← μ·v + g, θ ← θ − η·v.
- argmax(zᵢ)класс с наибольшим логитом для i-го примера — предсказание
- [ … ]1, если условие выполнено, иначе 0
Свёрточные нейронные сети (CNN)
К уроку- xзначение пикселя в [0; 1]
- μ, σсреднее и стандартное отклонение канала по обучающей выборке (для MNIST 0,1307 и 0,3081)
После нормализации входы примерно центрированы около нуля и имеют единичный масштаб — это ускоряет градиентный спуск.
- Xвходное изображение (или карта предыдущего слоя)
- Kфильтр K × K — обучаемые веса
- bсмещение фильтра
- Y[i, j]элемент (i, j) карты признаков
Двумерная свёртка для одного канала. При нескольких входных каналах сумма берётся и по каналам.
- Wширина (или высота) входа в пикселях
- Kразмер ядра
- Pдополнение (padding): нулевые пиксели по краям
- Sшаг (stride): на сколько пикселей сдвигается фильтр
- Oширина выхода; ⌊ ⌋ — округление вниз
Формула размера выхода; для высоты — то же самое. Для пулинга обычно P = 0 и S = K.
- Cin, Coutчисло входных и выходных каналов
Число параметров свёрточного слоя не зависит от размера изображения — веса общие для всех позиций.
Трансформеры и большие языковые модели
К уроку- Xвекторы токенов формы (T, d)
- WQ, WK, WVобучаемые матрицы (d, dₖ)
- Q · Kᵀматрица оценок (T, T): сходство каждого запроса с каждым ключом
- √dₖмасштабный множитель, dₖ — размерность ключа
- softmaxприменяется по строкам: веса внимания положительны и в сумме дают 1
- Vзначения; результат — их взвешенное среднее
Масштабированное скалярное внимание (scaled dot-product attention).
- hчисло голов; размер каждой головы d / h
- WOматрица (d, d), смешивающая объединённые выходы голов
Каждая голова может научиться следить за своим типом связи: одна — за грамматическими связями, другая — за тем, к чему относится местоимение. Параметры: 4 · d² весов и 4 · d смещений для WQ, WK, WV, WO.
- posпозиция токена: 0, 1, 2, …
- iномер пары компонент; малые i колеблются быстро, большие — медленно
- dразмерность эмбеддинга
- xₜt-й токен текста
- p(xₜ₊₁ | x₁, …, xₜ)вероятность, которую модель даёт правильному следующему токену при известных предыдущих
- PPLперплексия; чем меньше, тем лучше модель
- τтемпература: τ < 1 — более уверенный и однообразный текст, τ > 1 — более разнообразный и рискованный
Выбор следующего токена через softmax с температурой.