Линейная алгебра

Векторы: язык, на котором говорит 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×28784Учебники по нейросетям
Фото 224×224 RGB150 528ImageNet, ResNet, ViT
Embedding слова (word2vec)300Поиск, переводчики 2013-2018
Embedding текста (OpenAI ada-002)1 536Все RAG-системы 2023+
Скрытое состояние GPT-4 на токен~12 288ChatGPT, 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 productYouTube, TikTok, Netflix, Spotify
Image searchКартинка → embedding → ближайший соседGoogle Lens, поиск похожих товаров
Attention в трансформереQK^T / sqrt(d_k) - dot productGPT-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?
  • «Матрица весов с линейно зависимыми строками - избыточна». Что это значит для размера модели и вычислительной стоимости?

Связанные уроки

  • calc-17-multivariable
Векторы: язык, на котором говорит ML

0

1

Войти