🔴 Сложный ⏱️ 50 минут

Евклидово пространство

📋 Содержание урока

Евклидово пространство 📐

До сих пор пространство в этом курсе было чисто алгебраическим объектом. В нём можно складывать векторы и умножать их на числа, а линейная независимость, базис и размерность прекрасно объясняются без единого упоминания длины или угла. Это не случайность — аксиомы векторного пространства действительно обходятся без геометрии. Но интуиция, с которой ты работал всё это время — «эти векторы почти сонаправлены», «эта матрица растягивает вдоль оси», «эти координаты почти совпадают», — незаметно опиралась на геометрический смысл, которого в аксиомах попросту не было.

Этот урок вводит инструмент, который делает геометрию законной: скалярное произведение. Одна операция, всего три аксиомы — и из неё, как из единственного зерна, вырастает вся геометрия сразу: длина вектора (норма), расстояние между векторами, угол между ними, понятие перпендикулярности. Векторное пространство, снабжённое скалярным произведением, называется евклидовым — в честь геометрии, которую Евклид аксиоматизировал больше двух тысяч лет назад, и с которой это пространство, как выяснится, устроено ровно так же, только в произвольном числе измерений.

Представь, что у тебя есть два вектора в пространстве из миллиона координат — например, эмбеддинги двух слов, полученные нейросетью. Складывать их и умножать на числа ты уже умеешь, это чистая алгебра. Но как понять, «похожи» ли эти два слова по смыслу? Что вообще значит «похожи» для объектов, у которых миллион координат и которые невозможно нарисовать? Ответ: посчитать угол между ними. И именно скалярное произведение — единственный способ этот угол вычислить, не рисуя ничего.

Для тебя как будущего специалиста по данным этот урок особенно важен именно поэтому. Косинусное сходство, которым рекомендательная система решает, похожи ли два товара, и которым языковая модель решает, близки ли по смыслу два слова, — это в точности угол между векторами, который мы определим сегодня. Метод главных компонент, к которому ты уже прикасался в уроке о собственных векторах, ищет не просто собственные векторы ковариационной матрицы, а именно ортонормированный базис из них — и без сегодняшнего аппарата это условие даже нельзя сформулировать. Разберёмся по порядку: сначала аксиомы скалярного произведения, потом норма и расстояние, затем неравенство, которое гарантирует, что понятие угла вообще имеет смысл, дальше — ортогональность и её частный случай, ортонормированный базис, и в конце — процесс Грама-Шмидта, который берёт любой базис и почти без усилий перестраивает его в ортогональный.

История: откуда это взялось?

Формально геометрию впервые аксиоматизировал Евклид в «Началах» около 300 года до нашей эры: там были точки, прямые, длины отрезков и углы между ними, но не было ни координат, ни векторов — вся геометрия строилась чисто синтетически, циркулем и линейкой. Координаты появились почти две тысячи лет спустя, в XVII веке, у Рене Декарта и Пьера Ферма, а сам термин «евклидово пространство» — и того позже, и родился он не из уважения к древности, а из противопоставления. Пока других геометрий не существовало, называть пространство «евклидовым» было незачем — прилагательное появляется только тогда, когда есть от чего отличать. Это случилось в XIX веке, когда Николай Лобачевский (1826–1829) и независимо Янош Бойяи построили первые непротиворечивые неевклидовы геометрии, а Бернхард Риман в 1854 году обобщил идею искривлённого пространства на произвольное число измерений. Именно на этом фоне «плоская», привычная геометрия Евклида задним числом получила своё имя — как частный, самый простой случай общей картины.

Векторную алгебру в современном смысле построил Герман Грассман: в трактате «Учение о протяжённости» (Ausdehnungslehre, 1844, переработанное издание — 1862) он ввёл пространства произвольной размерности и обобщил и скалярное, и внешнее произведение векторов далеко за пределы привычных трёх измерений. Работу почти не заметили современники — стиль изложения был крайне тяжёлым, — и по-настоящему её оценили только десятилетия спустя. Строгую аксиоматику векторного пространства в виде, близком к сегодняшнему учебнику, дал Джузеппе Пеано в 1888 году в трактате «Геометрическое исчисление»: там же, кстати, встречается один из первых явных списков аксиом линейного пространства.

Неравенство, без которого понятие угла в общем пространстве не определить, для конечных сумм доказал Огюстен Коши в 1821 году в своём «Курсе анализа». Обобщение на интегралы — то есть на бесконечномерный случай — дал в 1859 году русский математик Виктор Яковлевич Буняковский, а независимо от него, спустя почти три десятилетия, тот же результат для интегралов передоказал немец Герман Шварц в 1888 году в связи с задачей о минимальных поверхностях. В русскоязычной традиции неравенство поэтому носит имя всех троих или хотя бы Коши и Буняковского, а в западной литературе Буняковского почти всегда забывают, оставляя только «неравенство Коши — Шварца». Довершил картину уже знакомый тебе по прошлому уроку Давид Гильберт: обобщив евклидову геометрию на бесконечномерные пространства функций, он заложил математический фундамент квантовой механики, а сам термин «гильбертово пространство» закрепил Джон фон Нейман в 1929 году. Сегодняшний урок — это ровно тот аппарат, который Гильберт перенёс из школьной геометрии в пространства, где живут не стрелки, а функции и, как выяснится столетие спустя, векторные представления слов.

Скалярное произведение: как измерить «согласие» двух векторов

Интуиция

Давай разберёмся, чего вообще не хватало в чисто алгебраическом векторном пространстве. Там были сложение и умножение на число — операции, которые из векторов делают другие векторы. Но не было ни одной операции, которая брала бы два вектора и выдавала число, характеризующее, как они расположены друг относительно друга. Именно такую операцию мы сейчас вводим.

Представь, что у тебя два вектора-стрелки. Если они смотрят в одну сторону — «согласны» друг с другом. Если перпендикулярны — никак не связаны. Если смотрят в противоположные стороны — «противоречат» друг другу. Скалярное произведение — это число, которое в точности улавливает эту степень «согласия»: большое положительное — сонаправлены, ноль — перпендикулярны, большое отрицательное — противонаправлены. И, что важнее всего для приложений, эта интуиция работает не только для стрелочек на плоскости, но и для векторов из ста, тысячи, миллиона координат — там, где никакого «направления» глазами уже не увидеть.

Определение

Определение: Пусть $V$ — вещественное векторное пространство. Скалярным произведением на $V$ называется функция $\langle \cdot, \cdot \rangle: V \times V \to \mathbb{R}$, которая каждой паре векторов $u, v \in V$ ставит в соответствие число $\langle u, v \rangle$ и удовлетворяет трём аксиомам:

  1. Симметричность: $\langle u, v \rangle = \langle v, u \rangle$ для любых $u, v$.

  2. Билинейность: $\langle \alpha u + \beta w, v \rangle = \alpha \langle u, v \rangle + \beta \langle w, v \rangle$ для любых $u, v, w \in V$ и любых чисел $\alpha, \beta$ (линейность по каждому аргументу; по второму — автоматически из симметричности).

  3. Положительная определённость: $\langle v, v \rangle \ge 0$ для любого $v$, причём $\langle v, v \rangle = 0 \iff v = \mathbf{0}$.

Вещественное векторное пространство конечной размерности со скалярным произведением называется евклидовым пространством.

Самый важный пример — тот, которым ты, скорее всего, уже пользовался интуитивно. На $\mathbb{R}^n$ стандартное скалярное произведение задаётся как

