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

Линейные отображения: каждый слой нейросети под микроскопом

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

  • Нейросеть: матрица W задаёт линейное отображение между пространствами активаций
  • Компьютерная графика: проекция 3D-мира на 2D-экран - линейное (аффинное) отображение
  • Сигнальная обработка: DFT - линейное отображение из временного домена в частотный
  • Физика: квантовые операторы - линейные отображения в гильбертовом пространстве
  • NLP: матрица эмбеддингов - линейное отображение из one-hot в плотное представление

Линейные отображения: каждый слой нейросети под микроскопом

**Нейросеть GPT-4 состоит из ~96 трансформерных блоков.** Каждый блок содержит несколько `nn.Linear` слоёв. Каждый `nn.Linear` - это ровно одно линейное отображение: берёт вектор из пространства одной размерности, выдаёт вектор из другой. Все трансформации векторов в ML - rotate, project, embed, compress - являются линейными отображениями или их суперпозицией. Понимать линейные отображения значит понимать, что происходит внутри каждого forward pass.

Среди всех функций $f: \mathbb{R}^n \to \mathbb{R}^m$ у линейных есть суперсила, которой нет ни у кого: **конечное описание**. Скажи мне, куда $f$ переводит базис - и я посчитаю $f(x)$ для любого $x$. Эта компрессия - "целая функция = одна матрица" - ответ на вопрос, почему каждый слой каждой нейросети намеренно линеен (плюс одна нелинейность сверху). Выучи линейный случай до автоматизма и 90% архитектуры deep learning становится читаемым.

Что главное в концепте «Линейные отображения: каждый слой нейросети под микроскопом»?

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

Определение и главное свойство

Определение и главное свойство

Отображение T: V → W называется ~линейным~{Линейный оператор, линейная карта - всё одно}, если оно сохраняет две операции: сложение и умножение на скаляр.

T: V -> W называется линейным, если для любых u, v из V и скаляра a: T(u + v) = T(u) + T(v) [аддитивность] T(a · v) = a · T(v) [однородность] ЭКВИВАЛЕНТНАЯ ЗАПИСЬ - одно условие: T(a·u + b·v) = a·T(u) + b·T(v) НЕМЕДЛЕННОЕ СЛЕДСТВИЕ: T(0) = 0 (линейное отображение всегда посылает 0 в 0) Почему: T(0) = T(0·v) = 0·T(v) = 0 ЕСЛИ T(0) ≠ 0 - отображение точно нелинейное. Примеры нелинейных: f(x) = x + 1 (f(0) = 1 ≠ 0) f(x) = x² (f(2) = 4 ≠ 2·f(1) = 2)

Главный практический факт: **линейное отображение полностью определяется тем, куда оно посылает базисные векторы**. Нашли T(e₁), T(e₂), ..., T(eₙ) - нашли всё отображение.

Что главное в концепте «Определение и главное свойство»?

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

Матрица линейного отображения

Матрица линейного отображения

Любое линейное отображение T: Rⁿ → Rᵐ записывается как умножение на матрицу. Столбцы этой матрицы - образы базисных векторов.

T: R^n -> R^m, матрица A размера m×n: A = [ T(e1) | T(e2) | ... | T(en) ] столб. столб. столб. Тогда T(x) = A·x для любого x из R^n. ПОЧЕМУ ЭТО РАБОТАЕТ: x = x1·e1 + x2·e2 + ... + xn·en T(x) = x1·T(e1) + x2·T(e2) + ... + xn·T(en) [линейность] = A · x [по определению умножения матрицы на вектор] ПРИМЕР - поворот на угол theta: T(e1) = (cos(theta), sin(theta)) T(e2) = (-sin(theta), cos(theta)) A = [[cos(theta), -sin(theta)], [sin(theta), cos(theta)]] Поворот на 90°: A = [[0, -1], [1, 0]] Проверка: A·(1,0) = (0,1) ✓ A·(0,1) = (-1,0) ✓

Что главное в концепте «Матрица линейного отображения»?

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

Нейросети как линейные отображения

Нейросети как линейные отображения

Каждый `nn.Linear(in, out)` в PyTorch - это линейное отображение из пространства размерности `in` в пространство размерности `out`. Веса слоя - это матрица A размером `out × in`.

**Почему нужна нелинейность (relu)**: суперпозиция линейных отображений - снова линейное отображение (W3·W2·W1 = одна матрица). Без relu нейросеть любой глубины эквивалентна однослойной. Relu разрывает эту цепочку и создаёт нелинейную функцию.

Что главное в концепте «Нейросети как линейные отображения»?

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

Ядро и образ: что теряется и что достижимо

Ядро и образ: что теряется и что достижимо

У каждого линейного отображения два ключевых подпространства: что пропадает (ядро) и что достижимо (образ).

ЯДРО (Kernel, Null Space): ker(T) = { v из V : T(v) = 0 } - всё, что отображение «уничтожает» - всегда подпространство V - dim(ker(T)) = nullity(T) ОБРАЗ (Image, Range): Im(T) = { T(v) : v из V } - всё, что достижимо в W - всегда подпространство W - dim(Im(T)) = rank(T) ТЕОРЕМА О РАНГЕ (rank-nullity theorem): dim(ker T) + dim(Im T) = dim(V) nullity(T) + rank(T) = n СМЫСЛ: из n измерений входного пространства rank штук «выживают» в образе, nullity штук «гибнут» в ядре. МЛ-ПРИМЕР: слой nn.Linear(784, 256) - это отображение R^784 -> R^256. Максимальный rank = 256 (ограничен выходным пространством). nullity >= 784 - 256 = 528 (минимум 528 направлений теряются).

