Алгебра
Комплексные числа
MP3, JPEG, 5G, радар, MRI - все работают через FFT. FFT работает в комплексных числах. $e^{i\theta} = \cos\theta + i\sin\theta$ - формула Эйлера - это не абстракция в учебнике. Это вычислительная инфраструктура цифрового мира. А в LLaMA и Mistral она же кодирует позицию каждого токена.
- **FFT и сжатие**: MP3, JPEG, AVIF - комплексный спектральный анализ убирает незначимую информацию. Каждый файл, который качается из интернета
- **RoPE в трансформерах**: LLaMA, Mistral, Gemma кодируют позицию токена через $e^{im\theta}$ - умножение на комплексный ротатор
- **ComplexNet для MRI**: комплексные веса нейросети обрабатывают k-space данные напрямую, без потери фазовой информации
Предварительные знания
i² = -1: геометрия, а не магия
**1572 год. Болонья.** Рафаэль Бомбелли решал уравнение $x^3 = 15x + 4$. Кардано дал формулу для кубических уравнений - вставляй числа, получай корень. Бомбелли вставил. Промежуточный шаг потребовал $\sqrt{-121}$. Любой нормальный математик XVI века остановился бы здесь. Бомбелли не остановился. Он посчитал как ни в чём не бывало - и получил $x = 4$, вещественный корень, который проверяется элементарно: $4^3 = 64 = 15 \cdot 4 + 4$. Мнимые числа появились не как самоцель. Они появились потому, что через них прошёл путь к вещественному ответу.
Числовая прямая - это прямая. Комплексные числа расширяют её до плоскости. Вещественные - горизонтальная ось. Мнимые - вертикальная. $i = \sqrt{-1}$ - поворот на 90°. Умножение на $i$ дважды: поворот на 180° = умножение на $-1$. Это не магия - это геометрия. $i^2 = -1$ - описание того, что происходит при двух поворотах на 90°.
**Комплексное число** $z = a + bi$, где $a, b \in \mathbb{R}$: - $\text{Re}(z) = a$ - вещественная часть (горизонталь) - $\text{Im}(z) = b$ - мнимая часть (вертикаль) - $|z| = \sqrt{a^2 + b^2}$ - модуль (расстояние от нуля) - $\bar{z} = a - bi$ - сопряжённое (отражение по вещественной оси) - $z \cdot \bar{z} = a^2 + b^2 = |z|^2$ - ключевое тождество
Чему равно $|3 + 4i|$?
Арифметика и геометрия умножения
Сложение - поточечное, как у векторов. Умножение - вот где начинается интересное. $(a + bi)(c + di) = (ac - bd) + (ad + bc)i$. Раскрывается как обычное, с заменой $i^2 = -1$. Но геометрически: умножение двух комплексных чисел **перемножает их модули** и **складывает аргументы**. Длины умножаются, углы складываются. Это поворот и масштабирование одновременно - ровно то, что делает матрица поворота $2 \times 2$, но за одну операцию.
**Деление** через сопряжённое: $\frac{a+bi}{c+di} = \frac{(a+bi)(c-di)}{c^2+d^2}$. Знаменатель становится вещественным: $|z|^2 = z \cdot \bar{z}$. Эта же техника используется в нормализации в ComplexNet - комплексных нейронных сетях для обработки MRI и радарных сигналов.
**Умножение на $e^{i\theta}$** - чистый поворот на угол $\theta$, модуль не меняется. Именно этот факт лежит в основе Rotary Position Embedding (RoPE) - позиционного кодирования в трансформерах LLaMA, Mistral, Gemma. Позиция токена кодируется как угол поворота в комплексной плоскости.
Чему равно $(2+3i)(1-i)$?
Формула Эйлера и корни из единицы
Самая красивая формула математики: $e^{i\theta} = \cos\theta + i\sin\theta$. При $\theta = \pi$: $e^{i\pi} + 1 = 0$ - в одном уравнении все пять фундаментальных констант. Но важнее красоты - практика: формула превращает поворот на угол $\theta$ в умножение на $e^{i\theta}$. Это вычислительно дешевле матрицы $2 \times 2$. И это основа FFT.
Корни из единицы $\omega_n = e^{2\pi i / n}$ - равномерно расположенные на единичной окружности точки: $n$ точек через угол $2\pi/n$ каждая. Свойство ортогональности: $\sum_{k=0}^{n-1} \omega_n^{jk} = n$ если $j \equiv 0 \pmod{n}$, иначе 0. Это алгебраическое чудо - именно оно позволяет FFT разложить сигнал в частоты.
**RoPE (Rotary Position Embedding)** - позиционное кодирование в LLaMA, Mistral, Gemma. Позиция токена $m$ кодируется как умножение embedding-вектора на $e^{im\theta}$ в комплексной плоскости. Это дало лучшее масштабирование длины контекста, чем синусоидальное кодирование оригинального Transformer. Формула Эйлера - не академическая история. Это инфраструктура каждого современного LLM.
По формуле де Муавра, $(\cos 60° + i \sin 60°)^3$ равно:
FFT, RoPE и комплексные нейросети
**FFT (Кули-Тьюки, 1965)** - один из самых важных алгоритмов в истории CS. До него дискретное преобразование Фурье требовало $O(n^2)$ операций. Кули и Тьюки заметили: вычисление полинома в $n$ корнях из единицы рекурсивно распадается на два вычисления в $n/2$ корнях. Итог - $O(n \log n)$. Разница между $n^2$ и $n \log n$ при $n = 10^6$: от одного часа до одной секунды.
| Применение | Как используется комплексная математика | Масштаб |
|---|---|---|
| MP3/AAC сжатие | MDCT через FFT - выделяет неслышимые частоты | Миллиарды устройств |
| JPEG/AVIF | DCT 8x8 блоков - дискретный аналог FFT | Каждое изображение в вебе |
| 5G OFDM | Сигнал = IFFT(комплексных символов), демодуляция = FFT | Каждый смартфон |
| MRI томография | k-space данные - комплексный Фурье-образ среза | Медицинская диагностика |
| RoPE в трансформерах | $e^{im\theta}$ - позиция токена как угол поворота | LLaMA, Mistral, Gemma |
**Случайные Фурье признаки (Rahimi-Recht 2007)** - мост между kernel methods и нейросетями. Теорема Бохнера: любое стационарное ядро (RBF, Matérn) представимо как интеграл по $e^{i\omega^T x}$. Сэмплируй случайные частоты $\omega$ - получай линейную аппроксимацию нелинейного ядра. Это позволило масштабировать SVM до миллионов точек - и дало теоретическую связь с первым слоем нейросети.
Сколько корней (в $\mathbb{C}$, с учётом кратности) у полинома $x^5 - 1$?
Ключевые идеи
- **$z = a + bi$**: комплексная плоскость расширяет числовую прямую до 2D. $|z| = \sqrt{a^2+b^2}$, $z\bar{z} = |z|^2$
- **Умножение = поворот + масштаб**: модули перемножаются, аргументы складываются. Умножение на $e^{i\theta}$ - чистый поворот
- **Формула Эйлера** $e^{i\theta} = \cos\theta + i\sin\theta$: основа FFT, RoPE в трансформерах, Фурье-признаков
- **Основная теорема**: полином степени $n$ имеет ровно $n$ корней в $\mathbb{C}$. Вещественные полиномы имеют комплексно-сопряжённые пары корней
Что дальше
Комплексные числа пронизывают весь дальнейший курс и современные ML-системы:
- Полиномы — Корни полиномов над R могут быть комплексными - вот зачем нужно расширение до C
- Собственные значения и векторы — Комплексные eigenvalues = вращательная динамика. Spectral radius определяет устойчивость RNN
- Последовательности — Геометрические ряды в C: основа спектрального анализа и доказательства сходимости FFT
Вопросы для размышления
- Почему FFT требует, чтобы длина сигнала была степенью двойки? Что происходит при других длинах (как в numpy.fft.fft)?
- Комплексные числа изобрели для корней отрицательных чисел. Как вышло, что они оказались полезны в совершенно несвязанной области - сигнальной обработке?
- RoPE кодирует позицию токена как угол поворота в комплексной плоскости. Почему это даёт лучшую экстраполяцию на длинные контексты, чем синусоидальное кодирование?
Связанные уроки
- alg-04 — Полиномы над R имеют комплексные корни - мотивация для расширения до C
- alg-10 — Комплексные собственные значения матриц: анализ динамики RNN и диффузионных моделей
- calc-01-sequences — Геометрические ряды в C: основа спектрального анализа и FFT
- prob-04-bayes — Фурье-признаки (Rahimi-Recht 2007) связывают kernel methods и нейросети через комплексную экспоненту
- la-01-vectors-intro