$$\langle x, y \rangle = x_1y_1 + x_2y_2 + \dots + x_ny_n = \sum_{i=1}^n x_iy_i = x^Ty.$$

Проверить три аксиомы для него — вопрос одной строчки: сумма произведений не меняется от перестановки $x$ и $y$ (симметричность), линейно зависит от координат $x$ при фиксированном $y$ (билинейность), а $\langle x,x\rangle = \sum x_i^2$ — сумма квадратов — неотрицательна и обращается в ноль только когда каждая координата равна нулю (положительная определённость). Именно эту формулу обычно называют просто «скалярным произведением» или «точечным произведением» (dot product), и весь урок будет строиться вокруг неё.

Полезно сразу увидеть, что стандартное произведение — не единственно возможное. Ты уже встречал в прошлом уроке положительно определённые квадратичные формы: если $A$ — симметричная положительно определённая матрица (например, диагональная с положительными числами на диагонали, как в критерии Сильвестра), то формула

$$\langle x, y \rangle_A = x^T A y$$

тоже задаёт полноценное скалярное произведение — просто «взвешенное». Все три аксиомы проверяются точно так же, а положительная определённость скалярного произведения дословно совпадает с положительной определённостью квадратичной формы $x^TAx$ из урока 174. Стандартное произведение — это частный случай при $A = I$. Мы будем работать в основном со стандартным произведением, но эта связь стоит того, чтобы её запомнить: «евклидовость» пространства — это, по сути, выбор одной положительно определённой квадратичной формы в качестве линейки.

Разбор примеров

Пример 1 (лёгкий). Вычисление скалярного произведения.

Даны $u = (2, -1, 3)$ и $v = (1, 4, -2)$. Считаем покоординатно:

$$\langle u, v \rangle = 2 \cdot 1 + (-1) \cdot 4 + 3 \cdot (-2) = 2 - 4 - 6 = -8.$$

Число отрицательное — векторы, грубо говоря, «скорее противонаправлены», чем сонаправлены.

Пример 2 (средний). Проверка билинейности на конкретных числах.

Даны $u = (1,2)$, $v = (3,-1)$. Проверим равенство $\langle 2u + v,\, v \rangle = 2\langle u, v\rangle + \langle v, v \rangle$.

Левая часть: $2u = (2,4)$, $2u+v = (5,3)$, $\langle 2u+v, v\rangle = 5\cdot3 + 3\cdot(-1) = 15 - 3 = 12$.

Правая часть: $\langle u,v\rangle = 1\cdot3 + 2\cdot(-1) = 1$, $\langle v,v\rangle = 9+1=10$, тогда $2\cdot1 + 10 = 12$.

Совпало — билинейность действительно работает, а не просто постулируется.

Пример 3 (сложный, ML). Скалярное произведение эмбеддингов.

Пусть игрушечная модель представила три слова трёхмерными векторами: «кот» $= (2,1,0)$, «собака» $=(1,2,0)$, «машина» $=(0,0,3)$.

$$\langle \text{кот}, \text{собака}\rangle = 2\cdot1+1\cdot2+0\cdot0 = 4, \qquad \langle \text{кот}, \text{машина}\rangle = 2\cdot0+1\cdot0+0\cdot3 = 0.$$

Уже на уровне сырого скалярного произведения видно: «кот» и «собака» дают положительное число, «кот» и «машина» — ровно ноль. Но сравнивать сырые числа напрямую нечестно — они зависят от длины векторов, а не только от направления. Чтобы получить настоящую меру «похожести», нужна ещё одна операция — норма. К ней мы и переходим, а сходство эмбеддингов доведём до полноценной формулы в разделе про угол.

Почему это важно

Скалярное произведение — это тот самый единственный кирпичик, из которого в следующих разделах будет собрано всё остальное: длина как $\langle v,v\rangle$ под корнем, расстояние как длина разности, угол как отношение $\langle u,v\rangle$ к произведению длин, перпендикулярность как $\langle u,v\rangle = 0$. Ни одно из этих понятий не вводится заново — все они являются следствиями трёх аксиом, которые ты только что увидел. Именно поэтому в библиотеках линейной алгебры (numpy.dot, torch.matmul для векторов, sklearn.metrics.pairwise.cosine_similarity) в самом низу всегда лежит одна и та же операция.

Норма вектора: длина, порождённая скалярным произведением

Интуиция

В школьной геометрии длина вектора на плоскости считается по теореме Пифагора: $|v| = \sqrt{v_1^2+v_2^2}$. Заметь: это ровно $\sqrt{\langle v,v\rangle}$ для стандартного скалярного произведения. Идея евклидова пространства в том, чтобы взять эту формулу и объявить её определением длины в любом пространстве, где есть скалярное произведение, — хоть в трёх измерениях, хоть в тысяче.

Определение

Определение: Нормой (или длиной) вектора $v$ в евклидовом пространстве называется число

$$\|v\| = \sqrt{\langle v, v \rangle}.$$

Вектор называется единичным (или нормированным), если $\|v\| = 1$. Любой ненулевой вектор можно нормировать — привести к единичной длине, поделив на собственную норму: $\hat{v} = v / \|v\|$.

Из аксиом скалярного произведения сразу следуют базовые свойства нормы: $\|v\| \ge 0$, причём $\|v\| = 0$ только для нулевого вектора; $\|\alpha v\| = |\alpha| \cdot \|v\|$ (однородность — множитель выносится по модулю); и, что куда менее очевидно, неравенство треугольника $\|u+v\| \le \|u\| + \|v\|$ — оно доказывается через неравенство Коши-Буняковского в следующем разделе, а пока прими его на веру: обходной путь через сумму двух сторон треугольника не короче прямого.

Для стандартного скалярного произведения в $\mathbb{R}^n$ формула нормы разворачивается в знакомую теорему Пифагора для $n$ измерений:

$$\|v\| = \sqrt{v_1^2 + v_2^2 + \dots + v_n^2}.$$

Расстояние между двумя векторами (точками) $u$ и $v$ естественно определяется как норма разности: $d(u,v) = \|u-v\|$. Это в точности евклидово расстояние, которым пользуется, например, метод ближайших соседей (kNN) или $k$-means.

Разбор примеров

Пример 1 (лёгкий). Норма и нормирование.

Дан вектор $w = (6,8)$. $\|w\| = \sqrt{36+64} = \sqrt{100} = 10$. Единичный вектор того же направления: $\hat w = (6/10,\ 8/10) = (0{,}6,\ 0{,}8)$. Проверка: $\|\hat w\| = \sqrt{0{,}36+0{,}64} = 1$.

Пример 2 (средний). Расстояние между векторами.

Даны $a = (1,2,3)$ и $b=(4,6,3)$. Разность $a-b = (-3,-4,0)$, откуда

$$d(a,b) = \|a-b\| = \sqrt{9+16+0} = \sqrt{25} = 5.$$

Ровно та же арифметика, что и в примере 1, — расстояние всегда сводится к норме одного вектора, разности.

Пример 3 (сложный, ML). Норма нормализованных эмбеддингов и почему она важна.

