alterna ai
ALTERNA AI / ГЛАВА 01 · 03

01.3 Как измерить длину

На предыдущей странице: откуда отсчитываются координаты.

Сначала найдём длину стрелки по теореме Пифагора. Затем сравним другие правила измерения, которые отвечают на другой вопрос о расстоянии.

Стрелка: 3 вправо, 4 вверх.

«Длина» должна удовлетворять правилам

На прямоугольной сетке маршрут можно измерять суммой горизонтального и вертикального перемещений; свободное движение по плоскости естественно измерять прямым отрезком; ограничение по самой большой координате задаёт ещё одну геометрию. Все эти варианты являются нормами, потому что для вектора xx, скаляра α\alpha и вектора yy выполняются:

∥x∥≥0,∥x∥=0⟺x=0,∥αx∥=∣α∣∥x∥,∥x+y∥≤∥x∥+∥y∥.\|x\|\ge 0, \qquad \|x\|=0\Longleftrightarrow x=0, \qquad \|\alpha x\|=|\alpha|\|x\|, \qquad \|x+y\|\le\|x\|+\|y\|.

Последнее свойство — неравенство треугольника. Прямой путь от начала к x+yx+y не длиннее маршрута сначала вдоль xx, затем вдоль yy. Без этих свойств произвольную функцию нельзя считать корректной длиной.

Три нормы, используемые в курсе:

∥x∥1=∑i∣xi∣,∥x∥2=∑ixi2,∥x∥∞=max⁡i∣xi∣.\|x\|_1=\sum_i|x_i|, \qquad \|x\|_2=\sqrt{\sum_i x_i^2}, \qquad \|x\|_\infty=\max_i|x_i|.

Для x=[3,4]Tx=[3,4]^T:

∥x∥1=7,∥x∥2=5,∥x∥∞=4.\|x\|_1=7, \qquad \|x\|_2=5, \qquad \|x\|_\infty=4.

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

Единичный шар раскрывает выбранную геометрию

Единичный шар нормы — множество {x:∥x∥≤1}\{x:\|x\|\le1\}. На плоскости его граница имеет разную форму:

Нормирование ненулевого вектора делит его на выбранную норму. Точка x/∥x∥x/\|x\| лежит на соответствующей границе, но её координаты различны:

x∥x∥1=[3/7,4/7]T,x∥x∥2=[3/5,4/5]T,x∥x∥∞=[3/4,1]T.\frac{x}{\|x\|_1}=[3/7,4/7]^T, \quad \frac{x}{\|x\|_2}=[3/5,4/5]^T, \quad \frac{x}{\|x\|_\infty}=[3/4,1]^T.

Расстояние является нормой разности

Выбранная норма задаёт метрику

dp(x,y)=∥x−y∥p.d_p(x,y)=\|x-y\|_p.

Для x=[3,4]Tx=[3,4]^T, y=[1,0]Ty=[1,0]^T разность равна [2,4]T[2,4]^T, поэтому

d1(x,y)=6,d2(x,y)=20,d∞(x,y)=4.d_1(x,y)=6, \qquad d_2(x,y)=\sqrt{20}, \qquad d_\infty(x,y)=4.

Число «расстояние равно 4» неполно без названия метрики. В L1L_1 существует много кратчайших ступенчатых маршрутов длины 6. В L2L_2 кратчайшим является прямой отрезок. В L∞L_\infty стоимость определяется наибольшим координатным отклонением.

Квадрат евклидовой нормы часто используется в loss,

q(x)=∥x∥22=∑ixi2,q(x)=\|x\|_2^2=\sum_i x_i^2,

но сам нормой не является: q(2x)=4q(x)q(2x)=4q(x), тогда как однородность нормы требует множитель 2. «L0L_0» как число ненулевых компонент тоже не норма: например, масштабирование ненулевого вектора не умножает это число на ∣α∣|\alpha|. Сумма координат без модулей не годится даже как длина, поскольку у [1,−1][1,-1] она равна нулю.

Масштаб признаков меняет соседство

Если первая координата измерена в метрах, а затем записана в сантиметрах, её числовой вклад в расстояние увеличится в 100 раз. Объект, ближайший по исходным единицам, может перестать быть ближайшим после смены масштаба. Поэтому стандартизация признаков является частью модели данных, а не косметикой интерфейса.

Нормирование x/∥x∥2x/\|x\|_2 сохраняет направление ненулевого вектора и удаляет длину. Для embeddings это иногда полезно, когда сравниваются направления, но длина может нести обученный сигнал. Нормировать автоматически безопасно только после постановки вопроса: какую информацию разрешено отбросить?

from math import sqrt
x = [3, 4]
assert sum(abs(v) for v in x) == 7
assert sqrt(sum(v*v for v in x)) == 5
assert max(abs(v) for v in x) == 4

Код повторяет только что разобранные операции. Полный проверяемыйPython-пример главы доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.

Мы получили длину, а не новую координату. Перенос начала стрелки не меняет эту длину.

Что даёт сумма произведений. Как этот вопрос продолжает полученный результат?

Python-примеры главы 01 Академическая база →