Линейная алгебра

Ортогональность и проекции

Проекция — это ближайшая точка подпространства, и отсюда растёт весь метод наименьших квадратов

Шаг 17 из 117 · ~30 мин

Зачем нужна ортонормированность

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

[v]i=v,bi[\mathbf{v}]_i = \langle \mathbf{v}, \mathbf{b}_i \rangle

Проверяется мгновенно. Если v=jcjbj\mathbf{v} = \sum_j c_j \mathbf{b}_j, то

v,bi=jcjbj,bi=ci\langle \mathbf{v}, \mathbf{b}_i \rangle = \sum_j c_j \langle \mathbf{b}_j, \mathbf{b}_i \rangle = c_i

потому что все слагаемые с jij \ne i обнулились, а при j=ij = i множитель равен единице. Система уравнений превратилась в nn независимых скалярных произведений — это и есть причина, по которой ортонормированные базисы предпочитают всем остальным.

Проекция на вектор

Проекция v\mathbf{v} на направление u\mathbf{u}:

proju(v)=v,uu,uu\operatorname{proj}_{\mathbf{u}}(\mathbf{v}) = \htmlData{k=coef}{\frac{\langle \mathbf{v}, \mathbf{u}\rangle}{\langle \mathbf{u}, \mathbf{u}\rangle}}\,\htmlData{k=dir}{\mathbf{u}}

безразмерен, а задаёт, куда смотреть. Деление на u,u\langle \mathbf{u}, \mathbf{u}\rangle нужно ровно для того, чтобы длина u\mathbf{u} не влияла на результат: проекция зависит от прямой, а не от выбранного на ней вектора. Для единичного u\mathbf{u} знаменатель равен единице и формула упрощается до v,uu\langle \mathbf{v}, \mathbf{u}\rangle \mathbf{u}.

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

ab
скалярное произведение
3
норма a
2.06
норма b
2.24
косинус
0.65
угол
49.4°

Ключевое свойство: остаток ортогонален

Разложим v\mathbf{v} на проекцию и остаток: v=p+r\mathbf{v} = \mathbf{p} + \mathbf{r}, где p=proju(v)\mathbf{p} = \operatorname{proj}_{\mathbf{u}}(\mathbf{v}). Тогда

r,u=v,uv,uu,uu,u=0\langle \mathbf{r}, \mathbf{u}\rangle = \langle \mathbf{v}, \mathbf{u}\rangle - \frac{\langle \mathbf{v}, \mathbf{u}\rangle}{\langle \mathbf{u}, \mathbf{u}\rangle}\langle \mathbf{u}, \mathbf{u}\rangle = 0

Остаток ортогонален направлению — всегда, по построению. Из этого следует, что проекция это ближайшая точка прямой: для любой другой точки q\mathbf{q} на прямой по теореме Пифагора

vq2=r2+pq2r2\|\mathbf{v} - \mathbf{q}\|^2 = \|\mathbf{r}\|^2 + \|\mathbf{p} - \mathbf{q}\|^2 \ge \|\mathbf{r}\|^2

Вот эта фраза — «проекция минимизирует расстояние» — и есть весь метод наименьших квадратов. Мы вернёмся к ней в практическом уроке блока.

Проекция на подпространство

Если столбцы UU образуют базис подпространства, проекция задаётся матрицей

P=U(UU)1UP = U(U^\top U)^{-1}U^\top

Формула выглядит громоздко, но читается по частям справа налево: UU^\top берёт скалярные произведения с базисными векторами, (UU)1(U^\top U)^{-1} исправляет то, что базис не ортонормирован, UU собирает результат обратно в линейную комбинацию. Для ортонормированных столбцов UU=IU^\top U = I, и всё сводится к P=UUP = UU^\top.

У проекционной матрицы два характерных свойства: P2=PP^2 = P (проецировать дважды — то же, что один раз) и P=PP^\top = P.

Ортогональные матрицы

Матрица QQ ортогональна, если QQ=IQ^\top Q = I, то есть Q1=QQ^{-1} = Q^\top. Столбцы образуют ортонормированный базис. Главное следствие:

Qx,Qy=(Qx)Qy=xQQy=x,y\langle Q\mathbf{x}, Q\mathbf{y}\rangle = (Q\mathbf{x})^\top Q\mathbf{y} = \mathbf{x}^\top Q^\top Q \mathbf{y} = \langle \mathbf{x}, \mathbf{y}\rangle

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

Практическая ценность: они не портят числа. Умножение на ортогональную матрицу не растягивает и не сжимает, поэтому не усиливает ошибку округления и не раздувает градиенты. Отсюда ортогональная инициализация весов и интерес к ортогональным репараметризациям.

Грам–Шмидт, коротко

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

wk=vki<kprojwi(vk),qk=wkwk\mathbf{w}_k = \mathbf{v}_k - \sum_{i<k} \operatorname{proj}_{\mathbf{w}_i}(\mathbf{v}_k), \qquad \mathbf{q}_k = \frac{\mathbf{w}_k}{\|\mathbf{w}_k\|}

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

Источники

Проверки

0 из 2
  1. Что верно про проекции

    Пусть PP — матрица проекции на некоторое подпространство, а p=proju(v)\mathbf{p} = \operatorname{proj}_{\mathbf{u}}(\mathbf{v}). Отметьте все верные утверждения.

  2. Проекция на направление

    Реализуйте project(u, v) — проекцию вектора v на направление u, то есть вектор

    v,uu,uu\frac{\langle v, u\rangle}{\langle u, u\rangle}\, u

    Требования:

    • размерность произвольная;
    • если u нулевой, направления нет — верните вектор из нулей той же длины;
    • результат — список чисел, а не коэффициент.

    Проверьте себя на шестом случае: удлинение u не должно менять ответ.

    функция project

    Загрузка редактора…

    Ctrl/⌘ + Enter