Многие модели эмбеддингов (например, часть архитектур для поиска по смыслу) явно нормируют выходные векторы к единичной длине перед сравнением. Возьмём уже знакомые эмбеддинги «кот» $=(2,1,0)$ и «собака» $=(1,2,0)$. Их нормы: $\|\text{кот}\| = \sqrt{4+1+0}=\sqrt5$, $\|\text{собака}\|=\sqrt{1+4+0}=\sqrt5$ — случайно совпали. Нормированные версии: $\widehat{\text{кот}} = (2/\sqrt5,\ 1/\sqrt5,\ 0)$, $\widehat{\text{собака}} = (1/\sqrt5,\ 2/\sqrt5,\ 0)$. Если бы нормы у слов радикально отличались — а на практике так и бывает, потому что частотные слова в некоторых моделях эмбеддингов получают систематически бо́льшую норму, — сырое скалярное произведение вводило бы в заблуждение: одно слово выглядело бы «более похожим» на все остальные просто потому, что его вектор длиннее, а не потому, что оно ближе по смыслу. Нормирование убирает этот эффект. Мы вернёмся к этому наблюдении в самом последнем задании практики — там оно решает исход задачи.

Почему это важно

Норма — это первое понятие, которое даёт евклидову пространству метрику: способ сказать, что один вектор «ближе», а другой «дальше». На этом стоит вся метрическая часть машинного обучения — от kNN и $k$-means, использующих евклидово расстояние напрямую, до регуляризации весов нейросети ($L_2$-норма вектора весов), до самой идеи «эмбеддинга», где смысл слова кодируется положением точки в пространстве, а «похожесть» смысла — расстоянием или углом между точками.

Неравенство Коши-Буняковского

Интуиция

Раз мы хотим определить угол между произвольными векторами через отношение $\langle u,v\rangle / (\|u\|\|v\|)$, нужно быть уверенными, что это отношение всегда лежит в границах $[-1,1]$ — иначе у арккосинуса просто не будет области определения. Неравенство Коши-Буняковского — это именно та гарантия, причём для любого евклидова пространства, а не только для плоскости, где «угол» можно нарисовать.

Определение

Определение (неравенство Коши-Буняковского): Для любых векторов $u, v$ евклидова пространства

$$|\langle u, v \rangle| \le \|u\| \cdot \|v\|,$$

причём равенство достигается тогда и только тогда, когда $u$ и $v$ линейно зависимы (коллинеарны, то есть один — скалярное кратное другого, либо один из них нулевой).

Доказательство короткое и стоит того, чтобы его увидеть — оно понадобится и позже, для триангуляционного неравенства. Если $v = \mathbf{0}$, неравенство тривиально ($0 \le 0$). Пусть $v \ne \mathbf{0}$. Рассмотрим функцию от вещественного параметра $t$:

$$f(t) = \|u - tv\|^2 = \langle u-tv,\ u-tv\rangle = \|u\|^2 - 2t\langle u,v\rangle + t^2\|v\|^2 \ge 0$$

— неотрицательность гарантирована аксиомой положительной определённости, ведь это норма в квадрате. Перед нами квадратный трёхчлен относительно $t$ с положительным старшим коэффициентом $\|v\|^2$, который никогда не уходит в минус. У такого трёхчлена дискриминант не может быть положительным:

$$D = 4\langle u,v\rangle^2 - 4\|u\|^2\|v\|^2 \le 0 \quad\Longrightarrow\quad \langle u,v\rangle^2 \le \|u\|^2\|v\|^2 \quad\Longrightarrow\quad |\langle u,v\rangle| \le \|u\|\|v\|.$$

Равенство соответствует случаю $D=0$ — трёхчлен имеет двойной корень $t_0$, то есть $\|u - t_0v\|=0$, а значит $u = t_0v$: векторы коллинеарны. Отсюда же, кстати, за одну строчку следует неравенство треугольника, обещанное в предыдущем разделе:

$$\|u+v\|^2 = \|u\|^2+2\langle u,v\rangle+\|v\|^2 \le \|u\|^2+2\|u\|\|v\|+\|v\|^2 = (\|u\|+\|v\|)^2,$$

откуда $\|u+v\|\le\|u\|+\|v\|$ после извлечения корня.

Разбор примеров

Пример 1 (лёгкий). Проверка неравенства.

$u=(1,2)$, $v=(2,1)$. $\langle u,v\rangle = 2+2=4$. $\|u\|=\|v\|=\sqrt5$, произведение норм $=5$. Действительно, $|4|\le5$ — неравенство строгое, векторы не коллинеарны.

Пример 2 (средний). Случай равенства.

$u=(1,2)$, $v=(2,4)=2u$ — заведомо коллинеарны. $\langle u,v\rangle=1\cdot2+2\cdot4=10$. $\|u\|=\sqrt5$, $\|v\|=\sqrt{4+16}=\sqrt{20}=2\sqrt5$. Произведение норм $=\sqrt5\cdot2\sqrt5=10$. Получили $|10|=10$ — точное равенство, как и предсказывает теорема для коллинеарных векторов.

Пример 3 (сложный). Оценка без вычисления косинуса напрямую.

$u=(1,2,3)$, $v=(4,-1,2)$. $\langle u,v\rangle=4-2+6=8$. $\|u\|^2=1+4+9=14$, $\|v\|^2=16+1+4=21$. Произведение норм $=\sqrt{14\cdot21}=\sqrt{294}=\sqrt{49\cdot6}=7\sqrt6\approx17{,}15$. Неравенство $8\le17{,}15$ выполняется с большим запасом — векторы далеки от коллинеарности. Заодно это готовый расчёт для нахождения угла между ними в следующем разделе.

Почему это важно

Без этого неравенства понятие угла для абстрактных пространств (не говоря о пространствах в сотни измерений) просто не существовало бы — отношение $\langle u,v\rangle/(\|u\|\|v\|)$ могло бы выскочить за пределы $[-1,1]$, и косинуса такого угла не бывает. Неравенство Коши-Буняковского — это тот факт, который делает косинусное сходство математически корректным при любой размерности векторов, будь то 2 координаты или 768 координат эмбеддинга трансформера.

Угол между векторами и косинусное сходство

Интуиция

Теперь, когда отношение $\langle u,v\rangle/(\|u\|\|v\|)$ гарантированно лежит в $[-1,1]$, его можно объявить косинусом угла между векторами — и это будет ровно тот же угол, что и на плоскости в теореме косинусов, только определённый формулой, а не транспортиром.

Определение

Определение: Углом между ненулевыми векторами $u$ и $v$ евклидова пространства называется число $\varphi \in [0,\pi]$, для которого

$$\cos\varphi = \frac{\langle u,v\rangle}{\|u\|\,\|v\|}.$$

В частности, векторы называют косонаправленными ($\varphi$ острый, $\cos\varphi>0$), противонаправленными ($\varphi$ тупой, $\cos\varphi<0$) и ортогональными ($\varphi = 90°$, $\cos\varphi = 0$) — последнему случаю посвящён отдельный раздел ниже.

В машинном обучении эту же величину $\cos\varphi$ почти всегда называют косинусным сходством (cosine similarity):

$$\text{cos\_sim}(u,v) = \frac{\langle u,v\rangle}{\|u\|\,\|v\|} \in [-1,1].$$

Это не новая формула — это буквально косинус угла между векторами, только терминология сменилась под задачу. Значение $1$ означает «направления совпадают», $-1$ — «противоположны», $0$ — «никак не связаны» (ортогональны). Именно эту величину считают рекомендательные системы (насколько вектор предпочтений одного пользователя похож на вектор другого), поисковые системы (насколько вектор запроса похож на вектор документа) и языковые модели (насколько эмбеддинг одного слова похож на эмбеддинг другого).

Разбор примеров

Пример 1 (лёгкий). Угол между простыми векторами.

$u=(1,1)$, $v=(1,0)$. $\langle u,v\rangle=1$. $\|u\|=\sqrt2$, $\|v\|=1$. $\cos\varphi = 1/\sqrt2$, откуда $\varphi=45°$.

