Норма вектора - фундаментальное понятие линейной алгебры и машинного обучения, позволяющее измерять "размер" векторов в многомерном пространстве. От выбора подходящей нормы зависит точность вычислений в задачах оптимизации, поиска ближайших соседей, кластеризации данных и многих других. Давайте разберемся, что такое норма вектора, какие бывают нормы и где они применяются.
Понятие нормы вектора
Норма вектора x обозначается как ||x|| и представляет собой вещественное число, которое характеризует "размер" или "длину" вектора x в соответствующем векторном пространстве. Формально, функция ||·||: V → R называется нормой на векторном пространстве V, если выполняются следующие аксиомы:
- ||x|| ≥ 0 для любого x ∈ V и ||x|| = 0 только когда x = 0 (положительная определенность);
- ||αx|| = |α|·||x|| для любого скаляра α и вектора x ∈ V (однородность);
- ||x + y|| ≤ ||x|| + ||y|| для любых векторов x, y ∈ V (неравенство треугольника).
Из определения нормы следует, что если x ≠ 0, то ||x|| > 0. Также норма индуцирует на V норма вектора метрику ρ(x, y) = ||x - y||. Знание норм позволяет вычислять расстояния между векторами и определять близость объектов в пространстве признаков.
Примеры норм
Рассмотрим несколько наиболее употребительных норм векторов:
- Евклидова норма (L2): ||x||2 = √x21 + ... + x2n
- Норма L1: ||x||1 = |x1| + ... + |xn|
- Норма L∞: ||x||∞ = max(|x1|, ..., |xn|)
- Обобщенные нормы Lp: ||x||p = (|x1|p + ... + |xn|p)1/p
Геометрически евклидова норма соответствует расстоянию от начала координат до конца вектора x, норма L∞ - расстоянию до наиболее удаленной по модулю координаты, а норма L1 может рассматриваться как "манхэттенское расстояние". Выбор конкретной нормы зависит от решаемой задачи.
Вычисление нормы вектора в Python
В библиотеке NumPy реализованы различные векторные нормы, которые можно вызывать следующим образом:
import numpy as np x = np.array([1, 2, -3]) print(np.linalg.norm(x)) # евклидова норма print(np.linalg.norm(x, ord=1)) # норма L1 print(np.linalg.norm(x, ord=np.inf)) # норма L-бесконечность
Нормы векторов и матриц
Помимо норм для векторов, в математике и прикладных задачах часто используются нормы для матриц - вещественных чисел, характеризующих "размер" матрицы.
Норма матрицы A обозначается как ||A|| и определяется аналогично норме вектора, то есть ||A|| должно удовлетворять:
- ||A|| ≥ 0;
- ||αA|| = |α|·||A|| для любого скаляра α;
- ||A + B|| ≤ ||A|| + ||B||.
Существует множество полезных матричных норм, в том числе:
- Норма Фробениуса: ||A||F = √sum(Ai,j2)
- Спектральная норма: ||A||2 = √λmax(AT·A)
- Норма Шура: ||A||S = max(sum(|Ai,j|))
Конкретный выбор нормы матрицы зависит от приложения. Например, спектральная норма тесно связана с динамикой систем, управляемых матрицей A, а норма Шура используется в неравенствах типа неравенства Гершгорина.
Вычисление матричных норм в Python
В библиотеке NumPy можно вычислить норму Фробениуса матрицы A следующим образом:
import numpy as np A = np.array([[1, 2], [-3, 4]]) frob_norm = np.linalg.norm(A, ord='fro') print(frob_norm)
А в SciPy есть специальные функции для разных матричных норм:
from scipy.linalg import norm mat_norm_inf = norm(A, np.inf) # норма по столбцам mat_norm_1 = norm(A, 1) # норма по строкам
Выбор нормы вектора
Какую же норму следует выбрать для конкретной задачи? Рассмотрим несколько примеров.
Классификация и кластеризация
В задачах классификации и кластеризации часто используется евклидова норма L2, поскольку она естественным образом индуцирует евклидово расстояние между объектами. Однако в некоторых случаях предпочтительнее оказывается норма L1, например, если признаки объектов распределены не гауссовски или есть выбросы.
Разреженная оптимизация
"Норма" L0, равная числу ненулевых элементов вектора, широко используется в задачах разреженной оптимизации и сжатия данных. Минимизация L0-нормы позволяет получать разреженные решения.
Робастность к выбросам
В ряде задач требуется робастность к аномальным выбросам в данных. В таких случаях вместо нормы L2 удобно использовать норму L1, которая менее чувствительна к резким отклонениям.
Нормы и невязки в оптимизации
Нормы векторов играют важную роль в задачах оптимизации и обучения с учителем. Рассмотрим регрессию - аппроксимацию зависимости одной переменной от других. Пусть есть обучающая выборка {(xi, yi)}, где xi - входные данные, а yi - целевые значения, и мы хотим подобрать параметры модели θ так, чтобы минимизировать невязки на обучающей выборке:
Здесь L - некоторая функция потерь, зависящая от выбранной нормы невязок ||ŷ - y||. Например:
- L2-норма (MSE) соответствует линейной регрессии;
- L1-норма (MAE) дает робастную регрессию;
- LogCOS - логарифмическая функция потерь.
Выбор нормы невязок влияет на получаемую модель и ее обобщающую способность.
Регуляризация с помощью норм
Еще одно важное применение норм - регуляризация в задачах оптимизации и обучения моделей. Добавление штрафного члена, зависящего от нормы параметров θ, позволяет бороться с переобучением и получать более обобщающие решения:
Здесь R(θ) - регуляризатор, например, λ·||θ||22 при L2-регуляризации (ридж-регрессия) или λ·||θ||1 для L1 (лассо-регрессия). Выбор нормы определяет свойства решения.