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

Свойства матриц: числа, которые за этим стоят

Определитель матрицы весов нейросети равен нулю - значит слой вырожден и теряет информацию. Число обусловленности матрицы Гессе определяет, насколько быстро сходится Adam. Свойства матриц - это не теория ради теории, а диагностика любой числовой системы.

  • Диагностика нейросети: малый определитель матрицы весов - признак вырождения слоя
  • Численная устойчивость: число обусловленности - насколько погрешность входа усиливается
  • Физика: определитель якобиана - коэффициент сжатия/растяжения объёма при преобразовании
  • Теория управления: след матрицы системы связан с устойчивостью
  • Статистика: определитель ковариационной матрицы - обобщённая дисперсия

Свойства матриц: числа, которые за этим стоят

**Нейросеть перестала обучаться на третьей эпохе. Loss застыл, градиенты взорвались.** Причина почти всегда одна - матрица весов или матрица Гессиана стала плохообусловленной. ~Число обусловленности~{condition number} κ = σ_max / σ_min выросло до миллиарда, и float32 просто перестал различать числа, которые отличаются на 10⁻⁹. Это не баг в коде - это свойство матрицы. Понимать свойства матриц - значит понимать, почему алгоритмы работают или ломаются.

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

Что главное в концепте «Свойства матриц: числа, которые за этим стоят»?

Проверка усвоения материала концепта.

Число обусловленности: здоровье матрицы

Число обусловленности: здоровье матрицы

~Число обусловленности~{condition number: κ = σ_max / σ_min, где σ - сингулярные числа} κ показывает, насколько усиливается ошибка при решении Ax = b. Если во входных данных ошибка δ, то в решении она вырастет до κ·δ.

ХОРОШО ОБУСЛОВЛЕННАЯ (κ ≈ 1): A = [[3, 0], σ_max = 3, σ_min = 1 [0, 1]] κ = 3 / 1 = 3 Ошибка во входе 0.1% → ошибка в решении ≤ 0.3% ПЛОХО ОБУСЛОВЛЕННАЯ (κ >> 1): A = [[1.000, 0.999], σ_max ≈ 2, σ_min ≈ 0.001 [0.999, 0.998]] κ ≈ 2000 Ошибка во входе 0.1% → ошибка в решении может быть 200% ПРАКТИЧЕСКИЙ ПОРОГ: float32: теряет ~7 знаков → если κ > 10^7, результат мусор float64: теряет ~15 знаков → если κ > 10^15, результат мусор

**float32 vs float64 в PyTorch**: по умолчанию PyTorch использует float32 (~7 знаков). Если число обусловленности κ > 10^6, решение системы в float32 буквально случайное. Именно поэтому критические операции (np.linalg.solve, scipy.linalg.lstsq) внутри переключаются на float64 даже когда входные данные float32.

Что главное в концепте «Число обусловленности: здоровье матрицы»?

Проверка усвоения материала концепта.

Симметричные матрицы: особый класс

Симметричные матрицы: особый класс

Матрица называется ~симметричной~{symmetric matrix: A = Aᵀ, элемент a_ij = a_ji}, если A = Aᵀ. Это не просто эстетика - симметричные матрицы имеют вещественные собственные значения, ортогональные собственные векторы, и для них доступны более быстрые и стабильные алгоритмы.

МАТРИЦА ГРАМА (Gram matrix): Дан набор векторов X (n x d) - например, батч эмбеддингов. G = X · Xᵀ → размер (n x n) G_ij = <x_i, x_j> (скалярное произведение двух векторов) G ВСЕГДА симметрична: G_ij = <x_i, x_j> = <x_j, x_i> = G_ji ГДЕ ВСТРЕЧАЕТСЯ: Kernel матрицы в SVM: K_ij = k(x_i, x_j) Матрица ковариации: Σ = (1/n) X^T X Attention в трансформерах: QK^T (симметрично при Q=K) Матрица Гессиана в оптимизации: H_ij = ∂²L/∂w_i∂w_j

**eigvalsh vs eig**: для симметричных матриц NumPy предоставляет eigvalsh - специализированный алгоритм в 2x быстрее и численно стабильнее. Никогда не применять eig к заведомо симметричной матрице - это потеря производительности.

Что главное в концепте «Симметричные матрицы: особый класс»?

Проверка усвоения материала концепта.

Positive Definite: матрица с гарантиями

Positive Definite: матрица с гарантиями

Симметричная матрица A называется ~положительно определённой~{positive definite: xᵀAx > 0 для всех x ≠ 0} (SPD, symmetric positive definite), если xᵀAx > 0 для любого ненулевого вектора x. Все собственные значения строго положительны. Это самый "здоровый" класс матриц в численных методах.

A = [[4, 2], xᵀAx при x = (1, 0): 1·4·1 = 4 > 0 [2, 3]] при x = (0, 1): 1·3·1 = 3 > 0 при x = (1, 1): 4+2+2+3 = 11 > 0 СОБСТВЕННЫЕ ЗНАЧЕНИЯ: λ₁ ≈ 5.56, λ₂ ≈ 1.44 - оба положительные → PD PROOF BY CHOLESKY: A - positive definite ⟺ существует разложение A = LLᵀ Если Cholesky не упал с ошибкой - матрица PD. (В scipy: scipy.linalg.cholesky)

**Почему Cholesky - стандарт для SPD**: алгоритм LU для общей матрицы требует n³/3 операций. Cholesky - n³/6, то есть вдвое быстрее, плюс гарантированно устойчив без пивотинга. Sklearn и scipy используют Cholesky автоматически когда видят SPD: GaussianProcessRegressor, Ridge regression, Kalman filter.