Пример 2 (средний). Классическая геометрическая задача через векторы.

Найдём угол между диагональю куба и его ребром. Пусть ребро — вектор $e=(1,0,0)$, диагональ — вектор $d=(1,1,1)$ (из вершины куба в противоположную). $\langle e,d\rangle=1$. $\|e\|=1$, $\|d\|=\sqrt3$. $\cos\varphi = 1/\sqrt3\approx0{,}577$, откуда $\varphi\approx54{,}7°$. Ни одного чертежа — только скалярное произведение и норма.

Пример 3 (сложный, ML). Косинусное сходство эмбеддингов и ранжирование.

Возьмём запрос пользователя $q=(1,0,1)$ (представление в игрушечной модели поиска) и два документа-кандидата $d_1=(2,1,1)$, $d_2=(0,3,1)$. Какой документ ближе по смыслу?

$$\langle q,d_1\rangle = 2+0+1=3,\quad \|q\|=\sqrt2,\ \|d_1\|=\sqrt6,\quad \cos\varphi_1 = \frac{3}{\sqrt{2}\sqrt{6}}=\frac{3}{\sqrt{12}}=\frac{3}{2\sqrt3}=\frac{\sqrt3}{2}\approx0{,}866.$$$$\langle q,d_2\rangle = 0+0+1=1,\quad \|d_2\|=\sqrt{10},\quad \cos\varphi_2 = \frac{1}{\sqrt2\sqrt{10}}=\frac{1}{\sqrt{20}}=\frac{1}{2\sqrt5}\approx0{,}224.$$

Косинусное сходство с $d_1$ почти в четыре раза выше — именно $d_1$ поисковая система покажет первым. Обрати внимание: $\cos\varphi_1 = \sqrt3/2$ — это косинус $30°$, красивое совпадение, которое стоит проверить самостоятельно через арккосинус.

Почему это важно

Косинусное сходство — один из самых частых в ML способов сравнивать векторы, и главная причина его популярности как раз в том, что он не смотрит на длину векторов, только на направление (это мы разберём в последней задаче практики отдельно). При работе с текстами, где длина вектора эмбеддинга может отражать не смысл, а частоту слова или длину документа, это ровно то свойство, которое нужно. Функции sklearn.metrics.pairwise.cosine_similarity, torch.nn.functional.cosine_similarity, scipy.spatial.distance.cosine (которая на самом деле считает $1-\cos\varphi$) — все они реализуют одну и ту же формулу этого раздела.

Ортогональность и ортонормированный базис

Интуиция

Особый и самый полезный частный случай угла между векторами — прямой угол, $90°$. Векторы, между которыми нет вообще никакой «связи» в смысле скалярного произведения, называют ортогональными — это прямое обобщение перпендикулярности со школьной геометрии. Дальше выясняется, что если взять базис пространства целиком из попарно ортогональных единичных векторов, вся линейная алгебра в нём резко упрощается: координаты вектора находятся без решения систем уравнений, а норма считается без перекрёстных членов.

Определение

Определение: Векторы $u, v$ называются ортогональными ($u \perp v$), если $\langle u, v\rangle = 0$. Набор векторов $\{v_1,\dots,v_k\}$ называется ортогональным, если они попарно ортогональны и все ненулевые. Ортогональный набор называется ортонормированным, если вдобавок каждый вектор единичный: $\|v_i\|=1$ для всех $i$. Ортонормированный набор, являющийся базисом пространства, называется ортонормированным базисом.

Из ортогональности сразу следует несколько мощных фактов.

Теорема Пифагора в $n$ измерениях. Если $u \perp v$, то

$$\|u+v\|^2 = \langle u+v,u+v\rangle = \|u\|^2+2\langle u,v\rangle+\|v\|^2 = \|u\|^2+\|v\|^2,$$

потому что средний член обнуляется. Ровно теорема Пифагора, только доказанная алгебраически и работающая в любой размерности.

Ортогональные векторы линейно независимы. Пусть $v_1,\dots,v_k$ попарно ортогональны и ненулевые, и пусть $c_1v_1+\dots+c_kv_k=\mathbf{0}$. Возьмём скалярное произведение обеих частей с $v_i$: все слагаемые с $j\ne i$ обнулятся по ортогональности, останется $c_i\langle v_i,v_i\rangle=0$, а так как $v_i\ne\mathbf 0$, то $\langle v_i,v_i\rangle>0$ и $c_i=0$. Это верно для каждого $i$, значит все коэффициенты нулевые — набор независим.

Координаты в ортонормированном базисе считаются без систем уравнений. Если $\{e_1,\dots,e_n\}$ — ортонормированный базис и $v = c_1e_1+\dots+c_ne_n$, то, беря скалярное произведение с $e_i$ и используя ортонормированность, получаем сразу

$$c_i = \langle v, e_i\rangle.$$

Это разительный контраст с произвольным базисом, где координаты находят методом Гаусса. В ортонормированном базисе умножение матрицы на столбец из метода Гаусса заменяется на $n$ независимых скалярных произведений. Именно поэтому стандартный базис $\mathbb{R}^n$ (орты $e_1=(1,0,\dots),\ e_2=(0,1,0,\dots)$, и так далее) настолько удобен — он ортонормирован по построению, и координаты вектора в нём — это просто его записанные числа.

Разбор примеров

Пример 1 (лёгкий). Проверка ортогональности.

$u=(1,2,-1)$, $v=(3,-1,1)$. $\langle u,v\rangle = 3-2-1=0$ — векторы ортогональны.

Пример 2 (средний). Ортогональная тройка в $\mathbb{R}^3$.

Проверим тройку $v_1=(1,1,1)$, $v_2=(1,-1,0)$, $v_3=(1,1,-2)$:

$$\langle v_1,v_2\rangle=1-1+0=0,\qquad \langle v_1,v_3\rangle=1+1-2=0,\qquad \langle v_2,v_3\rangle=1-1+0=0.$$

Все три пары ортогональны — перед нами ортогональный базис $\mathbb{R}^3$ (три независимых вектора в трёхмерном пространстве по теореме о независимости выше). Нормы разные: $\|v_1\|=\sqrt3$, $\|v_2\|=\sqrt2$, $\|v_3\|=\sqrt6$ — значит, это ортогональный, но пока не ортонормированный базис. Поделив каждый вектор на свою норму, получим ортонормированный: $(1/\sqrt3,1/\sqrt3,1/\sqrt3)$, $(1/\sqrt2,-1/\sqrt2,0)$, $(1/\sqrt6,1/\sqrt6,-2/\sqrt6)$.

Пример 3 (сложный, ML). Координаты в ортонормированном базисе как аналог PCA-проекции.

Пусть $e_1=(1/\sqrt2,1/\sqrt2)$, $e_2=(1/\sqrt2,-1/\sqrt2)$ — ортонормированный базис $\mathbb{R}^2$ (легко проверить: $\|e_1\|=\|e_2\|=1$, $\langle e_1,e_2\rangle = 1/2-1/2=0$). Найдём координаты вектора $v=(3,1)$ в этом базисе:

$$c_1 = \langle v,e_1\rangle = \frac{3+1}{\sqrt2}=\frac{4}{\sqrt2}=2\sqrt2, \qquad c_2 = \langle v,e_2\rangle = \frac{3-1}{\sqrt2}=\frac{2}{\sqrt2}=\sqrt2.$$

