Архив рубрики ~Лента новостей~

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

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

Геометрические основы, необходимые для понимания скалярного произведения.

Делиться

NOVOSTI
Визуализация аналогии с «тенью»: векторная проекция в трехмерном пространстве. Изображение предоставлено автором (создано с помощью Gemini).

Введение

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

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

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

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

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

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

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

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

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

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

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

Вектор 𝐯→large mathbf{vec{v}} называется единичным вектором, если его модуль равен 1:

|𝐯→|=1LARGE mathbf{|vec{v}|} = 1

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

1|𝐯→|LARGE frac{1}{|mathbf{vec{v}}|}

Нормализованный вектор 𝐯^large mathbf{hat{v}} — это единичный вектор в направлении 𝐯→large mathbf{vec{v}}:

𝐯^=𝐯→|𝐯→|LARGE begin{array}{|c|} hline mathbf{hat{v}} = frac{mathbf{vec{v}}}{|mathbf{vec{v}}|} hline end{array}

Обозначение 1. Отныне, всякий раз, когда мы нормализуем вектор 𝐯→large mathbf{vec{v}} или пишем 𝐯^large mathbf{hat{v}}, мы предполагаем, что 𝐯→≠0large mathbf{vec{v}} neq 0. Это обозначение, наряду с последующими, также актуально для следующих статей.

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

𝐯→=|𝐯→|⏟magnitude⋅𝐯^⏟directionLARGE begin{array}{|c|} hline rule{0pt}{2.5em} mathbf{vec{v}} = underbrace{|mathbf{vec{v}}|}_{text{magnitude}} cdot underbrace{mathbf{hat{v}}}_{text{direction}} [4.5em] hline end{array}

Рисунок 1 иллюстрирует эту идею: 𝐯{mathbf{v}} и 𝐯^large mathbf{hat{v}} направлены в одном направлении, но имеют разные величины.

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

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

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

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

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

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

Мы можем показать, почему скалярное произведение двух единичных векторов: a^largehat{a} и b^largehat{b} равно cos θ, используя геометрический аргумент в три шага:

1. Поверните систему координат до тех пор, пока b^largehat{b} не окажется на оси x. Поворот не изменяет углы или величины.

2. Считайте новые координаты. После поворота вектор b^largehat{b} имеет координаты (1, 0). Поскольку a^largehat{a} — единичный вектор, расположенный под углом θ к оси x, определение единичной окружности дает его координаты как (cos θ, sin θ).

3. Перемножьте соответствующие компоненты и сложите:

a^⋅b^=ax⋅bx+ay⋅by=cos⁡θ⋅1+sin⁡θ⋅0=cos⁡θLarge begin{aligned} hat{a} cdot hat{b} = a_x cdot b_x + a_y cdot b_y = costheta cdot 1 + sintheta cdot 0 = costheta end{aligned}

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

a→⋅b→=a1⋅b1+a2⋅b2+⋯+an⋅bnLarge boxed{ begin{aligned} vec{a} cdot vec{b} = a_1 cdot b_1 + a_2 cdot b_2 + cdots + a_n cdot b_n end{aligned} }

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

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

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

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

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

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

Скалярная проекция отвечает на вопрос: какая часть вектора 𝒂→large boldsymbol{vec{a}} лежит вдоль направления вектора 𝒃→large boldsymbol{vec{b}}?

Это значение отрицательно, если проекция направлена в противоположную сторону от b→largevec{b}.

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

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

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

Приведенная ниже анимированная иллюстрация подтверждает эту идею:

Рисунок 3. Скалярная проекция в виде тени.
Скалярная проекция измеряет, какая часть вектора a лежит в направлении вектора b .
Она равна длине тени, которую точка А отбрасывает на точку Б (Ву, 2023). GIF-анимация создана Клодом.

Расчет

