Important machine learning equations 🔥 Горячее
Байес
$$P(A|B)=\frac{P(B|A)P(A)}{P(B)}$$ Обновляем вероятность гипотезы при новых данных.
def bayes(p_d, p_t_d, p_t_nd):
p_t = p_t_d*p_d + p_t_nd*(1-p_d)
return p_t_d*p_d / p_t
Энтропия
$$H(X)=-\sum_x P(x)\log P(x)$$ Измеряем неопределённость распределения.
import numpy as np
H = lambda p: -np.sum(p*np.log(p, where=p>0))
KL-дивергенция
$$D_{\text{KL}}(P|Q)=\sum_x P(x)\log\frac{P(x)}{Q(x)}$$ Сколько бит «лишних» нужно, если вместо истинного распределения $P$ использовать $Q$.
Кросс-энтропия
$$H(P,Q)=-\sum_x P(x)\log Q(x)$$ Используется как лосс в классификации.
Линейная алгебра
Линейное преобразование
$$\mathbf{y}=A\mathbf{x}$$ Матрица $A$ переводит вектор $\mathbf{x}$ в пространство признаков.
Собственные значения и векторы
$$A\mathbf{v}=\lambda\mathbf{v}$$ Направления, вдоль которых преобразование лишь растягивает/сжимает.
SVD
$$A=U\Sigma V^\top$$ Разложение на ортогональные и диагональные матрицы; основа PCA и рекомендательных систем.
Оптимизация
Градиентный спуск
$$\theta_{t+1}=\theta_t-\eta\nabla_\theta J(\theta)$$ Шагаем против градиента, чтобы минимизировать функцию потерь $J$.
Backprop
$$\frac{\partial L}{\partial W^{(l)}}=\delta^{(l)}(a^{(l-1)})^\top$$ Цепное правило для обучения нейросетей.
Функции потерь
MSE
$$\text{MSE}=\frac{1}{n}\sum_i (y_i-\hat y_i)^2$$ Классика регрессии.
Кросс-энтропия
$$L=-\sum_i y_i\log \hat y_i$$ Стандарт для классификации.
Продвинутые темы
Диффузия
$$q(x_t|x_{t-1})=\mathcal N(x_t;\sqrt{1-\beta_t}x_{t-1},\beta_t I)$$ Постепенное добавление шума и обратное восстановление.
Свертка
$$(f*g)[n]=\sum_m f[m]g[n-m]$$ Извлечение локальных паттернов в CNN.
Softmax
$$\text{softmax}(z_i)=\frac{e^{z_i}}{\sum_j e^{z_j}}$$ Превращает логиты в вероятности.
Attention
$$\text{Attention}(Q,K,V)=\text{softmax}\left(\frac{QK^\top}{\sqrt d_k}\right)V$$ Взвешенная сумма значений по релевантности запроса и ключей.
Краткий конспект ключевых уравнений ML: от вероятностей до трансформеров, с кодом и интуицией.
Комментарии (26)
- @dkislyuk и @morleytj критикуют формат «списка формул» без связного объяснения и советуют читать оригинальную теорию Шеннона.
- @cl3misch нашёл баг в коде энтропии из-за неинициализированных значений и несоответствие формулы кросс-энтропии.
- @dawnofdusk и @cgadski хвалят полноту материала как удобную шпаргалку для быстрого погружения.
- @bee_rider и @calebkaiser обсуждают применение сингулярных чисел и собственных значений в LLM и LoRA.
Line scan camera image processing for train photography 🔥 Горячее
- Камера – Alkeria Necta N4K2-7C, 4096×2 Bayer, 16-бит raw.
- ROI – энергия
∂I/∂x / (0.1·max(I)+|∇I|)
; 99-й перцентиль по блокам, порог 1.5× минимума. - Скорость – сравниваем два зелёных канала Bayer-сдвигами ±7 px, подпиксельный пик методом итеративного Гаусса.
- Ресэмплинг – интерполяция по скорости, чтобы не растянуть/сжать объект.
- Демозаик – bilinear + коррекция полос.
- Полосы – вычитаем медиану по строкам.
- Шум – Gaussian + bilateral фильтр.
- Косой кадр – Hough-прямые → угол → поворот.
- Цвет – калибровка по чекеру X-Rite.
- Код – Python + NumPy + OpenCV, «vibe-coding» в Cursor.
Комментарии (66)
- Пользователи делятся опытом: кто-то пробовал сканировать деревья дроном, кто-то делает slit-scan-анимации вручную, а кто-то вспоминает сканеры и старые цифровые спины.
- Обсуждаются промышленные применения: сортировка продуктов на конвейере, фото-финиш, спутники и даже медицинская ОКТ.
- Рассказывают, как почти любую камеру можно превратить в line-scan, выставив только одну строку пикселей и получив 60 000 FPS.
- Показывают примеры снимков из окна поезда и спорят, насколько реально «отсканировать» часовую поездку целиком.
- Отмечают художественный эффект: поезд застыл между полосами цвета, а движущиеся части искажаются, как у спортсменов на фото-финиша.