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

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

  • Единичные векторы
  • Скалярная проекция
  • Векторная проекция

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

В этой статье мы введём и объясним скалярное произведение, а в следующей статье мы изучим его глубже.

Раздел о векторной проекции включён как необязательный бонус: полезный, но не обязательный для понимания скалярного произведения.

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

Финальная часть связывает эти идеи с двумя крупными приложениями: системами рекомендаций и обработкой естественного языка.

Единичный вектор

Вектор 𝐯 называется единичным вектором, если его величина равна 1:

|𝐯| = 1

Чтобы убрать величину ненулевого вектора, сохраняя его направление, мы можем нормализовать его. Нормализация масштабирует вектор на множитель:

1/|𝐯|

Нормализованный вектор 𝐯̂ — это единичный вектор в направлении 𝐯:

𝐯̂ = 𝐯/|𝐯|

Обозначение 1. Отныне, когда мы нормализуем вектор 𝐯 или пишем 𝐯̂, мы предполагаем, что 𝐯 ≠ 0. Это обозначение, вместе со следующими, также применимо к последующим статьям.

Эта операция естественным образом разделяет вектор на его величину и направление:

𝐯 = |𝐯| · 𝐯̂

Рисунок 1 иллюстрирует эту идею: 𝐯 и 𝐯̂ указывают в одном направлении, но имеют разные величины.

Figure 1

Рисунок 1 — Разделение «Насколько» и «В какую сторону». Любой вектор можно записать как произведение его величины и единичного вектора, который сохраняет направление, но имеет длину 1. Изображение автора (создано с помощью Claude).

Сходство единичных векторов

В двух измерениях все единичные векторы лежат на единичной окружности (радиус 1, центр в начале координат). Единичный вектор, образующий угол θ с осью x, имеет координаты (cos θ, sin θ).

Это означает, что угол между двумя единичными векторами кодирует естественную оценку сходства — как мы вскоре покажем, эта оценка ровно cos θ: равна 1, когда они указывают в одну сторону, 0, когда перпендикулярны, и −1, когда противоположны.

Обозначение 2. На протяжении этой статьи θ обозначает наименьший угол между двумя векторами, поэтому 0° ≤ θ ≤ 180°.

На практике мы не знаем θ напрямую — мы знаем координаты векторов.

Мы можем показать, почему скалярное произведение двух единичных векторов â и b̂ равно cos θ, используя геометрический аргумент из трёх шагов:

  1. Повернём систему координат так, чтобы b̂ лежал вдоль оси x. Поворот не изменяет углы или величины.
  2. Прочитаем новые координаты. После поворота b̂ имеет координаты (1, 0). Поскольку â — единичный вектор под углом θ к оси x, определение единичной окружности даёт его координаты как (cos θ, sin θ).
  3. Умножим соответствующие компоненты и просуммируем:

â · b̂ = a_x · b_x + a_y · b_y = cos θ · 1 + sin θ · 0 = cos θ

Эта сумма произведений компонент называется скалярным произведением:

a⃗ · b⃗ = a₁ · b₁ + a₂ · b₂ + ⋯ + aₙ · bₙ

См. иллюстрацию этих трёх шагов на рисунке 2 ниже:

Figure 2

Рисунок 2 — Повернув нашу перспективу, чтобы совместиться с осью x, математика координат упрощается красиво, раскрывая, почему скалярное произведение двух единичных векторов равно cos(θ). Изображение автора (создано с помощью Claude).

Всё выше было показано в 2D, но результат остаётся в любом количестве измерений. Любые два вектора, независимо от того, в скольких измерениях они живут, всегда лежат в одной плоской плоскости. Мы можем повернуть эту плоскость, чтобы совместиться с xy-плоскостью — и оттуда 2D доказательство применяется точно.

Обозначение 3. На диаграммах, которые следуют далее, мы часто рисуем один из векторов (обычно b⃗) вдоль горизонтальной оси. Когда b⃗ не уже совмещён с осью x, мы всегда можем повернуть нашу систему координат, как мы сделали выше (трюк «поворота»). Поскольку поворот сохраняет все длины, углы и скалярные произведения, каждая формула, выведенная в этой ориентации, действительна для любого направления b⃗.

Скалярная проекция

Вектор может вносить вклад во многих направлениях одновременно, но часто нам важно только одно направление.

