Линейная алгебра
Линейные отображения: каждый слой нейросети под микроскопом
Каждый слой нейросети - это линейное отображение, за которым следует нелинейная активация. Понять линейные отображения - значит понять, что именно делает матрица весов с пространством признаков: сжимает, поворачивает, проецирует. Это геометрический взгляд на то, почему нейросети работают.
- Нейросеть: матрица 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) = W | rank = 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
- Векторные пространства — Ядро и образ - подпространства; теорема о ранге связывает размерности