Проверка: $c_1e_1+c_2e_2 = 2\sqrt2\left(\frac1{\sqrt2},\frac1{\sqrt2}\right)+\sqrt2\left(\frac1{\sqrt2},-\frac1{\sqrt2}\right) = (2,2)+(1,-1)=(3,1)$ — совпало с $v$. Это ровно та операция, которую делает PCA: проецирует вектор данных на ортонормированный базис из собственных векторов ковариационной матрицы (урок 172), а числа $c_1, c_2$ — это и есть «счёт» (score) точки по главным компонентам.

Почему это важно

Ортогональность — это тот случай, когда геометрия перестаёт мешать алгебре. Метод главных компонент ищет не любой, а именно ортонормированный базис из собственных векторов симметричной ковариационной матрицы (и, забегая вперёд по программе, именно симметричность матрицы гарантирует, что такой ортонормированный базис из собственных векторов вообще существует — это спектральная теорема). QR-разложение матрицы, на котором держится устойчивое решение систем и метод наименьших квадратов, — это буквально запись матрицы как произведения ортонормированной матрицы $Q$ и треугольной $R$. И даже в нейросетях ортогональная инициализация весов — осмысленный технический приём, снижающий взрыв и затухание градиентов.

Процесс Грама-Шмидта: как получить ортонормированный базис из любого

Интуиция

Хорошая новость: ортонормированный базис не обязан достаться тебе по счастливой случайности, как в примерах выше. Его можно построить из любого базиса за конечное число шагов. Идея предельно механическая: бери векторы по одному и из каждого следующего вычитай его «тень» (проекцию) на всё, что уже построено ортогонально. То, что останется, автоматически перпендикулярно всем предыдущим направлениям — потому что вся «параллельная» им часть уже вычтена.

Ключевой строительный блок — формула ортогональной проекции вектора $a$ на ненулевой вектор $b$:

$$\text{proj}_b(a) = \frac{\langle a,b\rangle}{\langle b,b\rangle}\, b.$$

Это та часть $a$, которая «сонаправлена» с $b$; вычитая её из $a$, получаем часть, перпендикулярную $b$.

Определение

Определение (процесс Грама-Шмидта): Пусть $v_1,\dots,v_n$ — базис евклидова пространства. Построим новый набор векторов по правилу