Представьте источник света, направленный прямо вниз на линию PS (в направлении b→largevec{b}). «Тень», которую отбрасывает стрелка a→largevec{a} (стрелка от P к Q ) на эту линию, — это в точности отрезок PR. Это можно увидеть на рисунке 4.

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

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

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

  • PQ = |a→|large PQ = |vec{a}| (гипотенуза).
  • PRlarge PR (прилегающая сторона – тень).
  • QRlarge QR (противоположная сторона – перпендикулярная составляющая).

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

  1. Угол между a→largevec{a} и b→largevec{b} равен θ.
  2. cos⁡(θ)=PR|a→|large cos(theta) = frac{PR}{|vec{a}|} (самое базовое определение косинуса).
  3. Умножьте обе стороны на |a→|large|vec{a}| :

PR=|a→|cos⁡(θ)LARGE begin{array}{|c|} hline PR = |vec{a}| cos(theta) hline end{array}

Сегмент 𝑷𝑹boldsymbol{PR} — это длина тени — скалярная проекция 𝒂→large boldsymbol{vec{a}} на 𝒃→large boldsymbol{vec{b}}.

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

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

Длина тени ( PR ) не зависит от величины b→largevec{b}. Она зависит от |a→|large|vec{a}| и от θ.

При вычислении a→⋅b^largevec{a} cdot hat{b} вы спрашиваете: какая часть a→largevec{a} лежит вдоль направления b→largevec{b}? Это и есть длина тени.

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

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

a→=(|a→|cos⁡θ, |a→|sin⁡(θ))Large vec{a} = (|vec{a}|costheta, |vec{a}|sin(theta))

и:

b^=(1,0)Large hat{b} = (1, 0)

Затем:

a→⋅b^=|a→|cos⁡θ⋅1+|a→|sin⁡(θ)⋅0=|a→|cos⁡θLarge begin{aligned} vec{a} cdot hat{b} = |vec{a}|costheta cdot 1 + |vec{a}|sin(theta) cdot 0 = |vec{a}|costheta end{aligned}

Скалярная проекция 𝒂→large boldsymbol{vec{a}} в направлении 𝒃→large boldsymbol{vec{b}} имеет вид:

|a→|cos⁡θ=a→⋅b^=a→⋅b→|b→|LARGE renewcommand{arraystretch}{2} begin{array}{|c|} hline begin{aligned} |vec{a}|costheta &= vec{a} cdot hat{b} &= frac{vec{a} cdot vec{b}}{|vec{b}|} end{aligned} hline end{array}

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

Мы применяем тот же приём вращения ещё раз, теперь с двумя общими векторами: a→largevec{a} и b→largevec{b}.

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

a→=(|a→|cos⁡θ, |a→|sin⁡θ)Large vec{a} = (|vec{a}|costheta, |vec{a}|sintheta) ,

b→=(|b→|, 0)Large vec{b} = (|vec{b}|, 0)

так:

a→⋅b→=|a→|cos⁡θ⋅|b→|+|a→|sin⁡θ⋅0=|a→||b→|cos⁡θLarge begin{aligned} vec{a} cdot vec{b} = |vec{a}|costheta cdot |vec{b}| + |vec{a}|sintheta cdot 0 = |vec{a}||vec{b}|costheta end{aligned}

Скалярное произведение 𝒂→large boldsymbol{vec{a}} и 𝒃→large boldsymbol{vec{b}} равно:

a→⋅b→=a1b1+⋯+anbn=∑i=1naibi=|a→||b→|cos⁡θLarge renewcommand{arraystretch}{2} begin{array}{|l|} hline vec{a} cdot vec{b} = a_1 b_1+ dots + a_n b_n = sum_{i=1}^{n} a_i b_i = |vec{a}||vec{b}|costheta hline end{array}

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

Проекция вектора выделяет ту часть вектора 𝒂→large boldsymbol{vec{a}}, которая направлена вдоль вектора 𝒃→large boldsymbol{vec{b}}.

Аналогия с тропой

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

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

Вот ответы на вопрос о проекции:

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

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

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