**PD-матрица = гарантия сходимости**: если матрица Гессиана в точке оптимизации - positive definite, то там локальный минимум (не седло, не максимум). Именно поэтому вторые производные проверяются в курсах оптимизации. Adam, L-BFGS, Newton's method - все неявно полагаются на это.

Что главное в концепте «Positive Definite: матрица с гарантиями»?

Проверка усвоения материала концепта.

Мультипликативность определителя

Мультипликативность определителя

**det(AB) = det(A) · det(B)** - короткая формула с глубоким следствием: определитель произведения трансформаций равен произведению определителей. Геометрически: если A масштабирует объёмы в k раз, а B в m раз, то AB масштабирует в k·m раз.

A = [[2, 0], det(A) = 6 [0, 3]] B = [[1, 1], det(B) = 2 [0, 2]] AB = [[2, 2], det(AB) = 2·6 - 0·2 = 12 = 6·2 OK [0, 6]] ГДЕ ВАЖНО: Normalizing flows (NF) в генеративных моделях: log p(x) = log p(z) + log |det(∂f/∂z)| det(AB) = det(A)·det(B) позволяет считать log-det как сумму log-det отдельных слоёв - O(n) вместо O(n³)

Что главное в концепте «Мультипликативность определителя»?

Проверка усвоения материала концепта.

Свойства, используемые в методе Гаусса

Свойства, используемые в методе Гаусса

При решении систем методом Гаусса выполняются элементарные операции над строками. Знание их влияния на определитель позволяет корректно считать det через приведение к треугольному виду.

ОперацияВлияние на detПрименение
Перестановка строкЗнак меняется (-1 раз)Пивотинг в LAPACK/NumPy
Умножение строки на kdet умножается на kМасштабирование для устойчивости
Прибавление строки к другойdet не меняетсяОсновной шаг Гаусса
Транспонирование A → Aᵀdet не меняетсяdet(A) = det(Aᵀ)
Треугольная матрицаdet = произведение диагоналиИтог LU-разложения

Свойства матриц в ML-инфраструктуре

Где эти три концепции появляются в реальных системах

КомпонентРольДетали
Condition number в deep learningκ = σ_max / σ_min - диагностика расходимостиExploding gradients в RNN, batch normalization снижает κ слоёв, gradient clipping как паллиатив
SPD матрицы в Gaussian ProcessesKernel matrix K должна быть SPD по определениюsklearn GaussianProcessRegressor, GPyTorch - Cholesky разложение, nugget для стабильности
Матрица Грама в kernel SVMK_ij = k(x_i, x_j) - симметрична и PSDsklearn SVC с RBF/poly kernel - автоматически SPD, libsvm внутри использует Cholesky
det в Normalizing Flowslog|det(J)| в change-of-variables формулеRealNVP, Glow, NICE - архитектуры специально выбраны для O(n) подсчёта det

Что главное в концепте «Свойства, используемые в методе Гаусса»?

Проверка усвоения материала концепта.

Практика: проверка положительной определённости

Практика: проверка положительной определённости

Вопросы для собеседования

Нейросеть перестала учиться на 5-й эпохе, loss NaN. Как проверить, связано ли это с обусловленностью матриц?

- np.linalg.cond(W) > 10^6 в float32 означает, что обратные вычисления дают мусор - При κ >> 1 градиенты в одних направлениях гигантские, в других - нулевые - Решения: batch norm снижает κ слоёв, gradient clipping, переход на float64 для диагностики - Xavier/He инициализация специально подбирает масштаб чтобы не раздувать κ

Почему для Ridge regression матрица (AᵀA + λI) всегда положительно определённая?

- AᵀA - симметрична и positive semidefinite: все λ_i >= 0 - Прибавление λI сдвигает все собственные значения на λ: λ_i + λ > 0 - Результат - строго positive definite, всегда обратима, хорошо обусловлена - Именно в этом суть регуляризации: стабилизация матрицы перед обращением

В чём разница между positive definite и positive semidefinite? Когда встречается каждый случай?

- PD: xᵀAx > 0 для всех x ≠ 0, все λ_i > 0, матрица обратима - PSD: xᵀAx >= 0, некоторые λ_i = 0, матрица вырождена - Матрица Грама X·Xᵀ - PSD (может быть нулевой по некоторым направлениям) - При n > d в Gram matrix ранг ≤ d < n → некоторые λ = 0 → PSD не PD

Что главное в концепте «Практика: проверка положительной определённости»?

Проверка усвоения материала концепта.

Что унести из урока

  • **Число обусловленности** κ = σ_max/σ_min - измеряет чувствительность к ошибкам; κ > 10^7 в float32 = мусор на выходе
  • **Симметричная матрица** (A = Aᵀ) возникает везде - Gram matrix, ковариация, Гессиан; специальные алгоритмы быстрее в 2x
  • **SPD матрица** гарантирует единственный минимум квадратичной формы и разложение Холецкого - основа Ridge, GP, SVM kernel
  • **det(AB) = det(A)·det(B)** - мультипликативность; ключ к O(n) подсчёту log-det в normalizing flows
  • **Треугольная матрица**: det = произведение диагонали; именно поэтому LU - стандартный алгоритм подсчёта det
  • Элементарные операции Гаусса меняют det предсказуемо - это основа корректного подсчёта при пивотинге

Куда дальше

Свойства матриц - фундамент для продвинутых тем

  • Системы линейных уравнений — LU, Cholesky, QR - выбор алгоритма зависит от свойств матрицы
  • Собственные векторы и значения — Для SPD матриц - все λ > 0, ортогональные собственные векторы, spectral theorem
  • SVD и низкоранговые приближения — Сингулярные числа σ_i напрямую определяют число обусловленности κ = σ_max/σ_min

Связанные уроки

  • nm-01
Свойства матриц: числа, которые за этим стоят

0

1

Войти