Восемь идей линейной алгебры, на которых держатся эмбеддинги, LoRA и PCA
Векторы, матрицы, собственные векторы, косинусное сходство, нормы, SVD и ранг — на простых примерах с ценами на дома и с ИИ-техниками, которые от них зависят.
Чтобы строить что-то на ИИ, математический диплом не нужен, но немного линейной алгебры развеивает массу загадок. Модели не умеют напрямую читать текст, изображения или звук. Всё сначала превращается в числа. Но и после этого нужен способ упорядочить числа так, чтобы модель могла сравнивать объекты, находить закономерности и делать прогнозы, и этот инструментарий даёт линейная алгебра. Вот восемь понятий, которые стоит знать, прежде чем называть себя ИИ-инженером.
1. Векторы хранят данные
Вектор — это упорядоченный список чисел, описывающий что-либо. Дом можно записать так:
[300000, 150, 3]
Эти три элемента означают цену ($300 000), площадь (150 квадратных метров) и число спален (3).
Зачем это нужно? Когда объекты представлены векторами, модель может их сравнивать. У двух домов с похожими ценой, площадью и числом спален получаются похожие векторы — так модель и видит, что они связаны.
2. Матрицы складывают много векторов вместе
Представьте матрицу как сетку из строк и столбцов. Один вектор описывает один объект, а матрица вмещает целый набор:
[ 300000 150 3 ] → House 1
[ 450000 200 4 ] → House 2
[ 250000 120 2 ] → House 3
Каждая строка — это дом, а каждый столбец — признак: цена, площадь, спальни. Матрицы позволяют системе обрабатывать много данных за раз, а не по одному вектору, благодаря чему вычисления на больших наборах данных остаются эффективными.
3. Собственные значения и собственные векторы указывают на главное
Собственный вектор — особый вектор, который после преобразования по-прежнему направлен вдоль той же прямой. Он может стать длиннее или короче, но не поворачивается в новом направлении. Его собственное значение показывает, насколько он растянулся или сжался. Это соотношение записывается так:
Av=λv
A = the transformation
v = the eigenvector (special direction)
λ = the eigenvalue (how much it stretches or shrinks)
Чтобы в этом разобраться, вспомним, что у вектора есть направление и модуль, то есть длина.
●
↗
/
/
/
/
●
Модуль — это длина стрелки, а направление — куда она указывает. Умножение вектора на матрицу преобразует его: результат может растянуться, сжаться, повернуться или измениться как-то ещё. Крошечный пример:
[3].[2 0] = [6]
[4] [0 2] [4]
Вектор [3, 4] имеет модуль 5 и направлен примерно под углом 53,13 градуса. После умножения он становится [6, 8] с модулем 10 и тем же углом 53,13 градуса. Он стал вдвое длиннее, не повернувшись, значит, это собственный вектор с собственным значением 2.
Это важно, потому что спектральный анализ выявляет доминирующие закономерности или направления в данных. На нём основан метод главных компонент (PCA), который сжимает наборы данных, сохраняя важную информацию.
4. Скалярное произведение и косинусное сходство измеряют похожесть
Возьмите два вектора одной длины, объедините их — и скалярное произведение вернёт одно число:
A · B = (a₁ × b₁) + (a₂ × b₂) + ... + (aₙ × bₙ)
Применим его к двум домам:
House 1 (A) = [300000, 150, 3]
House 2 (B) = [450000, 200, 4]
A · B = (300000 × 450000) + (150 × 200) + (3 × 4)
= 135,000,030,012
У этого результата два недостатка.
Первый — масштаб. Цены огромны по сравнению с числом спален, поэтому цена доминирует в ответе, а число спален почти не учитывается. Лекарство — масштабирование признаков: сожмите каждый признак в похожий диапазон, например от 0 до 1, где 0 — наименьшее встреченное значение, а 1 — наибольшее.
// All three features are on roughly the same scale (0–1),
// so price doesn't dominate simply because its original number is much larger.
A' = [0.60,0.50,0.60]
B' = [0.90,0.67,0.80]
Второй — длина. В «сыром» скалярном произведении более длинный вектор получает больший балл просто потому, что он длиннее. Есть два способа это исправить: сначала нормализовать векторы, а потом взять скалярное произведение, или вычислить скалярное произведение и закончить косинусным сходством. Для нормализации нужна норма L2 — длина вектора по прямой:
# L2 Norm (Euclidean Distance) → Straight-line distance from the origin.
# It measures the overall length of a vector.
||x||₂ = √(x₁² + x₂²+...+xₙ²)
||A'||₂ = √(0.60²+0.50²+0.60²) ≈ 0.985
A'' = [0.60/0.985, 0.50/0.985 ,0.60/0.985] ≈ [0.609, 0.508, 0.609]
||B'||₂ = √(0.90²+0.67²+0.80²) ≈ 1.378
B'' = [0.90/1.378, 0.67/1.378, 0.80/1.378] ≈[0.653, 0.486, 0.581]
A''⋅B'' = (0.609)(0.653)+(0.508)(0.486)+(0.609)(0.581)
≈ 0.398+0.247+0.354
≈0.999
И само вычисление косинуса:
# cosine similarity
A' · B' = (0.60×0.90)+(0.50×0.67)+(0.60×0.80)
≈ 1.355
||A'||₂ ≈ 0.985
||B′||₂ ≈ 1.378
Cosine Similarity = (A' · B')/||A'||||B'||
≈ 1.355/(0.985*1.378)
≈ 0.999
Распространённая интерпретация значения:
- 1,0 — то же направление, максимальное сходство
- от 0,9 до 1,0 — чрезвычайно похожи
- от 0,7 до 0,9 — довольно похожи
- от 0,4 до 0,7 — умеренно похожи
- больше 0 и меньше 0,4 — слабое сходство
- 0 — перпендикулярны, общего направления нет
- меньше 0 — всё более противоположны
- -1,0 — строго противоположны, максимальное различие
Не воспринимайте эти диапазоны как закон. Что считать похожим, зависит от ваших данных и модели. Сама идея важна, потому что поиск по сходству, рекомендательные системы и нейросети опираются на то, насколько сильно связаны два набора чисел.
5. Нормы измеряют размер и ошибку
Векторы могут представлять дома, пользователей, товары, изображения или слова. Норма даёт одно число для размера вектора, что позволяет сравнивать векторы по величине. Три распространённые нормы:
Норма L1, она же манхэттенское расстояние, складывает модули всех элементов и даёт суммарную величину.
||x||₁ = ∣x₁∣+∣x₂∣+⋯+∣xₙ∣
Норма L2, или евклидово расстояние, — это расстояние по прямой от начала координат, то есть общая длина.
||x||₂ = √(x₁² + x₂²+...+xₙ²)
Норма L-бесконечность смотрит только на наибольший модуль.
||x||∞ = max(∣x₁∣,∣x₂∣, ⋯ , ∣xₙ∣)
Для вопроса «насколько большой» представьте вектор стрелкой: его норма — длина стрелки, и у более длинного вектора норма больше. Именно на этом держится описанный выше шаг нормализации. Нормализация приводит вектор к длине 1, так что сравнение зависит от направления, а не от размера.
Для вопроса «насколько ошибочный» рассматривайте разницу между прогнозом и истиной как вектор ошибки. Его норма показывает, насколько вы промахнулись.
yactual=[10,20]
ypredicted=[8,23]
Error = [10,20]−[8,23]=[2,−3]
||error||₁=∣2∣+∣−3∣=5
So the prediction has a total absolute error of 5.
Чем больше норма ошибки, тем хуже прогноз. Значение 5 само по себе ни хорошее, ни плохое; его оценивают в сравнении с другими прогнозами или с базовым уровнем.
На практике нормы встречаются в трёх местах:
- Регуляризация (L1 и L2) борется с переобучением, штрафуя в функции потерь большие веса.
- Функции потерь используют их: средняя абсолютная ошибка построена на норме L1, а среднеквадратичная ошибка — на квадрате нормы L2.
- Отсечение градиентов использует норму L2, чтобы держать взрывающиеся градиенты под контролем при обучении глубоких сетей.
6. Умножение матриц объединяет информацию
Матрица не просто хранит числа. Применённая к входному вектору, она даёт выходной вектор, масштабируя, поворачивая, отражая или иначе преобразуя его. Умножение матриц смешивает числа из обеих, создавая новые. Допустим, три дома описаны тремя масштабированными признаками:
Houses =
[ 0.50 0.50 0.50 ]
[ 0.75 1.00 1.00 ]
[ 0.25 0.00 0.00 ]
Теперь допустим, что модель выучила разную важность признаков: цена — 0,5, площадь — 0,3, спальни — 0,2:
Weights =
[ 0.5 ]
[ 0.3 ]
[ 0.2 ]
Умножим данные о домах на веса:
Houses × Weights → Scores
Результат:
House 1 → 0.500
House 2 → 0.875
House 3 → 0.125
Чем выше балл, тем выше взвешенная ценность при заданной вами важности. Умножение матриц повсюду в машинном обучении, нейросетях, обработке данных и компьютерной графике, потому что оно эффективно объединяет и преобразует данные.
7. SVD упрощает матрицы
Многие матрицы не квадратные, а у неквадратных матриц нет собственных векторов. Сингулярное разложение (SVD) работает с любой матрицей любой формы, раскладывая её на три более простые:
A=UΣVᵀ
Читать это можно так: U поворачивает выход, Sigma масштабирует важные направления, а V транспонированная поворачивает вход. SVD позволяет уменьшать большие матрицы, сохраняя их самое важное содержимое. Его используют для снижения размерности, сжатия, рекомендательных систем и низкоранговых методов вроде LoRA. Оставьте только самые сильные компоненты — и данные и модели станут меньше, быстрее и дешевле.
8. Ранг объясняет низкоранговые трюки
Ранг показывает, сколько уникальной информации несёт матрица. У матрицы может быть много строк и столбцов, но при этом она может повторяться, и тогда ранг у неё низкий. Посмотрите на эту:
[1 2]
[2 4]
Вторая строка — просто удвоенная первая, так что независима только одна строка, и ранг равен 1.
Вот почему низкоранговые методы так популярны. Вместо того чтобы хранить каждое число, вы представляете суть меньшим количеством чисел, сокращая память и вычисления и сохраняя большую часть важного.
Как это всё складывается
Вместе эти восемь идей позволяют кодировать данные, менять их форму, оценивать их размер, проверять, насколько похожи две вещи, и сводить данные к чему-то меньшему. Не пытайтесь заучивать формулы. Стремитесь понимать, что делает каждое понятие, чем оно полезно и где встречается в реальных системах. Эта интуиция делает инструменты, библиотеки и модели, которыми вы пользуетесь, куда менее непрозрачными. А какое девятое понятие вы бы добавили в список?