Оставшийся промежуток — от точки остановки до фактического конца маршрута А — это всё, что находится в точке А и не имеет отношения к направлению в точке В. Этот пример проиллюстрирован на рисунке 5 ниже: вектор, начинающийся в начале координат, направленный вдоль маршрута В и заканчивающийся в ближайшей точке,это векторная проекция вектора a→largevec{a} на вектор b→largevec{b}.

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

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

Это всего лишь расстояние, одно число.

Ответ на вопрос о векторной проекции: «Где именно вы находитесь?»

Точнее: «Какое именно движение по тропе B приводит вас к ближайшей точке?»

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

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

Ответ на вопрос о единичных векторах: «В каком направлении идет тропа B?»

Это в точности то, что обозначает b^largehat{b}. Это маршрут B, лишенный какой-либо информации о длине — только направление на побережье.

векторная проекция = (расстояние, которое вы пройдете) ⏟ скалярная проекция × (направление B) ⏟ b^begin{aligned} &text{векторная проекция} = &underbrace{(text{расстояние, которое вы пройдете})}_{text{скалярная проекция}} times underbrace{(text{направление B})}_{hat{b}} end{aligned}

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

На рисунке 6 ниже показана та же диаграмма теней, что и на рисунке 4, с обозначением PR стрелкой , поскольку проекция вектора представляет собой вектор (имеющий как длину, так и направление), а не просто число.

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

Поскольку проекция должна лежать вдоль оси b→largevec{b}, для PR→largevec{PR} нам необходимы две вещи:

  1. Его величина — это скалярная проекция: |a→|cos⁡θlarge|vec{a}|costheta
  2. Его направление : b^largehat{b} (направление b→largevec{b})

Величина любого вектора равна произведению его модуля на направление (как мы видели в разделе об единичном векторе), поэтому:

PR→=|a→|cos⁡θ⏟скалярная проекция⋅b^⏟направление b→large begin{array}{|c|} hline hspace{10pt} vec{PR} = underbrace{|vec{a}| cos theta}_{text{скалярная проекция}} cdot underbrace{hat{b}}_{text{направление } vec{b}} hspace{20pt} hline end{array}

Это уже формула векторной проекции. Мы можем переписать её, подставив b^=b→|b→|largehat{b} = frac{vec{b}}{|vec{b}|} и учитывая, что |a→||b→|cos⁡θ=a→⋅b→large|vec{a}||vec{b}|costheta = vec{a} cdot vec{b}

Векторная проекция вектора 𝒂→large boldsymbol{vec{a}} в направлении вектора 𝒃→large boldsymbol{vec{b}} имеет вид:

projb→(a→)=(|a→|cos⁡θ)b^=(a→⋅b→|b→|2)b→=(a→⋅b^)b^Large renewcommand{arraystretch}{1.5} begin{array}{|c|} hline begin{aligned} text{proj}_{vec{b}}(vec{a}) &= (|vec{a}|costheta)hat{b} &= left(frac{vec{a} cdot vec{b}}{|vec{b}|^2}right)vec{b} &= (vec{a} cdot hat{b})hat{b} end{aligned} hline end{array}

Краткое содержание

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

a→⋅b→=a1b1+⋯+anbn=∑i=1naibi=|a→||b→|cos⁡θ renewcommand{arraystretch}{2} begin{array}{|l|} hline vec{a} cdot vec{b} = a_1 b_1+ dots + a_n b_n = sum_{i=1}^{n} a_i b_i = |vec{a}||vec{b}|costheta hline end{array}

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

|a→|cos⁡θ=a→⋅b^=a→⋅b→|b→|Large begin{array}{|c|} hline |vec{a}|costheta = vec{a} cdot hat{b} = frac{vec{a} cdot vec{b}}{|vec{b}|} hline конец{массив}

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

(|a→|cos⁡θ)b^=(a→⋅b^)b^Large renewcommand{arraystretch}{2} begin{array}{|l|} hline (|vec{a}|costheta)hat{b} = (vec{a} cdot hat{b})hat{b} hline end{array}

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