Что главное в концепте «Ядро и образ: что теряется и что достижимо»?

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

Изоморфизм embedding пространств

Изоморфизм embedding пространств

В ML часто нужно перевести вектор из одного пространства в другое, сохранив структуру. Если отображение биективно (ядро просто, образ = W), оно называется ~изоморфизмом~{Iso = равный + morphe = форма}. Структура исходного пространства полностью сохраняется.

Что главное в концепте «Изоморфизм embedding пространств»?

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

Kernel trick: неявное линейное отображение в SVM

Kernel trick: неявное линейное отображение в SVM

SVM с линейным ядром - это линейное отображение в том же пространстве. Но с **kernel trick** данные неявно отображаются в пространство очень высокой (иногда бесконечной) размерности, где они становятся линейно разделимы. RBF-ядро k(x,y) = exp(-||x-y||²/2σ²) соответствует бесконечномерному feature space - линейному отображению φ: Rⁿ → R∞. Вычислять φ(x) явно не нужно - достаточно считать скалярные произведения через ядро.

Что главное в концепте «Kernel trick: неявное линейное отображение в SVM»?

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

Инъективность, сюръективность, биективность

Инъективность, сюръективность, биективность

СвойствоУсловиеЧто значит для матрицыML-смысл
Инъективное (1-к-1)ker(T) = {0}Столбцы линейно независимыРазные входы дают разные выходы - нет коллизий
Сюръективное (на)Im(T) = Wrank = dim(W)Можно достичь любой точки выходного пространства
Биективное (изоморфизм)Оба вышеКвадратная, det ≠ 0Обратимо - информация не теряется
Проекция (P² = P)Im = ker ядра дополненияrank < nПонижение размерности: PCA, pooling

Downsampling, pooling, dropout в инференсе, JPEG-сжатие - всё это **не инъективные** отображения: разные входные векторы могут давать одинаковый выход. Восстановить исходное из сжатого невозможно - информация безвозвратно потеряна.

Что главное в концепте «Инъективность, сюръективность, биективность»?

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

Composition: цепочка слоёв = произведение матриц

Composition: цепочка слоёв = произведение матриц

Если T: V -> W и S: W -> U - линейные отображения, то S ∘ T: V -> U тоже линейное. С матрицами это выглядит так: T соответствует матрице A (m×n) S соответствует матрице B (p×m) S ∘ T соответствует матрице B·A (p×n) ПОРЯДОК ВАЖЕН: (S ∘ T)(x) = S(T(x)) = B·(A·x) = (B·A)·x сначала применяется правая матрица A, потом B ПРАКТИЧЕСКОЙ ФАКТ: В нейросети без активаций: out = Wn · ... · W2 · W1 · x = (Wn · ... · W2 · W1) · x = W_effective · x Вся сеть эквивалентна ОДНОЙ матрице W_effective. Именно поэтому нелинейности (relu, gelu) ОБЯЗАТЕЛЬНЫ.

Линейные отображения в ML-системах

Каждая из этих систем строится на линейных отображениях

КомпонентРольДетали
nn.Linear (PyTorch/JAX)Базовый строительный блок нейросетейT(x) = W·x + b, матрица W задаёт линейное отображение между пространствами
Word2Vec / GloVe embeddingsОтображение слов в векторное пространствоEmbedding matrix E размером |vocab| × d - линейное отображение one-hot вектора в dense embedding
Attention в трансформереQ, K, V проекцииТри линейных отображения: Q=W_q·x, K=W_k·x, V=W_v·x - каждое проецирует в подпространство
SVM с kernel trickНеявное отображение в feature spaceφ: R^n -> H (возможно бесконечномерный Hilbert space), линейный классификатор в H

Что главное в концепте «Composition: цепочка слоёв = произведение матриц»?

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

Практика: теорема о ранге и дефекте

Практика: теорема о ранге и дефекте

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

Почему нейросеть без нелинейных активаций эквивалентна однослойной сети?

- Суперпозиция линейных отображений - снова линейное отображение - W3·W2·W1 - просто одна матрица другого размера - Глубина без нелинейности не добавляет выразительности - Relu, GELU, Tanh разрывают линейность и позволяют аппроксимировать произвольные функции

Линейный слой nn.Linear(512, 256) - это инъективное или сюръективное отображение?

- Максимальный rank = 256 (ограничен выходным пространством) - nullity >= 512 - 256 = 256 (ядро ненулевое) - Отображение НЕ инъективное - разные входы могут давать одинаковый выход - Может быть сюръективным если rank = 256 (матрица 256×512 полного строчного ранга)

Что главное в концепте «Практика: теорема о ранге и дефекте»?

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

Ключевые идеи

  • **T(au + bv) = aT(u) + bT(v)**: две аксиомы линейности, из них всё следует
  • **T(x) = Ax**: любое линейное отображение Rⁿ → Rᵐ - это матрица, столбцы = образы базиса
  • **rank + nullity = n**: информация либо выживает в образе, либо гибнет в ядре
  • **Нейросеть**: forward pass = цепочка линейных отображений + нелинейности между ними
  • **Изоморфизм** (det ≠ 0): информация не теряется, существует обратное отображение
  • **Kernel trick**: неявное линейное отображение в бесконечномерный feature space через ядровые функции

Связанные темы

Линейные отображения - фундамент всего остального

  • Собственные векторы — Eigenvectors - направления, которые линейное отображение только растягивает
  • Обратная матрица — Обратное линейное отображение: A⁻¹ существует iff det(A) ≠ 0
  • Векторные пространства — Ядро и образ - подпространства; теорема о ранге связывает размерности

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

  • calc-17-multivariable
Линейные отображения: каждый слой нейросети под микроскопом

0

1

Войти