Линейная алгебра
Векторы: язык, на котором говорит ML
2012 год: AlexNet побеждает на ImageNet с отрывом 10%. Вся нейросеть - это умножение матриц. 60 миллионов параметров = один огромный вектор весов. Понять, что происходит внутри - значит понять векторы.
- king - man + woman ≈ queen. Арифметика над эмбеддингами воспроизводит смысл. Никакой магии - только сложение векторов.
- RAG, поиск Spotify, рекомендации TikTok - один паттерн: вычислить dot product, найти ближайшего соседа.
- Каждый токен GPT-4 - вектор ~12 288 измерений. Attention - это матрица dot products. Весь LLM - линейная алгебра.
Вектор как стрелка: геометрический взгляд
2012 год: AlexNet побеждает на ImageNet с отрывом 10%. Вся нейросеть - это умножение матриц. 60 миллионов параметров = один огромный вектор весов. Чтобы понять, что происходит внутри, нужно начать с геометрии.
Вектор - это стрелка в пространстве. Её определяют два свойства: **длина** (сколько) и **направление** (куда). Начало стрелки обычно фиксируют в начале координат.
**Сложение** - правило параллелограмма. Поставь конец первой стрелки у начала второй. Сумма - новая стрелка из начала первой в конец второй. Координатно: складываем покомпонентно.
Для векторов слов из обученной word2vec приближённо выполняется: v(king) - v(man) + v(woman) ≈ v(queen) v(king) - v(man) «монарх без признака мужского пола» + v(woman) «добавляем признак женский пол» ≈ v(queen) «королева» Арифметика над списками чисел воспроизводит смысл. И в этом коде нет нейросети - только сложение и вычитание.
**Умножение на число** $k$ оставляет направление прежним и меняет только длину. $k = 2$ - в два раза длиннее. $k = -1$ - противоположное направление. $k = 0$ - схлопывается в нулевой вектор.
Вектор $\mathbf{v} = (3, 4)$. Чему равна его длина $\|\mathbf{v}\|$?
Координаты, базис и скалярное произведение
Координаты вектора зависят от выбора **базиса** - набора опорных стрелок. Стандартный базис $\mathbb{R}^n$: единичные векторы $e_1 = (1, 0, \ldots, 0)$, $e_2 = (0, 1, 0, \ldots)$ и т.д. Каждый вектор - линейная комбинация базисных.
| Объект | Размерность | Кто использует |
|---|---|---|
| RGB-цвет | 3 | Любой экран |
| Цифра MNIST 28×28 | 784 | Учебники по нейросетям |
| Фото 224×224 RGB | 150 528 | ImageNet, ResNet, ViT |
| Embedding слова (word2vec) | 300 | Поиск, переводчики 2013-2018 |
| Embedding текста (OpenAI ada-002) | 1 536 | Все RAG-системы 2023+ |
| Скрытое состояние GPT-4 на токен | ~12 288 | ChatGPT, Claude, Gemini |
**Скалярное произведение** (dot product) двух векторов: $\mathbf{a} \cdot \mathbf{b} = \sum_i a_i b_i = \|\mathbf{a}\| \|\mathbf{b}\| \cos \theta$, где $\theta$ - угол между ними. Результат - число, а не вектор.
**Cosine similarity** = $\frac{\mathbf{a} \cdot \mathbf{b}}{\|\mathbf{a}\| \|\mathbf{b}\|}$ - мера схожести направлений, не зависящая от длины. На нормализованных векторах ($\|v\| = 1$) cosine similarity = просто dot product. На этом построены все современные векторные базы и механизм внимания в трансформерах.
**Зачем нормировать**: если вектор представляет смысл, важно куда он показывает, а не насколько он длинный. После нормировки длина = 1, расстояния зависят только от угла. OpenAI отдаёт эмбеддинги уже нормализованными - так поиск в Qdrant/pgvector быстрее.
Скалярное произведение двух единичных векторов (длины 1) равно 0. Что это означает геометрически?
Линейные комбинации, span и линейная зависимость
**Линейная комбинация** векторов $v_1, \ldots, v_k$ с коэффициентами $c_1, \ldots, c_k$: $c_1 v_1 + c_2 v_2 + \ldots + c_k v_k$. Каждый линейный слой нейросети - это ровно это: матрица весов, умноженная на входной вектор.
**Span** набора векторов - множество всех их линейных комбинаций. Геометрически: всё, что можно «достать», меняя коэффициенты. Span двух неколлинеарных векторов в 3D - плоскость. Span трёх линейно независимых - всё $\mathbb{R}^3$.
**Линейная зависимость**: набор векторов линейно зависим, если один из них выражается через остальные. Линейно независим - если ни один не выражается. В ML это критично: матрица весов с линейно зависимыми строками - избыточна, её можно сжать без потери информации (PCA, SVD).
**Где это работает прямо сейчас**: каждый токен GPT-4 - вектор ~12 288 измерений. Механизм внимания (attention) - это dot product запроса и ключей, нормализованный softmax. Рекомендации YouTube, поиск Spotify, RAG в ChatGPT - всё «найти ближайшего соседа» через dot product.
| Задача | Операция с векторами | Где работает |
|---|---|---|
| Семантический поиск (RAG) | Текст → embedding → ближайший сосед | ChatGPT-плагины, Notion AI, Slack |
| Рекомендации | User × Item embeddings, dot product | YouTube, TikTok, Netflix, Spotify |
| Image search | Картинка → embedding → ближайший сосед | Google Lens, поиск похожих товаров |
| Attention в трансформере | QK^T / sqrt(d_k) - dot product | GPT-4, Claude, LLaMA, Gemini |
Линейный слой нейросети вычисляет $\mathbf{y} = W\mathbf{x} + \mathbf{b}$. Что такое $W\mathbf{x}$ геометрически?
Итог
- Вектор = упорядоченный список чисел. Геометрически - стрелка с длиной и направлением
- Длина: $\|\mathbf{v}\| = \sqrt{\sum v_i^2}$ - теорема Пифагора в любом числе измерений
- Скалярное произведение: $\mathbf{a} \cdot \mathbf{b} = \sum a_i b_i = \|\mathbf{a}\|\|\mathbf{b}\|\cos\theta$ - основа cosine similarity и attention
- Линейная комбинация - базовая операция: каждый линейный слой нейросети = матрица весов × вектор признаков
- В ML размерность - 768, 1536, 12 288. Правила арифметики не меняются.
Куда дальше
Векторы - буквы. Дальше слова и предложения:
- Матрицы и линейные преобразования — Один линейный слой нейросети - умножение на матрицу
- Собственные векторы и SVD — PCA, спектральная кластеризация, PageRank, рекомендательные SVD-системы
- Скалярное произведение и проекции — Cosine similarity, attention в трансформерах, метрические пространства
Вопросы для размышления
- Spotify знает о тебе список ваших прослушиваний. Как превратить это в вектор так, чтобы расстояние между похожими пользователями было маленьким?
- Почему OpenAI отдаёт эмбеддинги уже нормализованными? Что меняется в формуле cosine similarity?
- «Матрица весов с линейно зависимыми строками - избыточна». Что это значит для размера модели и вычислительной стоимости?