$$e_1' = v_1, \qquad e_k' = v_k - \sum_{i=1}^{k-1}\frac{\langle v_k, e_i'\rangle}{\langle e_i', e_i'\rangle}\,e_i' \quad (k=2,\dots,n),$$

то есть из каждого следующего вектора вычитаются его проекции на все уже построенные $e_i'$. Набор $\{e_1',\dots,e_n'\}$ — ортогональный базис того же пространства. Нормировав каждый вектор ($e_i = e_i'/\|e_i'\|$), получаем ортонормированный базис $\{e_1,\dots,e_n\}$.

Разбор примеров

Пример 1 (лёгкий). Два вектора на плоскости.

$v_1=(1,2)$, $v_2=(3,1)$. Полагаем $e_1'=v_1=(1,2)$. Проекция $v_2$ на $e_1'$:

$$\frac{\langle v_2,e_1'\rangle}{\langle e_1',e_1'\rangle} = \frac{3\cdot1+1\cdot2}{1+4}=\frac55=1.$$$$e_2' = v_2 - 1\cdot e_1' = (3,1)-(1,2) = (2,-1).$$

Проверка ортогональности: $\langle e_1',e_2'\rangle = 1\cdot2+2\cdot(-1)=0$ ✓. Нормы обоих векторов оказались равны $\sqrt5$, так что ортонормированный базис: $(1/\sqrt5,2/\sqrt5)$ и $(2/\sqrt5,-1/\sqrt5)$.

Пример 2 (средний). Проекция вектора не на базисный, а на произвольный вектор.

Спроецируем $a=(5,2)$ на $b=(3,4)$: $\langle a,b\rangle=15+8=23$, $\langle b,b\rangle=9+16=25$, значит

$$\text{proj}_b(a) = \frac{23}{25}(3,4) = \left(\frac{69}{25},\ \frac{92}{25}\right) = (2{,}76,\ 3{,}68).$$

Это ровно та операция, из которой в примере 1 собран весь процесс Грама-Шмидта — только применённая один раз.

Пример 3 (сложный). Полный процесс Грама-Шмидта в $\mathbb{R}^3$.

Даны $v_1=(1,1,0)$, $v_2=(1,0,1)$, $v_3=(0,1,1)$ — линейно независимый базис (проверяется, например, тем, что определитель матрицы из этих векторов-столбцов не равен нулю). Строим ортогональный базис.

$$e_1' = v_1 = (1,1,0), \qquad \langle e_1',e_1'\rangle = 2.$$$$\frac{\langle v_2,e_1'\rangle}{\langle e_1',e_1'\rangle} = \frac{1+0+0}{2}=\frac12, \qquad e_2' = (1,0,1) - \frac12(1,1,0) = \left(\frac12,-\frac12,1\right).$$

Проверка: $\langle e_1',e_2'\rangle = \frac12-\frac12+0=0$ ✓. Далее $\langle e_2',e_2'\rangle = \frac14+\frac14+1=\frac32$.

$$\frac{\langle v_3,e_1'\rangle}{\langle e_1',e_1'\rangle} = \frac{0+1+0}{2}=\frac12, \qquad \frac{\langle v_3,e_2'\rangle}{\langle e_2',e_2'\rangle} = \frac{0-\frac12+1}{3/2} = \frac{1/2}{3/2}=\frac13.$$$$e_3' = (0,1,1) - \frac12(1,1,0) - \frac13\left(\frac12,-\frac12,1\right) = \left(-\frac23,\ \frac23,\ \frac23\right).$$

Проверка: $\langle e_1',e_3'\rangle = -\frac23+\frac23+0=0$ ✓, $\langle e_2',e_3'\rangle = \frac12\cdot\left(-\frac23\right)+\left(-\frac12\right)\cdot\frac23+1\cdot\frac23 = -\frac13-\frac13+\frac23=0$ ✓.

Нормы: $\|e_1'\|=\sqrt2$, $\|e_2'\|=\sqrt{3/2}=\sqrt6/2$, $\|e_3'\|=\sqrt{4/9+4/9+4/9}=\sqrt{4/3}=2/\sqrt3$. Нормируя, получаем ортонормированный базис:

$$e_1=\left(\frac1{\sqrt2},\frac1{\sqrt2},0\right),\quad e_2=\left(\frac1{\sqrt6},-\frac1{\sqrt6},\frac2{\sqrt6}\right),\quad e_3=\left(-\frac1{\sqrt3},\frac1{\sqrt3},\frac1{\sqrt3}\right).$$

Это тот же самый базис, который мы будем использовать в задачах 21 и 29 практики — там результат этого раздела пригодится напрямую.

Почему это важно

Процесс Грама-Шмидта — это конструктивный ответ на вопрос «а откуда вообще берутся ортонормированные базисы, которыми пользуется PCA и QR-разложение». На практике его численно устойчивую модификацию (Modified Gram-Schmidt) или альтернативные подходы (отражения Хаусхолдера) используют внутри numpy.linalg.qr для получения QR-разложения — краеугольного камня устойчивого решения систем методом наименьших квадратов. А сама идея «вычесть проекцию на уже учтённое направление» — это ещё и способ ортогонализовать признаки перед обучением модели, убирая линейную корреляцию между ними.

Практика: 30 заданий

Базовые задания (1–10)

Задание 1: Найди скалярное произведение векторов $u=(2,-1,3)$ и $v=(1,4,-2)$.


Задание 2: Найди норму вектора $w=(6,8)$ и нормируй его (найди единичный вектор того же направления).


Задание 3: Даны $u=(1,2)$, $v=(3,-1)$. Проверь равенство $\langle 2u+v,\ v\rangle = 2\langle u,v\rangle + \langle v,v\rangle$, вычислив обе части.


Задание 4: Найди единичный вектор направления $(3,4)$.


Задание 5: Найди расстояние между векторами $a=(1,2,3)$ и $b=(4,6,3)$.


Задание 6: Проверь, ортогональны ли векторы $u=(1,2,-1)$ и $v=(3,-1,1)$.


Задание 7: Найди угол между векторами $u=(1,1)$ и $v=(1,0)$.


Задание 8: Проверь неравенство Коши-Буняковского для $u=(1,2)$ и $v=(2,4)$ и определи, достигается ли равенство.


Задание 9 (ML): Даны игрушечные эмбеддинги «кошка» $=(1,1,0)$ и «собака» $=(1,0,1)$. Найди косинусное сходство между ними и соответствующий угол.


Задание 10: Проверь, что стандартный базис $e_1=(1,0)$, $e_2=(0,1)$ ортонормирован.

Средние задания (11–20)

Задание 11: Даны $u=(1,2,2,4)$ и $v=(2,1,-2,1)$ в $\mathbb{R}^4$. Найди $\langle u,v\rangle$, $\|u\|$, $\|v\|$ и косинус угла между ними.


Задание 12: Примени процесс Грама-Шмидта к базису $v_1=(1,2)$, $v_2=(3,1)$ плоскости.


Задание 13: Найди проекцию вектора $a=(5,2)$ на вектор $b=(3,4)$.


Задание 14: Проверь, что векторы $v_1=(1,1,1)$, $v_2=(1,-1,0)$, $v_3=(1,1,-2)$ попарно ортогональны, и найди их нормы.


Задание 15 (ML): Запрос $q=(1,0,1)$ и два документа $d_1=(2,1,1)$, $d_2=(0,3,1)$. Определи, какой документ ближе к запросу по косинусному сходству.


Задание 16: Дана матрица $A=\begin{pmatrix}1&0\\0&4\end{pmatrix}$ (положительно определена по критерию Сильвестра: $1>0$, $\det A=4>0$). Для $x=(2,1)$, $y=(1,3)$ найди стандартное скалярное произведение $\langle x,y\rangle$ и взвешенное $\langle x,y\rangle_A = x^TAy$.


Задание 17: Проверь тождество параллелограмма $\|u+v\|^2+\|u-v\|^2 = 2\|u\|^2+2\|v\|^2$ на векторах $u=(1,2)$, $v=(2,-1)$.


Задание 18 (ML): Даны нормированные (единичные) эмбеддинги $u=(0{,}6,\ 0{,}8)$ и $v=(0{,}8,\ 0{,}6)$. Найди косинусное сходство и покажи, что $\|u-v\|^2 = 2-2\cos\varphi$.


Задание 19: Найди угол между диагональю куба $d=(1,1,1)$ и его ребром $e=(1,0,0)$.


Задание 20: Ортонормированный базис $e_1=(1/\sqrt2,\ 1/\sqrt2)$, $e_2=(1/\sqrt2,\ -1/\sqrt2)$. Найди координаты вектора $v=(3,1)$ в этом базисе и проверь разложение.

Продвинутые задания (21–30)

Задание 21: Примени процесс Грама-Шмидта к базису $v_1=(1,1,0)$, $v_2=(1,0,1)$, $v_3=(0,1,1)$ в $\mathbb{R}^3$ и построй ортонормированный базис.


Задание 22: Проверь неравенство Коши-Буняковского для $u=(1,2,3)$, $v=(4,-1,2)$ и найди угол между ними.


Задание 23: Проверь неравенство треугольника $\|u+v\|\le\|u\|+\|v\|$ для ортогональных векторов $u=(3,0)$, $v=(0,4)$ и объясни, почему равенство здесь невозможно.


Задание 24 (ML, PCA): Даны ортонормированные главные направления $e_1=(1/\sqrt2,\ 1/\sqrt2)$, $e_2=(1/\sqrt2,\ -1/\sqrt2)$ и точка данных $x=(4,2)$. Найди «счёт» точки по каждой главной компоненте (координаты в базисе $e_1,e_2$).


Задание 25 (ML): Запрос $q=(1,1,0,0)$ и три документа $d_1=(1,0,1,0)$, $d_2=(0,1,0,1)$, $d_3=(1,1,1,1)$. Найди косинусное сходство с каждым и определи наиболее похожий.


Задание 26: Дана симметричная матрица $A=\begin{pmatrix}2&1\\1&2\end{pmatrix}$. Проверь её положительную определённость и найди $\|x\|_A = \sqrt{x^TAx}$ для $x=(1,1)$, сравнив со стандартной нормой.


Задание 27: Докажи, что попарно ортогональные ненулевые векторы $v_1,\dots,v_k$ линейно независимы, и проиллюстрируй доказательство на тройке из задания 14: $v_1=(1,1,1)$, $v_2=(1,-1,0)$, $v_3=(1,1,-2)$.


Задание 28: Для ортогональной тройки $v_1=(1,1,1)$, $v_2=(1,-1,0)$, $v_3=(1,1,-2)$ из задания 14 проверь обобщённую теорему Пифагора: $\|v_1+v_2+v_3\|^2 = \|v_1\|^2+\|v_2\|^2+\|v_3\|^2$.


Задание 29: Используя ортонормированный базис из задания 21, найди координаты вектора $w=(2,0,1)$ и проверь разложение.


Задание 30 (ML, капстоун): Целевое слово $t=(1,1,1)$. Кандидат $a=(2,2,2)$ (то же направление, но вектор длиннее — типичный эффект более частого слова в некоторых моделях эмбеддингов) и кандидат $b=(1,1,0)$. Сравни, какой кандидат ближе к $t$ (1) по косинусному сходству и (2) по евклидову расстоянию — и объясни расхождение.

Частые ошибки

Ошибка 1. Путают скалярное произведение с косинусным сходством и сравнивают сырые $\langle u,v\rangle$ у векторов разной длины.

Как выглядит: «у пары $(A,B)$ скалярное произведение $50$, а у пары $(C,D)$ всего $5$ — значит, $A$ и $B$ более похожи».

Почему возникает: скалярное произведение действительно растёт с ростом «согласия» направлений, и кажется, что этого достаточно.

Как правильно: скалярное произведение зависит и от угла, и от длин векторов сразу. Вектор с большой нормой даёт большое скалярное произведение, даже если направлен совсем не туда, куда нужно, — задание 30 показывает это на конкретных числах. Сравнивать «похожесть» нужно по косинусному сходству $\langle u,v\rangle/(\|u\|\|v\|)$, где влияние длины уже поделено.

Ошибка 2. Считают, что $\langle u,v\rangle=0$ означает «векторы не связаны совсем», в том числе при $u$ или $v$, равном нулю.

Как выглядит: нулевой вектор объявляют «ортогональным всему», а значит и осмысленно связанным с любым направлением.

Почему возникает: формально $\langle \mathbf0,v\rangle=0$ для любого $v$, и равенство действительно выполняется.

Как правильно: определение ортогональности обычно относят к ненулевым векторам — у нулевого вектора нет направления, поэтому говорить о «перпендикулярности» ему бессмысленно с геометрической точки зрения, хотя формула и не запрещает. В практических задачах нулевой вектор в наборе для проверки ортогональности не участвует.

Ошибка 3. Забывают проверять неотрицательность под корнем и путают $\|v\|^2$ с $\|v\|$.

Как выглядит: посчитав $\langle v,v\rangle=25$, в ответ пишут «норма $25$», забыв извлечь корень.

Почему возникает: промежуточный результат $\langle v,v\rangle$ визуально уже похож на «итог».

Как правильно: норма — это именно $\sqrt{\langle v,v\rangle}$, а не сама сумма квадратов. Полезно всегда держать в голове единицы измерения: если координаты вектора — это, скажем, метры, то $\langle v,v\rangle$ — квадратные метры, и корень возвращает размерность обратно к метрам.

Ошибка 4. Ищут угол между векторами, не приведя $\cos\varphi$ к отрезку $[-1,1]$, и получают арккосинус от «невозможного» числа.

Как выглядит: при ручном счёте закрадывается арифметическая ошибка, косинус выходит, например, $1{,}2$, и arccos в проверке падает с ошибкой (или на бумаге автор молча пишет несуществующий угол).

Почему возникает: ошибка на предыдущих шагах (в скалярном произведении или в одной из норм) не была замечена вовремя.

Как правильно: по неравенству Коши-Буняковского $|\cos\varphi|\le1$ всегда, для любых ненулевых векторов любого евклидова пространства. Если после вычислений число вышло за $[-1,1]$ — это гарантированный сигнал арифметической ошибки, а не экзотический случай, который надо как-то обработать. Всегда стоит держать это как встроенную проверку ответа.

Ошибка 5. Считают базис ортонормированным, проверив только ортогональность и забыв про единичность (или наоборот).

Как выглядит: «$\langle v_1,v_2\rangle=0$, значит базис ортонормированный».

Почему возникает: слово «ортонормированный» воспринимается как синоним «ортогонального», хотя это два отдельных условия.

Как правильно: ортонормированность — это ортогональность плюс единичная длина каждого вектора. Задание 14 специально демонстрирует ортогональный, но не ортонормированный базис — с нормами $\sqrt3$, $\sqrt2$, $\sqrt6$. Формулу «координата $=\langle v,e_i\rangle$» без деления на $\langle e_i,e_i\rangle$ можно применять только к по-настоящему ортонормированному базису; для просто ортогонального нужна более общая формула проекции с делением на $\langle e_i,e_i\rangle$.

Ошибка 6. В процессе Грама-Шмидта вычитают проекцию только на первый построенный вектор, забывая про остальные.

Как выглядит: при построении третьего вектора $e_3'$ вычитают только $\text{proj}_{e_1'}(v_3)$, забыв про $\text{proj}_{e_2'}(v_3)$.

Почему возникает: формула на первом шаге ($k=2$) действительно содержит только одно слагаемое, и по инерции переносят этот же паттерн на следующий шаг.

Как правильно: на шаге $k$ нужно вычесть проекции сразу на все $k-1$ уже построенных ортогональных векторов, не только на первый. В задании 21 на третьем шаге вычитаются сразу две проекции — на $e_1'$ и на $e_2'$. Пропуск хотя бы одной ломает ортогональность итогового набора.

Ошибка 7. Путают порядок операций в проекции: делят на $\langle a,a\rangle$ вместо $\langle b,b\rangle$ в формуле $\text{proj}_b(a)$.

Как выглядит: пишут $\text{proj}_b(a) = \dfrac{\langle a,b\rangle}{\langle a,a\rangle}\,b$.

Почему возникает: формула симметрична по написанию скалярного произведения в числителе, и легко перепутать, чья норма стоит в знаменателе.

Как правильно: в знаменателе всегда норма (в квадрате) того вектора, на который проецируют, — то есть $b$, а не $a$. Мнемоника: результат проекции обязан быть кратен $b$, значит коэффициент должен «превращать» $b$ в правильную длину, а не $a$.

Главное запомнить

  • Скалярное произведение — функция $\langle\cdot,\cdot\rangle: V\times V\to\mathbb{R}$ с тремя аксиомами: симметричность, билинейность, положительная определённость. Стандартное на $\mathbb{R}^n$: $\langle x,y\rangle = \sum x_iy_i$.

  • Пространство со скалярным произведением называется евклидовым. Общая форма произведения — $\langle x,y\rangle_A = x^TAy$ для положительно определённой симметричной $A$; стандартное — частный случай $A=I$.

  • Норма $\|v\|=\sqrt{\langle v,v\rangle}$ — длина вектора; расстояние $d(u,v)=\|u-v\|$. Свойства: $\|v\|\ge0$, $\|\alpha v\|=|\alpha|\|v\|$, неравенство треугольника.

  • Неравенство Коши-Буняковского: $|\langle u,v\rangle|\le\|u\|\|v\|$, равенство только для коллинеарных векторов. Из него выводится неравенство треугольника для нормы.

  • Угол: $\cos\varphi = \dfrac{\langle u,v\rangle}{\|u\|\|v\|}\in[-1,1]$ — корректность области значений гарантирует именно неравенство Коши-Буняковского. В ML эта же величина — косинусное сходство.

  • Ортогональность: $u\perp v \iff \langle u,v\rangle=0$. Попарно ортогональные ненулевые векторы всегда линейно независимы, а для них выполняется обобщённая теорема Пифагора $\|u+v\|^2=\|u\|^2+\|v\|^2$.

  • Ортонормированный базис = ортогональный + единичные векторы. В таком базисе координаты находятся мгновенно: $c_i = \langle v,e_i\rangle$, без метода Гаусса.

  • Процесс Грама-Шмидта строит ортогональный (а после нормирования — ортонормированный) базис из любого базиса: $e_k' = v_k - \sum_{i

  • Косинусное сходство видит только направление, евклидово расстояние — ещё и длину; для нормированных (единичных) векторов оба показателя связаны тождеством $\|u-v\|^2=2-2\cos\varphi$.

  • В ML: косинусное сходство эмбеддингов — стандарт в NLP и рекомендательных системах; PCA раскладывает данные именно по ортонормированному базису собственных векторов ковариационной матрицы; QR-разложение (основано на процессе Грама-Шмидта) лежит в основе устойчивого решения систем и метода наименьших квадратов.

Связь с другими темами курса

Что нужно было знать до этого урока

Скалярное произведение опирается на векторное пространство, линейную независимость, базис и размерность — базовый аппарат прошлых уроков. Из урока 174 «Квадратичные формы» взято прямо и без изменений: критерий Сильвестра для положительной определённости матрицы — им проверяется, годится ли матрица $A$ для взвешенного произведения $\langle x,y\rangle_A=x^TAy$, а сама аксиома положительной определённости скалярного произведения — это в точности положительная определённость квадратичной формы $\langle v,v\rangle=v^TAv$. Из урока 172 «Собственные векторы и собственные значения» — понятие ортонормированного базиса из собственных векторов, к которому этот урок подводит формальную базу, и первое знакомство с косинусным сходством в контексте PCA. Из более ранних уроков — метод Гаусса и системы линейных уравнений (в примерах на проверку линейной независимости) и матричное умножение (в записи $\langle x,y\rangle=x^Ty$).

Что изучить дальше

Ближайшая большая тема, которая напрямую продолжает этот урок, — спектральная теорема: у симметричной матрицы все собственные значения вещественны (этот факт уже упоминался в уроке 172 без доказательства), а собственные векторы, отвечающие разным собственным значениям, не просто линейно независимы, а ортогональны — и это доказывается ровно тем аппаратом, который построен здесь. Дальше по программе — сингулярное разложение (SVD), которое строит сразу два ортонормированных базиса (в пространстве входов и в пространстве выходов линейного отображения) и обобщает спектральную теорему на прямоугольные матрицы; SVD, в свою очередь, и есть та математика, которая стоит за практическим PCA в sklearn.decomposition.PCA. QR-разложение — прямое инженерное следствие процесса Грама-Шмидта, применяемое для устойчивого решения систем методом наименьших квадратов.

Где это нужно в жизни

💻 Программирование. numpy.dot, numpy.linalg.norm, numpy.linalg.qr (QR-разложение через ортогонализацию), scipy.spatial.distance.cosine — прямая реализация формул этого урока. В компьютерной графике скалярное произведение нормали и направления света определяет освещённость поверхности (закон косинусов Ламберта); ортонормированные базисы задают локальные системы координат камеры и объектов.

🤖 ML/AI. Косинусное сходство — стандартная метрика сравнения эмбеддингов слов, предложений и изображений (Word2Vec, BERT, CLIP), основа поиска по смыслу (semantic search) и рекомендательных систем. PCA использует ортонормированный базис главных компонент. Ортогональная инициализация весов в рекуррентных сетях снижает взрыв и затухание градиентов. Attention-механизм трансформеров в своей основе считает скалярные произведения запросов и ключей.

📊 Data Science. Матрица корреляций — это, по сути, матрица косинусных сходств центрированных и нормированных признаков. Ортогонализация признаков (устранение мультиколлинеарности) через процесс, аналогичный Граму-Шмидту, применяется перед регрессией. Метод наименьших квадратов геометрически — это проекция вектора наблюдений на подпространство, натянутое на столбцы матрицы регрессоров.

🔬 Наука. В квантовой механике состояния системы — векторы гильбертова пространства, а вероятность перехода между состояниями — квадрат модуля их скалярного произведения. В обработке сигналов преобразование Фурье — это разложение функции по ортонормированному базису синусов и косинусов, а коэффициенты Фурье находятся ровно формулой $c_i=\langle v,e_i\rangle$ из этого урока.

💰 Финансы. Ортогонализация факторов риска в мультифакторных моделях (чтобы факторы не дублировали друг друга); корреляция доходностей активов — это косинусное сходство их центрированных временных рядов.

Интересные факты

  • Слово «косинусное сходство» в машинном обучении — это не новая математика, а старая формула из школьной тригонометрии, надетая на многомерные векторы. Формула $\cos\varphi = \langle u,v\rangle/(\|u\|\|v\|)$ работает одинаково что для двух стрелочек на листе бумаги, что для двух эмбеддингов в 768-мерном пространстве BERT — размерность нигде в самой формуле не участвует.

  • Неравенство, без которого не было бы понятия угла в общем пространстве, в мире известно как минимум под тремя именами сразу — Коши, Буняковский, Шварц, — а какое из них останется в конкретном учебнике, зависит в основном от страны, где учебник написан. Западная литература почти всегда называет его «неравенством Коши-Шварца», хотя вклад Буняковского (интегральный случай, 1859 год) на три десятилетия опередил работу Шварца (1888).

  • Термин «евклидово пространство» появился только тогда, когда у него возникла альтернатива. Пока других геометрий не существовало, называть пространство «евклидовым» было бы так же странно, как называть воздух «земным воздухом» в отсутствие других планет с атмосферой. Николай Лобачевский, построивший первую неевклидову геометрию в 1826–1829 годах, невольно подарил геометрии Евклида её собственное имя.

  • Знаменитая теорема Пифагора, знакомая со школы для прямоугольного треугольника на плоскости, в этом уроке доказана заново — без единого чертежа, чисто алгебраически из аксиом скалярного произведения, — и в этом виде она работает не только в двух и трёх, но и в тысяче измерений сразу.

  • В некоторых моделях эмбеддингов слов длина вектора коррелирует с частотой слова в обучающих текстах, а не с богатством его смысла. Именно поэтому индустрия почти единодушно выбрала для сравнения смысла косинусное сходство, а не евклидово расстояние, — задание 30 практики воспроизводит этот эффект на трёх числах и показывает, как радикально может разойтись ранжирование по двум метрикам.

Лайфхаки и полезные трюки

  1. Держи под рукой встроенную проверку: $|\cos\varphi|\le1$ всегда. Если после вычисления косинуса угла число вышло за пределы $[-1,1]$ — где-то арифметическая ошибка, и её стоит искать прямо сейчас, а не пытаться «дожать» ответ.

  2. Сравнивай похожесть по косинусу, а не по сырому скалярному произведению. Скалярное произведение растёт вместе с длиной векторов, и большое число ещё не значит «похожи». Раздели на произведение норм — и сравнение станет честным.

  3. Ищи «красивые» углы через табличные значения косинуса. $\cos\varphi=1/2\to60°$, $\cos\varphi=1/\sqrt2\to45°$, $\cos\varphi=\sqrt3/2\to30°$, $\cos\varphi=0\to90°$. Если после вычислений получилось одно из этих чисел — задача явно так задумана, и лишний раз сверить арифметику не помешает.

  4. В процессе Грама-Шмидта сразу проверяй ортогональность каждого нового вектора со всеми предыдущими. Скалярное произведение нового $e_k'$ с каждым $e_i'$ ($i

  5. Не нормируй векторы в процессе Грама-Шмидта раньше времени. Дроби от деления на неполные нормы плодят дроби внутри дробей. Сначала построй весь ортогональный базис в «сырых» координатах, и только в самом конце раздели каждый вектор на его финальную норму.

  6. Для проверки положительной определённости весовой матрицы используй критерий Сильвестра из урока 174, не считая собственные значения. Угловые миноры считаются быстрее полного спектра, а для взвешенного скалярного произведения нужна только положительная определённость, ничего больше.

  7. Помни тождество $\|u-v\|^2 = \|u\|^2+\|v\|^2-2\langle u,v\rangle$. Оно превращает вычисление расстояния через скалярные произведения и наоборот — удобно, когда норма компонентов известна, а сама разность считать неохота, особенно в высокой размерности.

  8. В коде сравнивай векторы через numpy.linalg.norm и матричное умножение, а не через ручные циклы. np.dot(u, v), np.linalg.norm(v), np.dot(u, v) / (np.linalg.norm(u) * np.linalg.norm(v)) — три строчки покрывают весь урок и работают для векторов любой размерности без единого изменения кода.

Скалярное произведение — это тот момент курса, где алгебра наконец обзаводится линейкой и транспортиром. До этого урока можно было складывать векторы и умножать их на числа, но нельзя было спросить «насколько они похожи» или «под каким углом расположены» — этих понятий попросту не существовало вне трёх измерений школьной геометрии. Теперь они определены для пространства любой размерности одной и той же формулой, и именно поэтому косинусное сходство одинаково работает что для стрелочки на бумаге, что для эмбеддинга в сотни измерений. А ортогональность и ортонормированный базис, которые казались бы чистой геометрической экзотикой, оказываются ровно тем условием, которое требует метод главных компонент, — и это не совпадение: следующий большой шаг курса, спектральная теорема, докажет, что у симметричных матриц такой базис из собственных векторов существует всегда.

Понял тему? Закрепи в боте! 🚀

Попрактикуйся на задачах и получи персональные рекомендации от AI

💪 Начать тренировку
💬 Есть вопрос? Спроси бота!