Амит Шрайбер. Все материалы от Амита Шрайбера.

Источник: towardsdatascience.com

Оцените материал:

Поделиться
Понравилась статья? Расскажите другим
ВКонтакте
Читайте также
Новости робототехники Weave Robotics запускает Айзека, своего первого представителя робота-гуманоида Новости робототехники Страх перед человекоподобными роботами подтолкнул рабочих к забастовке на автомобильном заводе Hyundai. Новости робототехники Основатель Максимо рассказывает, как робототехника строит строительство солнечной энергетики. Архив рубрики ~Обо всем~ Астрономы нашли кандидата в самый далекий галактический бар. Он существовал спустя почти 1,2 миллиарда лет после Большого Взрыва Новости робототехники По заключению Национального совета по безопасности на транспорте (NTSB), водитель Tesla, который объяснил аварию тем, что автопилот нажал на педаль газа на 100%. Новости робототехники Mondo Robotics представляет собой Beni, вездеходного робота с электрической розеткой и искусственным интеллектом для потребителей. Архив рубрики ~Обо всем~ «Парачастицы» могут стать представителями третьего царства квантовых частиц Архив рубрики ~Коротко из Telegram~ Нейросеть обучили подсчету и оценке качества семян Архив рубрики ~Коротко из Telegram~ «Комендантский час» на соцсети для подростков 16-17 лет хотят ввести… Архив рубрики ~Коротко из Telegram~ В Южной Корее создадут бесплатного ИИ-бота для всех граждан. Архив рубрики ~Коротко из Telegram~ В США 73% технических вакансий требуют навыков работы с ИИ,… Архив рубрики ~Обо всем~ Компания SpaceX внезапно прервала второй запуск Starship V3 после запуска двигателя. Архив рубрики ~Коротко из Telegram~ Samsung хочет обучать ИИ на данных здоровья Архив рубрики ~Коротко из Telegram~ Бывший глава «Яндекс Лавки» вышел в Nebius Илья Красильщик, медиаменеджер… Новости робототехники Weave Robotics запускает Айзека, своего первого представителя робота-гуманоида Новости робототехники Страх перед человекоподобными роботами подтолкнул рабочих к забастовке на автомобильном заводе Hyundai. Новости робототехники Основатель Максимо рассказывает, как робототехника строит строительство солнечной энергетики. Архив рубрики ~Обо всем~ Астрономы нашли кандидата в самый далекий галактический бар. Он существовал спустя почти 1,2 миллиарда лет после Большого Взрыва Новости робототехники По заключению Национального совета по безопасности на транспорте (NTSB), водитель Tesla, который объяснил аварию тем, что автопилот нажал на педаль газа на 100%. Новости робототехники Mondo Robotics представляет собой Beni, вездеходного робота с электрической розеткой и искусственным интеллектом для потребителей. Архив рубрики ~Обо всем~ «Парачастицы» могут стать представителями третьего царства квантовых частиц Архив рубрики ~Коротко из Telegram~ Нейросеть обучили подсчету и оценке качества семян Архив рубрики ~Коротко из Telegram~ «Комендантский час» на соцсети для подростков 16-17 лет хотят ввести… Архив рубрики ~Коротко из Telegram~ В Южной Корее создадут бесплатного ИИ-бота для всех граждан. Архив рубрики ~Коротко из Telegram~ В США 73% технических вакансий требуют навыков работы с ИИ,… Архив рубрики ~Обо всем~ Компания SpaceX внезапно прервала второй запуск Starship V3 после запуска двигателя. Архив рубрики ~Коротко из Telegram~ Samsung хочет обучать ИИ на данных здоровья Архив рубрики ~Коротко из Telegram~ Бывший глава «Яндекс Лавки» вышел в Nebius Илья Красильщик, медиаменеджер…

Оставить комментарий