Скалярная проекция отвечает на вопрос: Какая часть a⃗ лежит вдоль направления b⃗?

Это значение отрицательно, если проекция указывает в противоположном направлении b⃗.

Аналогия с тенью

Наиболее интуитивный способ думать о скалярной проекции — это длина тени. Представьте, что вы держите палку (вектор a⃗) под углом над землёй (направление b⃗), а источник света светит прямо вниз сверху.

Тень, которую палка отбрасывает на землю, — это скалярная проекция.

Анимированный рисунок ниже иллюстрирует эту идею:

Figure 3

Рисунок 3 — Скалярная проекция как тень. Скалярная проекция измеряет, какая часть вектора a лежит в направлении b. Она равна длине тени, которую a отбрасывает на b. GIF создана Claude.

Вычисление

Представьте источник света, светящий прямо вниз на линию PS (направление b⃗). Тень, которую a⃗ (стрелка от P к Q) отбрасывает на эту линию, — это ровно отрезок PR. Вы можете видеть это на Рисунке 4.

Figure 4

Рисунок 4: Измерение направленного выравнивания. Скалярная проекция (отрезок PR) визуально отвечает на основной вопрос: «Какая часть вектора a лежит в точном направлении вектора b.» Изображение автора (создано с помощью Claude).

Вывод формулы

Теперь посмотрите на треугольник PQR: перпендикулярный спуск из Q создаёт прямоугольный треугольник, его стороны:

  • PQ = |a⃗| (гипотенуза).
  • PR (прилежащая сторона – тень).
  • QR (противоположная сторона – перпендикулярный компонент).

Из этого треугольника:

  1. Угол между a⃗ и b⃗ — это θ.
  2. cos(θ) = PR / |a⃗| (самое базовое определение косинуса).
  3. Умножим обе стороны на |a⃗|:

PR = |a⃗| cos(θ)

Отрезок PR — это длина тени — скалярная проекция a⃗ на b⃗.

Когда θ > 90°, скалярная проекция также становится отрицательной. Думайте о тени как переворачивающейся на противоположную сторону.

Как это связано с единичным вектором?

Длина тени (PR) не зависит от того, насколько длин b⃗. Она зависит от |a⃗| и от θ.

Когда вы вычисляете a⃗ · b̂, вы спрашиваете: какая часть a⃗ лежит вдоль направления b⃗? Это длина тени.

Единичный вектор действует как фильтр направления: умножение a⃗ на него извлекает компонент a⃗ вдоль этого направления.

Давайте посмотрим это, используя трюк поворота. Мы размещаем b̂ вдоль оси x:

a⃗ = (|a⃗|cos θ, |a⃗|sin(θ))

и:

b̂ = (1, 0)

Тогда:

a⃗ · b̂ = |a⃗|cos θ · 1 + |a⃗|sin(θ) · 0 = |a⃗|cos θ

Скалярная проекция a⃗ в направлении b⃗ это:

|a⃗|cos θ = a⃗ · b̂ = (a⃗ · b⃗) / |b⃗|

Геометрическая интерпретация скалярного произведения

Мы применяем трюк поворота ещё раз, теперь с двумя общими векторами: a⃗ и b⃗.

После поворота:

a⃗ = (|a⃗|cos θ, |a⃗|sin θ)

b⃗ = (|b⃗|, 0)

таким образом:

a⃗ · b⃗ = |a⃗|cos θ · |b⃗| + |a⃗|sin θ · 0 = |a⃗||b⃗|cos θ

Скалярное произведение a⃗ и b⃗ это:

a⃗ · b⃗ = a₁b₁ + ⋯ + aₙbₙ = Σ(i=1 до n) aᵢbᵢ = |a⃗||b⃗|cos θ

Векторная проекция

Векторная проекция извлекает часть вектора a⃗, которая указывает вдоль направления вектора b⃗.

Аналогия с маршрутом

Представьте два маршрута, начинающихся из одной точки (начало координат):

  • Маршрут A ведёт на место для наблюдения за китами.
  • Маршрут B ведёт вдоль побережья в другом направлении.

Вот вопрос, на который отвечает проекция:

Вам разрешено ходить только по маршруту B. Как далеко вы должны идти, чтобы оказаться как можно ближе к конечной точке маршрута A?

