Линейная алгебра
Вектор, линейная комбинация, оболочка
Что такое вектор на самом деле и почему span — единственное понятие, которое здесь нужно запомнить
Три определения вектора
Программист скажет: вектор — это массив чисел. Физик скажет: величина с направлением и длиной. Математик скажет: элемент векторного пространства.
Все трое правы, и третье определение — самое полезное, потому что оно единственное объясняет, почему методы линейной алгебры работают на объектах, которые массивом не являются: на функциях, на многочленах, на матрицах.
Векторное пространство — это множество, в котором определены сложение и умножение на число, подчиняющиеся привычным правилам (ассоциативность, коммутативность сложения, дистрибутивность, наличие нуля и противоположного).
Ничего больше. Обратите внимание, чего в определении нет: ни длины, ни угла, ни координат. Это отдельные структуры, которые добавляются позже — и именно поэтому «длина вектора» появится только вместе со скалярным произведением.
Из как декартовой степени (мы её строили в блоке 0) векторное пространство получается покомпонентными операциями:
Линейная комбинация
Всё, что делает линейная алгебра, — это линейные комбинации. Умножение матрицы на вектор, свёртка, полносвязный слой, PCA — везде под капотом одно и то же выражение.
В коде это sum(c * v for c, v in zip(coeffs, vectors)).
Линейная оболочка
Множество всех линейных комбинаций данного набора. Это то, куда можно попасть, комбинируя имеющиеся векторы.
Геометрически в :
- span одного ненулевого вектора — прямая через начало координат;
- span двух неколлинеарных — плоскость;
- span трёх векторов «в общем положении» — всё пространство.
Ключевое наблюдение: span всегда содержит нулевой вектор (возьмите все ) и всегда проходит через начало координат. Прямая, не проходящая через ноль, оболочкой не является — это уже аффинное множество.
Линейная независимость
Векторы линейно зависимы, если один из них выражается через остальные — то есть если существует нетривиальная комбинация, дающая ноль:
Независимы — если такой комбинации нет, то есть равенство нулю возможно только при всех нулевых коэффициентах.
Практический смысл: зависимость означает избыточность. Зависимый вектор ничего не добавляет к span — он уже там был.
Отсюда и берётся понятие ранга: ранг матрицы — это размерность span её столбцов, то есть количество по-настоящему независимой информации в ней. И отсюда же LoRA: низкоранговая поправка — это утверждение, что нужное изменение весов лежит в span небольшого числа направлений.
Базис и размерность
Базис — линейно независимый набор, span которого совпадает со всем пространством. Минимальный набор, из которого собирается всё.
Ключевой факт: в базисе координаты единственны. Каждый вектор раскладывается по базису ровно одним способом — иначе разность двух разложений дала бы нетривиальную комбинацию нуля, что противоречит независимости.
Размерность — число векторов в базисе. Оно одно и то же для всех базисов данного пространства, и это утверждение (не очевидное, но верное) — то, что делает размерность корректно определённой.
Стандартный базис — векторы с единицей на -м месте: координаты в нём совпадают с самими компонентами вектора. Именно поэтому «массив чисел» и «вектор» кажутся одним и тем же — но только пока базис фиксирован и не обсуждается.
Что это даёт в ML
Эмбеддинг размерности — это утверждение, что все интересующие нас смыслы лежат в -мерном пространстве, и любой из них есть линейная комбинация базисных направлений. Насколько это допущение оправдано — отдельный вопрос, но записывается оно ровно так.
Источники
- 3Blue1Brown — Essence of Linear Algebra, эпизоды 1–2 — Геометрическая интуиция для линейных комбинаций и оболочки
- Deisenroth, Faisal, Ong — Mathematics for Machine Learning, гл. 2.1–2.5 — Формальные определения векторного пространства, базиса, размерности
- Axler — Linear Algebra Done Right — Если захочется строгости с самого начала
Проверки
0 из 2Что такое span
Отметьте все верные утверждения о линейной оболочке.
Линейная независимость через приведение
Реализуйте
rank(vectors)— размерность линейной оболочки набора векторов (то есть ранг матрицы, составленной из них как из строк).Способ: приведение к ступенчатому виду методом Гаусса. Ведите указатель на текущую строку, для каждого столбца ищите ненулевой ведущий элемент, переставляйте строки и обнуляйте остальные.
Векторы даны как списки чисел одинаковой длины. Числа могут быть дробными, поэтому сравнивайте с нулём по порогу, например , а не точно — накопленная погрешность иначе даст неправильный ранг.
Ранг набора и есть ответ на вопрос «сколько здесь по-настоящему независимой информации».
Загрузка редактора…
Ctrl/⌘ + Enter