Норма вектора — основа точных вычислений

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

Понятие нормы вектора

Норма вектора x обозначается как ||x|| и представляет собой вещественное число, которое характеризует "размер" или "длину" вектора x в соответствующем векторном пространстве. Формально, функция ||·||: V → R называется нормой на векторном пространстве V, если выполняются следующие аксиомы:

  1. ||x|| ≥ 0 для любого x ∈ V и ||x|| = 0 только когда x = 0 (положительная определенность);
  2. ||αx|| = |α|·||x|| для любого скаляра α и вектора x ∈ V (однородность);
  3. ||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|| должно удовлетворять:

  1. ||A|| ≥ 0;
  2. ||αA|| = |α|·||A|| для любого скаляра α;
  1. ||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 (лассо-регрессия). Выбор нормы определяет свойства решения.

Комментарии