Вы идёте по B, и в какой-то момент останавливаетесь. Отсюда вы смотрите на конец маршрута A, и линия, соединяющая вас с ним, образует идеальный угол 90° с маршрутом B. Это ключевой геометрический факт — ближайшая точка всегда там, где вы сделаете прямой поворот.

Место, где вы останавливаетесь на маршруте B, — это проекция A на B. Она представляет «часть A, которая идёт в направлении B».

Оставшийся промежуток — от вашей точки остановки к фактическому концу маршрута A — это всё в A, что ничего не имеет общего с направлением B. Этот пример показан на Рисунке 5 ниже: Вектор, который начинается в начале, указывает вдоль маршрута B и заканчивается в ближайшей точке — это векторная проекция a⃗ на b⃗.

Figure 5

Рисунок 5 — Векторная проекция как ближайшая точка к направлению. Идя по маршруту B, ближайшая точка к конечной точке A происходит там, где соединяющий отрезок образует прямой угол с B. Эта точка — проекция A на B. Изображение автора (создано с помощью Claude).

Скалярная проекция отвечает: «Как далеко вы прошли?»

Это просто расстояние, одно число.

Векторная проекция отвечает: «Где ровно вы находитесь?»

Более точно: «Какое точное движение вдоль маршрута B доставит вас в эту ближайшую точку?»

Теперь «1,5 километра» недостаточно, вам нужно сказать «1,5 километра на восток вдоль побережья». Это расстояние плюс направление: стрелка, а не просто число. Стрелка начинается в начале, указывает вдоль маршрута B и заканчивается в ближайшей точке.

Расстояние, которое вы прошли, — это значение скалярной проекции. Величина векторной проекции равна абсолютному значению скалярной проекции.

Единичный вектор отвечает: «В каком направлении идёт маршрут B?»

Это ровно то, что представляет b̂. Это маршрут B, очищенный от любой информации о длине — просто чистое направление побережья.

векторная проекция = (как далеко вы прошли) × (направление B) = скалярная проекция × b̂

Я знаю, что аналогия с китами очень специфична; она вдохновлена этим хорошим объяснением (Michael.P, 2014)

На Рисунке 6 ниже показана та же диаграмма теней, что и на Рисунке 4, с PR нарисованным как стрелка, потому что векторная проекция — это вектор (с длиной и направлением), а не просто число.

Figure 6

Рисунок 6 — Векторная проекция как направленная тень. В отличие от скалярной проекции (длины), векторная проекция — это стрелка вдоль вектора b. Изображение автора (создано с помощью Claude).

Поскольку проекция должна лежать вдоль b⃗, нам нужны две вещи для PR⃗:

  1. Её величина — это скалярная проекция: |a⃗|cos θ
  2. Её направление — это: b̂ (направление b⃗)

Любой вектор равен его величине, умноженной на его направление (как мы видели в разделе «Единичный вектор»), таким образом:

PR⃗ = |a⃗|cos θ · b̂

Это уже формула векторной проекции. Мы можем переписать её, подставив b̂ = b⃗/|b⃗|, и признав, что |a⃗||b⃗|cos θ = a⃗ · b⃗:

Векторная проекция a⃗ в направлении b⃗ это:

proj_b⃗(a⃗) = (|a⃗|cos θ)b̂ = ((a⃗ · b⃗)/|b⃗|²)b⃗ = (a⃗ · b̂)b̂

Резюме

  • Единичный вектор изолирует направление вектора, убирая его величину.

𝐯̂ = 𝐯/|𝐯|

  • Скалярное произведение умножает соответствующие компоненты и суммирует их. Оно также равно произведению величин двух векторов, умноженному на косинус угла между ними.

a⃗ · b⃗ = a₁b₁ + ⋯ + aₙbₙ = Σ(i=1 до n) aᵢbᵢ = |a⃗||b⃗|cos θ

  • Скалярная проекция использует скалярное произведение, чтобы измерить, как далеко один вектор достигает вдоль направления другого — одно число, как длина тени.

|a⃗|cos θ = a⃗ · b̂ = (a⃗ · b⃗)/|b⃗|

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

(|a⃗|cos θ)b̂ = (a⃗ · b̂)b̂

В следующей части мы будем использовать инструменты, которые мы выучили в этой статье, чтобы действительно понять скалярное произведение.

Написано

Amit Shreiber

Смотреть всё от Amit Shreiber

Наука о данных, Скалярное произведение, Вложение, Линейная алгебра, Математика