Векторная декомпозиция и подпространства: что читает и стирает матрица

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

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

Один из точных способов провести это различие — использовать пространство строк и нулевое пространство матрицы. Они разделяют входное пространство на направления, которые могут влиять на результат, и направления, которые матрица полностью стирает. Это объясняет, как два разных вектора активации могут давать одинаковый результат при одной и той же весовой матрице.

В предыдущей статье мы исследовали, как весовые матрицы преобразуют векторы и почему нейронным сетям нужны нелинейные активации. В этой статье мы разрабатываем линейную алгебру, необходимую для более внимательного изучения этих преобразований.

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

Это обеспечивает основу для будущих статей, в том числе наш эксперимент MNIST: что читает обученный классификатор. Там скрытый слой создает вектор из 128 значений активации для каждого изображения рукописных цифр. Мы идентифицируем 118 независимых направлений, которые игнорирует обученный выходной слой, удаляем соответствующий компонент вектора активации и сохраняем цифровые оценки классификатора до числового округления.

Построение вектора из компонентов

Матрица определяет линейное преобразование входного пространства в выходное. Его форма определяет количество координат в этих пространствах; его записи определяют, куда идет каждый ввод. В нейронной сети входное пространство — это пространство, в котором живут векторы активации из предыдущего слоя. Выходное пространство — это место, где находятся линейно преобразованные векторы до применения какой-либо нелинейной активации.

Чтобы понять влияние матрицы на вектор, нам нужно посмотреть на компоненты вектора, на которые ее можно разложить. Каждый компонент сам по себе является вектором во входном пространстве, а исходный вектор является их суммой. В соответствии с линейностью матрица преобразует каждый компонент отдельно, и полученные векторы в сумме дают тот же результат, что и непосредственное преобразование исходного вектора. Некоторые компоненты могут быть растянуты, укорочены или направлены в другом направлении, в то время как другие могут отображаться в ноль и полностью исчезнуть.

Вектор имеет множество возможных разложений с использованием координатных осей или направлений, пересекающих несколько осей. В механистическом анализе интерпретируемости и представления такие методы, как PCA/SVD, линейные зонды и разреженные автоэнкодеры, помогают определить полезные направления из данных, выявляя структуру, распределенную по множеству записей вектора активации.

Давайте теперь рассмотрим, как построить вектор из компонентов. Каждая опция в виджете ниже создает один и тот же синий вектор h=(5,3,2)h=(5,3,2) с использованием линейной комбинации различных векторов-компонентов: каждая цветная стрелка представляет собой выбранный вектор, масштабированный с помощью коэффициента, и эти векторы-компоненты в сумме дают hh. В первом варианте используются три координатных базисных вектора e1=(1,0,0)e_1=(1,0,0), e2=(0,1,0)e_2=(0,1,0) и e3=(0,0,1)e_3=(0,0,1). Каждый из них направлен вдоль соответствующей оси координат и масштабируется по соответствующей координате hh.

(5, 3, 2) = 5(1, 0, 0) + 3(0, 1, 0) + 2(0, 0, 1)

h₁h₂h₃h0

Давайте более внимательно рассмотрим опцию виджета Coordinate basis, позволяющую различать базисный вектор, его коэффициент и результирующий векторный компонент. Базисный вектор e1e_1 — это единичный вектор, представляющий направление: его длина равна единице. Скаляр 55 сообщает нам, насколько его масштабировать, а 5e1=(5,0,0)5e_1=(5,0,0) — это фактический компонент вектора. Три векторных компонента складываются в наши входные данные:

h=5e1+3e2+2e3=(5,0,0)+(0,3,0)+(0,0,2)=(5,3,2).h=5e_1+3e_2+2e_3=(5,0,0)+(0,3,0)+(0,0,2)=(5,3,2).

Такие координаты, как 55, часто называют скалярными компонентами. В этой статье компонент вектора означает весь масштабированный вектор, например (5,0,0)(5,0,0).

На уровне нейронной сети каждый нейрон выдает одну из этих скалярных координат. Таким образом, коэффициенты виджета 55, 33 и 22 могут быть выходами трех нейронов для одного входа. Каждая активация масштабирует соответствующий базисный вектор координат, давая вектор компонента вдоль этой оси. Вместе эти векторы компонентов образуют вектор активации слоя h=(5,3,2)h=(5,3,2), как показано ниже:

Three neuron outputs, h₁ = 5, h₂ = 3, and h₃ = 2, scale the coordinate basis vectors to form (5, 0, 0), (0, 3, 0), and (0, 0, 2). Their sum is the layer activation vector h = (5, 3, 2).

Например, нейрон 2 выдает скаляр 33. Мы представляем его вклад в вектор слоя как 3e2=(0,3,0)3e_2=(0,3,0). Умножение на e2e_2 и сложение векторов составляющих — это наше математическое описание сборки координат; он не требует дополнительного слоя. Один и тот же hh является выходом этого слоя и входом следующего слоя.

Матрица весов следующего слоя WW преобразует эти векторы компонентов, и результаты складываются в новый вектор: Wh=5We1+3We2+2We3Wh=5We_1+3We_2+2We_3. Это линейная часть вычислений следующего слоя до добавления смещения и применения функции активации.

Выходы нейронов предоставляют один из способов разложения вектора активации слоя. Большая часть анализа представлений и механистической интерпретируемости направлена ​​на «более информативную декомпозицию» — направления или подпространства, которые помогают объяснить, что представляет собой сеть и как она использует эту информацию. Математически возможно бесконечно много разложений, поэтому нам нужны критерии и эксперименты, чтобы выявить полезные.

Отделение направления от величины

Отделение направления от величины помогает нам рассуждать о подпространствах и преобразованиях. Векторы, такие как (1,1,1)(1,1,1) и (2,2,2)(2,2,2), занимают одну и ту же строку, несмотря на разную длину. Представление их направления с помощью единичного вектора позволяет скалярным произведениям напрямую измерять длины проекций со знаком и позволяет нам исследовать, как матрица преобразует это направление отдельно от того, какая его часть присутствует во входных данных.

Чтобы сделать это разделение явным, мы запишем компонент вектора как αd\alpha d: dd — единичный вектор, представляющий выбранное направление, а α\alpha — скаляр со знаком, указывающий, какую его часть следует включить. В нашем примере d=e1d=e_1 и α=5\alpha=5. Поскольку длина никогда не бывает отрицательной, мы используем абсолютное значение ∣α∣|\alpha| для выражения длины компонента. Отрицательный знак в α\alpha означает, что компонент указывает в направлении, противоположном dd.

Как мы можем выразить компонент как скаляр, умноженный на единичный вектор, если мы знаем только его координаты? Для любого ненулевого вектора vv вычислите его длину ∥v∥\|v\| и разделите каждую координату на эту длину. Это нормализация:

d=v∥v∥,α=∥v∥,v=αd.d=\frac{v}{\|v\|}, \qquad \alpha=\|v\|, \qquad v=\alpha d.

Если dd указывает в том же направлении, что и vv, α\alpha становится положительным. Если вместо этого мы сначала зафиксируем единичное направление, компонент, направленный напротив него, будет иметь отрицательный коэффициент.

Мы можем продемонстрировать нормализацию, используя вектор, уже имеющийся в виджете. Одним из векторов в наборе Other basis является v=(1,1,1)v=(1,1,1), который указывает на все три оси координат. Изначально его коэффициент 22, поэтому зеленая составляющая — 2v=(2,2,2)2v=(2,2,2). Эти векторы имеют разную длину, но одинаковое направление.

Чтобы представить их общее направление с помощью единичного вектора, мы могли бы использовать нормализацию L2. Нормализация масштабирует вектор до общей длины 11, сохраняя при этом его направление. Сначала мы вычисляем длину vv, возводя его координаты в квадрат, складывая их и извлекая квадратный корень. Затем мы делим каждую координату на эту длину. Масштабирование всех координат на одну и ту же положительную величину сохраняет направление:

∥v∥=12+12+12=3,d=v∥v∥=13(1,1,1).\|v\|=\sqrt{1^2+1^2+1^2}=\sqrt{3}, \qquad d=\frac{v}{\|v\|}=\frac{1}{\sqrt{3}}(1,1,1).

Результирующий вектор имеет длину ∥d∥=13+13+13=1\|d\|=\sqrt{\tfrac13+\tfrac13+\tfrac13}=1. Таким образом мы можем нормализовать любой ненулевой вектор; нулевой вектор не имеет направления и не может делиться на свою длину.

Умножение на исходную длину восстанавливает базисный вектор: v=3 d=(1,1,1)v=\sqrt{3}\,d=(1,1,1). Таким образом, зеленый компонент виджета можно записать так:

2v=23 d=23(13,13,13)=(2,2,2).2v=2\sqrt{3}\,d =2\sqrt{3}\left(\frac{1}{\sqrt{3}},\frac{1}{\sqrt{3}},\frac{1}{\sqrt{3}}\right) =(2,2,2).

Коэффициент равен 22, когда мы масштабируем vv, и 232\sqrt{3}, когда мы масштабируем единичный вектор dd. Сам компонент остается неизменным. Перемещение первого ползунка масштабирует этот компонент в том же направлении; отрицательное значение меняет его.

От компонентных векторов к подпространствам

До сих пор мы выбрали коэффициенты для построения одного вектора. Сохраняя векторы, которые мы объединяем, фиксированными, мы можем варьировать эти коэффициенты для всех действительных чисел, чтобы построить полный набор векторов. Этот набор является их промежутком и образует подпространство.

В виджете ниже фиксированные векторы (4,1,1)(4,1,1) и (1,2,1)(1,2,1) охватывают плоскость. Зеленые и розовые стрелки показывают их масштабированные компоненты, а синий вектор — их сумму. Когда вы меняете коэффициенты, синий вектор перемещается внутри плоскости, показывая разные элементы одного и того же подпространства. Он не добавляет независимого направления, поскольку полностью построен из двух фиксированных векторов.

1(4, 1, 1) + 1(1, 2, 1) = (5, 3, 2)

xyz(5, 3, 2)0

Попробуйте изменить два коэффициента, помеченные как aa и bb, в виджете выше. Синий вектор перемещается внутри заштрихованной плоскости. Векторы вне этой плоскости не могут быть получены путем объединения двух наших фиксированных векторов, какие бы коэффициенты мы ни выбрали. Выберите Show vector outside the plane, чтобы увидеть один такой пример: оранжевый маркер (0,0,3)(0,0,3).

Затененный участок показывает часть промежутка наших двух фиксированных векторов: бесконечную плоскость, содержащую все их возможные линейные комбинации. Целочисленные ползунки виджета отображают только некоторые из этих комбинаций; позволяя aa и bb принимать любые действительные значения, достигается каждый вектор на плоскости. Каждый результат имеет вид:

a(4,1,1)+b(1,2,1)=(4a+b,  a+2b,  a+b)a(4,1,1)+b(1,2,1)=(4a+b,\;a+2b,\;a+b)

В более общем смысле для фиксированных векторов v1v_1 и v2v_2 мы пишем:

S=span⁡{v1,v2}={av1+bv2:a,b∈R}S=\operatorname{span}\{v_1,v_2\} =\{av_1+bv_2:a,b\in\mathbb R\}

Весь этот диапазон представляет собой подпространство R3\mathbb R^3, окружающего трехмерного векторного пространства. Одно разложение выбирает определенные коэффициенты и создает один вектор; подпространство содержит каждый вектор, который могут построить наши фиксированные остовные векторы. Он содержит нулевой вектор, и масштабирование или добавление векторов внутри него всегда дает другой вектор из того же набора. В нашем примере вся плоскость является подпространством, и каждый синий вектор является его членом.

Наши два независимых вектора охватывают плоскость, проходящую через начало координат. Вектор h=(5,3,2)h=(5,3,2) лежит в этой плоскости, потому что мы можем построить его с помощью a=b=1a=b=1. Но (0,0,3)(0,0,3) недостижима: обнуление первых двух координат приводит к тому, что a=b=0a=b=0 делает нулевой и третью. Чтобы достичь каждого вектора в 3D, нам понадобится третий вектор вне плоскости. Каждый из более ранних виджетов Coordinate basis и Other basis предоставляет по три независимых вектора, поэтому их диапазоны заполняют весь R3\mathbb R^3.

Один и тот же вектор может принадлежать разным подпространствам. Например, (1,0,0)(1,0,0) может быть построен как (1,1,0)+(0,−1,0)(1,1,0)+(0,-1,0), компоненты которого охватывают плоскость xyxy, или как (1,0,1)+(0,0,−1)(1,0,1)+(0,0,-1), компоненты которого охватывают плоскость xzxz. Бесконечно множество плоскостей, проходящих через начало координат, содержат один и тот же вектор.

The vector (1, 0, 0) belongs to two planesThe green xy-plane and pink xz-plane intersect along the x-axis. A blue arrow from the origin to the point (1, 0, 0) lies along this intersection, so the entire vector belongs to both planes. The shaded patches show only part of each infinite plane.xz-planexy-planezyx0(1, 0, 0)

Таким образом, вектор не определяет уникальное большее подпространство. Однако как только мы зафиксируем охватывающие векторы, их диапазон будет определен однозначно. В виджете выше обе плоскости содержат ось xx. Синий вектор и его конечная точка (1,0,0)(1,0,0) лежат в обеих плоскостях. Каждый заштрихованный участок является частью бесконечной плоскости.

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

Исследователи проверили подобные интерпретации экспериментально. Исследование Отелло определило направления, кодирующие состояние доски, и изменило поведение модели, изменив активации вдоль них. Другое исследование обнаружило, что дни и месяцы расположены примерно в кругах внутри двумерных подпространств активации; вмешательства изменили прогнозы по арифметическим задачам на день и месяц. Плоскость — это подпространство, а позиции вокруг круга представляют значения признаков. Эти эксперименты доказывают, что модели используют идентифицированные представления, не подразумевая, что каждая точка в подпространстве имеет значимую интерпретацию.

В приведенных выше примерах мы видели, как два вектора охватывают плоскость и как вектор вне этой плоскости остается недостижимым, независимо от выбранных нами коэффициентов. Теперь интересный вопрос: что определяет геометрию этого промежутка: почему именно плоскость, а не линия или все трехмерное пространство, и что определяет, какую плоскость мы получим? Чтобы ответить на этот вопрос, нам нужно отличить количество координат от количества независимых направлений.

Три координаты не требуют трех независимых направлений

Если мы построим вектор в R3\mathbb R^3 путем сложения векторов компонентов, каждый компонент также будет иметь три координаты. Наличие трех координат говорит нам, что векторы живут в трехмерном пространстве; оно не сообщает нам размерность подпространства, которое они охватывают. Размерность промежутка зависит от того, сколько из выбранных векторов линейно независимы.

Рассмотрим два независимых вектора: v1=(1,0,0)v_1=(1,0,0) и v2=(0,1,0)v_2=(0,1,0). Их комбинации имеют вид (a,b,0)(a,b,0). Поскольку третья координата всегда равна нулю, эти векторы заполняют плоскость xyxy. Они могут построить (3,5,0)(3,5,0), но не (3,5,2)(3,5,2). Теперь замените второй вектор на (0,1,2)(0,1,2):

a(1,0,0)+b(0,1,2)=(a,b,2b)a(1,0,0)+b(0,1,2)=(a,b,2b)

Пролет по-прежнему представляет собой плоскость, теперь наклоненную так, что z=2yz=2y. Например, в нем лежит 3(1,0,0)+5(0,1,2)=(3,5,10)3(1,0,0)+5(0,1,2)=(3,5,10). Двумерное подпространство в трехмерном пространстве не требует, чтобы одна координата была равна нулю. Вектор может иметь три ненулевые координаты и при этом лежать в этой плоскости: третья координата привязана ко второй, оставляя только два независимых выбора.

Сравните плоскую и наклонную плоскости ниже. Изменение коэффициентов перемещает синие векторы в пределах их плоскостей; ни одна конструкция не может достичь отмеченной красной цели.

Flat plane · 2D
v₁ = (1, 0, 0)v₂ = (0, 1, 0)
xyz(3, 5, 0)(3, 5, 2)0
3(1, 0, 0) + 5(0, 1, 0)
= (3, 5, 0)
Tilted plane · 2D
v₁ = (1, 0, 0)v₂ = (0, 1, 2)
xyz(3, 5, 10)(3, 5, 9)0
3(1, 0, 0) + 5(0, 1, 2)
= (3, 5, 10)

Добавление третьего вектора вне этой плоскости, например (0,0,1)(0,0,1), позволяет нам построить любой вектор из R3\mathbb{R}^3, выбрав подходящие коэффициенты:

a(1,0,0)+b(0,1,2)+c(0,0,1)=(a,b,2b+c)a(1,0,0)+b(0,1,2)+c(0,0,1)=(a,b,2b+c)

Теперь мы можем построить любой целевой вектор (x,y,z)(x,y,z). Наша комбинация дает (a,b,2b+c)(a,b,2b+c), поэтому мы выбираем a=xa=x и b=yb=y, чтобы они соответствовали первым двум координатам, затем c=z−2yc=z-2y, чтобы соответствовать третьей. Например, чтобы построить (3,5,2)(3,5,2), выберите a=3a=3, b=5b=5 и c=−8c=-8. Третий вектор, уже находящийся в плоскости, не добавит независимого направления.

Следующий виджет показывает это расширение, начиная с плоской плоскости: добавление (0,0,1)(0,0,1) придает правой конструкции третье независимое направление. С тремя свободно выбранными коэффициентами эта конструкция может достичь любого вектора из R3\mathbb R^3. Начальные значения a=3a=3, b=5b=5 и c=2c=2 достигают целевого значения (3,5,2)(3,5,2). Переместите cc, чтобы изменить его третью координату, не меняя первых двух.

Flat plane · 2D
v₁ = (1, 0, 0)v₂ = (0, 1, 0)
xyz(3, 5, 0)(3, 5, 2)0
3(1, 0, 0) + 5(0, 1, 0)
= (3, 5, 0)
Full space · 3D
v₁ = (1, 0, 0)v₂ = (0, 1, 0)v₃ = (0, 0, 1)
xyz(3, 5, 2)0
3(1, 0, 0) + 5(0, 1, 0) + 2(0, 0, 1)
= (3, 5, 2)

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

Предположим, что три изображения создают векторы активации (1,1,0)(1,1,0), (2,0,2)(2,0,2) и (3,1,2)(3,1,2). Все три могут быть построены из одних и тех же двух фиксированных векторов, v1=(1,1,0)v_1=(1,1,0) и v2=(1,−1,2)v_2=(1,-1,2):

(1,1,0)=v1,(2,0,2)=v1+v2,(3,1,2)=2v1+v2.\begin{aligned} (1,1,0)&=v_1,\\ (2,0,2)&=v_1+v_2,\\ (3,1,2)&=2v_1+v_2. \end{aligned}

Таким образом, все три активации лежат в одной плоскости, несмотря на то, что каждая из них имеет три координаты. Охватывающие векторы остаются фиксированными; только их коэффициенты меняются от изображения к изображению.

Когда мы пропускаем разные изображения через один и тот же слой, каждое изображение создает свой собственный вектор активации. Чтобы проверить, находятся ли эти векторы в одной плоскости, мы спрашиваем, могут ли одни и те же два остовных вектора построить каждый из них. Нахождение плоскости, содержащей вектор активации одного изображения, не говорит нам, лежат ли в ней векторы активации других изображений.

Далее давайте посмотрим, что произойдет, если мы организуем наши векторы построения в виде столбцов матрицы.

Линейные комбинации: построение вывода из столбцов

Представьте себе два набора возможных векторов. Мы называем их входным пространством и выходным пространством. Матрица WW определяет функцию отображения между ними: она принимает входной вектор xx и создает выходной вектор WxWx. Это отображение является линейным преобразованием.

Если мы посмотрим, как WW формирует выходные данные, мы увидим, как каждый столбец вносит свой вклад в вектор компонентов. Каждый столбец находится в выходном пространстве и масштабируется по соответствующей координате xx — выходу одного нейрона предыдущего слоя. Ранее мы видели, как активации нейронов масштабируют базисные векторы координат, чтобы сформировать вектор активации слоя. При передаче на следующий уровень те же самые активации масштабируют столбцы WW, которые служат векторами, которые мы объединяем для построения выходных данных. Сумма этих масштабированных столбцов равна WxWx, что делает результат линейной комбинацией столбцов матрицы.

Записав столбцы как w1,…,wnw_1,\ldots,w_n, а входные координаты как x1,…,xnx_1,\ldots,x_n, мы можем выразить эту конструкцию как:

Wx=x1w1+x2w2+⋯+xnwn.Wx=x_1w_1+x_2w_2+\cdots+x_nw_n.

В нейронной сети WW — это весовая матрица слоя, а xx — вектор активации, предоставленный предыдущим слоем. Каждая координата xix_i масштабирует соответствующий столбец wiw_i, создавая вектор компонента xiwix_iw_i выходных данных.

Виджет ниже следует этой конструкции по одному столбцу за раз. Каждая координата входного сигнала x=(5,3,2)x=(5,3,2) масштабирует соответствующий столбец для создания вектора компонента. Выберите Next column, чтобы проследить, как каждая входная координата масштабирует свой столбец. Соответствующая стрелка выделяет этот шаг, в то время как все три вклада складываются в преобразованный результат Wx=(19,8,2)Wx=(19,8,2).

Scale the matrix columns, then add themInput coordinate x₁ = 5 scales column 1, (2, 1, 0), producing the contribution (10, 5, 0). The three column contributions sum to (19, 8, 2).Component vectorsResultWxInput vector xWeight matrix W5x₁3x₂2x₃w₁210x₁w₁1050w₂110x₂w₂330w₃301x₃w₃602Scale byx₁ = 5Addcolumns1982

5 × (2, 1, 0) = (5 × 2, 5 × 1, 5 × 0) = (10, 5, 0)

Эти компоненты позволяют нам отслеживать, как отдельные входные координаты влияют на результат. Чтобы изучить объект, распределенный по нескольким координатам, мы можем вместо этого разложить входные данные по направлениям, связанным с этим объектом, и изучить, как WW преобразует эти компоненты.

Столбец: каких выходов может достичь матрица?

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

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

В более раннем виджете мы построили один и тот же вектор h=(5,3,2)h=(5,3,2), используя три разных набора векторов компонентов. Теперь рассмотрим каждую конструкцию как матричное преобразование: выбранные нами векторы становятся столбцами WW, их коэффициенты становятся входным вектором xx, а hh — выходным WxWx.

Все три конструкции выдают hh с выбранными коэффициентами, но они не могут все выдавать одинаковый диапазон других выходных данных. Сохраняя каждую матрицу фиксированной и изменяя ее входные данные, мы можем увидеть, какие векторы принадлежат ее пространству столбцов.

Во-первых, давайте начнем с вектора под опцией Coordinate basis. Мы построили hh как 5(1,0,0)+3(0,1,0)+2(0,0,1)5(1,0,0)+3(0,1,0)+2(0,0,1). Три координатных вектора становятся столбцами WW, а коэффициенты масштабирования 5,3,25,3,2 становятся элементами xx:

W=(100010001),x=(532),Wx=(532)W=\begin{pmatrix}1&0&0\\0&1&0\\0&0&1\end{pmatrix}, \qquad x=\begin{pmatrix}5\\3\\2\end{pmatrix}, \qquad Wx=\begin{pmatrix}5\\3\\2\end{pmatrix}

Поскольку WW является единичной матрицей, входные данные остаются неизменными: Wx=x=(5,3,2)Wx=x=(5,3,2).

Входной вектор xx имеет три координаты, поэтому входное пространство — R3\mathbb R^3. Каждая координата масштабирует один столбец WW. Эти три столбца охватывают весь R3\mathbb R^3, поэтому эта матрица может достигать каждого вектора в выходном пространстве.

Давайте теперь рассмотрим вариант Other basis. Строим тот же вектор, что и h=2(1,1,1)+1(1,−1,1)+1(2,2,−1)=(5,3,2)h=2(1,1,1)+1(1,-1,1)+1(2,2,-1)=(5,3,2). Столбцами теперь являются (1,1,1)(1,1,1), (1,−1,1)(1,-1,1) и (2,2,−1)(2,2,-1) с входными коэффициентами 2,1,12,1,1:

W=(1121−1211−1),x=(211),Wx=(532)W=\begin{pmatrix}1&1&2\\1&-1&2\\1&1&-1\end{pmatrix}, \qquad x=\begin{pmatrix}2\\1\\1\end{pmatrix}, \qquad Wx=\begin{pmatrix}5\\3\\2\end{pmatrix}

Входное и выходное пространство по-прежнему имеют вид R3\mathbb R^3. Эти три столбца также независимы, поэтому их линейные комбинации могут создавать каждый выходной вектор. Мы изменили векторы построения и входные коэффициенты, но по-прежнему можем достичь всех R3\mathbb R^3.

Что-то интересное получается, когда мы пробуем вариант Two vectors. Тот же вектор hh теперь строится только с помощью двух векторов построения: h=1(4,1,1)+1(1,2,1)=(5,3,2)h=1(4,1,1)+1(1,2,1)=(5,3,2). Это означает, что наша матрица преобразования имеет только два столбца. Его вход содержит два коэффициента 1,11,1:

W=(411211),x=(11),Wx=(532)W=\begin{pmatrix}4&1\\1&2\\1&1\end{pmatrix}, \qquad x=\begin{pmatrix}1\\1\end{pmatrix}, \qquad Wx=\begin{pmatrix}5\\3\\2\end{pmatrix}

Входное пространство теперь равно R2\mathbb R^2, поскольку мы предоставляем только два коэффициента. Выходное пространство остается R3\mathbb R^3, поскольку каждый выход по-прежнему имеет три координаты: (4a+b,  a+2b,  a+b)(4a+b,\;a+2b,\;a+b). Однако независимых вариантов всего два: aa и bb, хотя результат имеет три координаты. Форма матрицы ограничивает доступное подпространство в выходном пространстве максимум двумя измерениями.

Два выбранных нами вектора построения и, следовательно, соответствующие столбцы матрицы независимы, поэтому они охватывают плоскость, проходящую через начало координат, а их значения определяют, какая это плоскость. В предыдущих примерах столбцы охватывали все трехмерное выходное пространство. В этом случае, имея всего два вектора, мы все равно можем достичь того же вектора h=(5,3,2)h=(5,3,2), но только потому, что он лежит в плоскости, которую они охватывают, — пространстве столбцов матрицы. Векторы за пределами этой плоскости остаются недостижимыми.

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

Вариант виджетаВходное пространство: коэффициенты xxСтолбец: доступные выходные данные
Координатная основаR3\mathbb R^3Все R3\mathbb R^3
Другая основаR3\mathbb R^3Все R3\mathbb R^3
Два вектораR2\mathbb R^2Самолет внутри R3\mathbb R^3

Мы видели, как наличие только двух столбцов ограничивает достижимые выходные данные максимум до плоскости. Интересно, что наличие трех столбцов не гарантирует, что матрица сможет охватить все трехмерное выходное пространство. Столбцы также должны быть линейно независимыми.

В следующей матрице первые два столбца идентичны, поэтому второй столбец не добавляет нового направления. Столбцы c1c_1 и c3c_3 независимы и составляют основу плоскости достижимых выходов:

W=(110001111),c1=(101),c2=(101),c3=(011)W=\begin{pmatrix}1&1&0\\0&0&1\\1&1&1\end{pmatrix}, \qquad c_1=\begin{pmatrix}1\\0\\1\end{pmatrix},\quad c_2=\begin{pmatrix}1\\0\\1\end{pmatrix},\quad c_3=\begin{pmatrix}0\\1\\1\end{pmatrix}

Мы можем математически понять, почему эти три столбца дают результаты только в двух независимых направлениях. Давайте запишем вход как hh, а выход как z=Whz=Wh. Начиная с c2=c1c_2=c_1, первые две входные координаты масштабируют один и тот же вектор-столбец:

z=Wh=h1c1+h2c2+h3c3=(h1+h2)(1,0,1)+h3(0,1,1)z=Wh=h_1c_1+h_2c_2+h_3c_3 =(h_1+h_2)(1,0,1)+h_3(0,1,1)

Если мы допустим s=h1+h2s=h_1+h_2 и t=h3t=h_3, каждый возможный результат будет иметь вид:

s(1,0,1)+t(0,1,1)=(s,t,s+t)s(1,0,1)+t(0,1,1)=(s,t,s+t)

Мы видим, что каждый выход определяется двумя значениями: s=h1+h2s=h_1+h_2 и t=h3t=h_3, причем третья координата всегда равна сумме первых двух. Все векторы с этим отношением образуют плоскость, которая является пространством столбцов матрицы. Размерность зависит от количества независимых направлений, а не от количества столбцов.

Скалярное произведение: построение вывода по одной строке за раз

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

Виджет ниже следует за расчетом по одной строке за раз. Выберите каждую строку, чтобы увидеть, как ее веса получают скалярное произведение со всем входным значением h=(5,3,2)h=(5,3,2), образуя одну координату выходного значения Wh=(19,8,2)Wh=(19,8,2).

Each row reads the whole inputRow 1, (2, 1, 3), takes a dot product with the whole input (5, 3, 2) to produce output coordinate z₁ = 19.InputhWeight matrixWOutputz = Wh2131100015h₁3h₂2h₃19z₁8z₂2z₃Each row reads the whole inputRow 1, (2, 1, 3), takes a dot product with the whole input (5, 3, 2) to produce output coordinate z₁ = 19.InputhWeight matrixWOutputz = Wh2131100015h₁3h₂2h₃19z₁8z₂2z₃

z₁ = 2 × 5 + 1 × 3 + 3 × 2 = 19

Давайте сосредоточимся на первом ряду. Его скалярное произведение на все входные данные дает скаляр 1919:

(2,1,3)⋅(5,3,2)=10+3+6=19.(2,1,3)\cdot(5,3,2)=10+3+6=19.

Линейность позволяет нам выразить это скалярное произведение как сумму вкладов векторов компонентов входных данных. Чтобы увидеть, откуда берутся 1010, 33 и 66, разделите входные данные на компоненты координат:

h=c1+c2+c3,c1=(5,0,0),c2=(0,3,0),c3=(0,0,2).h=c_1+c_2+c_3, \qquad c_1=(5,0,0),\quad c_2=(0,3,0),\quad c_3=(0,0,2).

Для первой строки r=(2,1,3)r=(2,1,3) линейность дает:

r⋅h=r⋅(c1+c2+c3)=r⋅c1+r⋅c2+r⋅c3.r\cdot h=r\cdot(c_1+c_2+c_3)=r\cdot c_1+r\cdot c_2+r\cdot c_3.

Каждый компонент вносит один скалярный вклад в эту выходную координату:

r⋅c1=(2,1,3)⋅(5,0,0)=10,r⋅c2=(2,1,3)⋅(0,3,0)=3,r⋅c3=(2,1,3)⋅(0,0,2)=6.\begin{aligned} r\cdot c_1&=(2,1,3)\cdot(5,0,0)=10,\\ r\cdot c_2&=(2,1,3)\cdot(0,3,0)=3,\\ r\cdot c_3&=(2,1,3)\cdot(0,0,2)=6. \end{aligned}

Их сложение дает r⋅h=10+3+6=19r\cdot h=10+3+6=19, точно такой же результат, как и непосредственное вычисление (2,1,3)⋅(5,3,2)(2,1,3)\cdot(5,3,2).

Повторение этого расчета для каждой строки дает один скалярный результат для каждой строки. Сбор этих результатов дает выходной вектор Wh=(19,8,2)Wh=(19,8,2). Для каждой строки скалярное произведение всех входных данных дает тот же результат, что и сложение скалярных произведений с его компонентами.

Это работает при любом разложении входных данных: если h=v1+v2h=v_1+v_2, то r⋅h=r⋅v1+r⋅v2r\cdot h=r\cdot v_1+r\cdot v_2, даже если компоненты указывают в других направлениях.

Геометрически мы можем спроецировать каждый компонент на одну и ту же линию — направление вектора-строки rr — и добавить эти проекции со знаком. Их сумма равна проекции всего ввода. Компонент, частично направленный вдоль rr, вносит положительный вклад, частично направленный против него - отрицательный, а перпендикулярный компонент - нулевой.

Чтобы наглядно увидеть эти проекции, в следующем виджете используется двухмерный пример с единичной строкой r=(1,0)r=(1,0), направленной вдоль горизонтальной оси. Зеленый вектор c1c_1 и розовый вектор c2c_2 являются двумя составляющими векторами. Синий вектор h=c1+c2h=c_1+c_2 — это объединенный вектор, который они создают.

Пунктирные линии соединяют конечную точку каждого вектора с его проекцией на горизонтальную ось. Цветные стрелки вдоль этой оси показывают спроецированные векторы: зеленые для c1c_1, розовые для c2c_2 и синие для их суммы hh. Эти стрелки проекций могут перекрываться. Проекция, направленная вправо, вносит положительный вклад, направленная влево – отрицательная, а нулевая проекция не дает ничего. Поскольку длина rr равна единице, каждая длина проекции со знаком равна соответствующему скалярному произведению с rr.

Перетащите конечную точку любого компонента или измените его координаты, чтобы увидеть обновление комбинированного вектора и его проекций. Попробуйте Opposite signs, Perpendicular и Cancelling, чтобы увидеть отрицательные, нулевые и отменяющие вклады.

h = (3, 2) + (1, -1) = (4, 1)

Component projections add to the projection of the whole vectorThe fixed unit row r = (1, 0) points along the horizontal line. Components c1 = (3, 2) and c2 = (1, -1) add to h = (4, 1). Their signed projections are 3 and 1, adding to 4. Drag the green or pink endpoint, or focus it and use the arrow keys.-8-6-4-202468yc₁ = (3, 2)c₂ = (1, -1)h = (4, 1)
c₁ = (3, 2)
c₂ = (1, -1)

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

Для направления единичной строки u=r/∥r∥u=r/\|r\| скалярное произведение u⋅cu\cdot c представляет собой длину проекции со знаком компонента cc. Использование rr само по себе умножает эту длину на ∥r∥\|r\|:

u⋅c=∥c∥cos⁡θ,r⋅c=∥r∥ (u⋅c)=∥r∥ ∥c∥cos⁡θ,u\cdot c=\|c\|\cos\theta, \qquad r\cdot c=\|r\|\,(u\cdot c)=\|r\|\,\|c\|\cos\theta,

где θ\theta — угол между компонентом и направлением строки. Для нашей строки r=(2,1,3)r=(2,1,3), длина которой равна 14\sqrt{14}:

  • c1=(5,0,0)c_1=(5,0,0) имеет длину 55 и выравнивание cos⁡θ1=2/14\cos\theta_1=2/\sqrt{14}, что дает вклад 1010.
  • c2=(0,3,0)c_2=(0,3,0) имеет длину 33 и выравнивание cos⁡θ2=1/14\cos\theta_2=1/\sqrt{14}, что дает вклад 33.
  • c3=(0,0,2)c_3=(0,0,2) имеет длину 22 и выравнивание cos⁡θ3=3/14\cos\theta_3=3/\sqrt{14}, что дает вклад 66.

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

Строки и столбцы дают два способа вычисления одного и того же преобразования:

СтолбцыСтроки
Where the vectors liveOutput spaceВходное пространство
Role in multiplicationМасштабируйте и добавляйте, чтобы получить результатКаждый из них требует скалярного произведения для вычисления одной выходной координаты

Пространство строк и пустое пространство: что матрица читает и игнорирует

Начнем с двух векторов (1,0,0)(1,0,0) и (0,1,0)(0,1,0). Они независимы, а их линейные комбинации имеют вид

a(1,0,0)+b(0,1,0)=(a,b,0)a(1,0,0)+b(0,1,0)=(a,b,0)

Их пролет — это плоскость xyxy, все ее векторы имеют форму (a,b,0)(a,b,0), как показано в виджете ниже.

Теперь представьте, что у нас есть синий вектор h=(3,5,2)h=(3,5,2) и мы хотим проверить, лежит ли он в этом подпространстве. Один из способов разложить его на зеленый компонент (1,1,0)(1,1,0) и розовый компонент (2,4,2)(2,4,2).

The rows build vectors within a planeThe input (3, 5, 2) is the sum of (1, 1, 0) in the row space and (2, 4, 2) outside it. The pink component is not perpendicular to the plane and still contributes to the output. The pink component is drawn from the green arrow's tip to the blue arrow's tip. The blue input cannot be built from these rows alone.h₁h₂h₃h = (3, 5, 2)(1, 1, 0)(2, 4, 2)0

Обратите внимание, что зеленая компонента лежит в плоскости, а розовая компонента и синий вектор — вне ее. Зеленый компонент лежит в плоскости, поскольку его можно построить из двух охватывающих его векторов (1,0,0)(1,0,0) и (0,1,0)(0,1,0).

Теперь предположим, что мы используем два фиксированных вектора (1,0,0)(1,0,0) и (0,1,0)(0,1,0) в качестве строк матрицы:

W=(100010)W=\begin{pmatrix}1&0&0\\0&1&0\end{pmatrix}

В этом случае каждая строка представляет собой вектор, который мы можем использовать в линейной комбинации. Вместе эти векторы охватывают подпространство входного пространства, известное как пространство строк. Таким образом, плоскость виджета является пространством строк этой матрицы.

Давайте теперь попробуем другое разложение того же синего вектора, используя зеленый компонент (3,5,0)(3,5,0) и розовый компонент (0,0,2)(0,0,2). Зеленый цвет по-прежнему лежит в плоскости пространства строк, но розовый теперь направлен перпендикулярно ему, как показано в виджете ниже.

The rows build vectors within a planeThe input (3, 5, 2) is the sum of (3, 5, 0) in the row space and (0, 0, 2) outside it. The pink component is perpendicular to the plane and contributes zero to the output. The pink component is drawn from the green arrow's tip to the blue arrow's tip. The blue input cannot be built from these rows alone.h₁h₂h₃h = (3, 5, 2)(3, 5, 0)(0, 0, 2)0

Давайте рассматривать синий вектор hh как входные данные и исследуем, как его компоненты вносят вклад в выходные данные при каждом разложении. Матрица выдает один и тот же результат в обоих случаях, но компоненты в каждом разложении вносят в нее разный вклад.

При первом разложении мы можем вычислить вклад каждого компонента, взяв его скалярное произведение с каждой строкой WW. Каждый результат дает одну координату вклада этого компонента в выходные данные.

Зеленый компонент (1,1,0)(1,1,0)Pink component (2,4,2)(2,4,2)
Скалярное произведение со строкой 1(1,0,0)⋅(1,1,0)=1(1,0,0)\cdot(1,1,0)=1(1,0,0)⋅(2,4,2)=2(1,0,0)\cdot(2,4,2)=2
Скалярное произведение со строкой 2(0,1,0)⋅(1,1,0)=1(0,1,0)\cdot(1,1,0)=1(0,1,0)⋅(2,4,2)=4(0,1,0)\cdot(2,4,2)=4
Вклад в результат(1,1)(1,1)(2,4)(2,4)

Третья координата ни одного компонента не влияет на выходные данные, поскольку обе строки матрицы имеют нулевую третью координату. По линейности вклады зеленого и розового цвета складываются в результат:

Wh=W(1,1,0)+W(2,4,2)=(1,1)+(2,4)=(3,5)Wh=W(1,1,0)+W(2,4,2)=(1,1)+(2,4)=(3,5)

Во втором разложении зеленый (3,5,0)(3,5,0) вносит весь вклад, а розовый (0,0,2)(0,0,2) ничего не дает:

Зеленый компонент (3,5,0)(3,5,0)Pink component (0,0,2)(0,0,2)
Скалярное произведение со строкой 1(1,0,0)⋅(3,5,0)=3(1,0,0)\cdot(3,5,0)=3(1,0,0)⋅(0,0,2)=0(1,0,0)\cdot(0,0,2)=0
Скалярное произведение со строкой 2(0,1,0)⋅(3,5,0)=5(0,1,0)\cdot(3,5,0)=5(0,1,0)⋅(0,0,2)=0(0,1,0)\cdot(0,0,2)=0
Вклад в результат(3,5)(3,5)(0,0)(0,0)

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

Wh=W(3,5,0)+W(0,0,2)=(3,5)+(0,0)=(3,5)Wh=W(3,5,0)+W(0,0,2)=(3,5)+(0,0)=(3,5)

Обратите внимание на разницу между двумя разложениями: первый розовый компонент по-прежнему вносит вклад в результат, а второй ничего не дает. Это происходит потому, что второй розовый компонент перпендикулярен обеим строкам и, следовательно, всему пространству строк. Мы можем видеть это в виджетах и ​​в вычислениях скалярного произведения в таблицах. В первом случае розовый компонент имеет скалярное произведение 22 и 44 с двумя строками, тогда как во втором случае оба скалярных произведения равны нулю. Это показывает, что нахождение за пределами пространства строк не означает, что вектор полностью игнорируется; быть перпендикулярным каждой строке.

Нулевое пространство: входные данные, которые ничего не дают

Мы видели, что второй розовый компонент, (0,0,2)(0,0,2), не вносит никакого вклада, поскольку он перпендикулярен каждой строке. То же самое относится и к каждому вектору (0,0,z)(0,0,z) вдоль оси zz: изменение его длины или изменение направления все равно оставляет оба скалярных произведения равными нулю.

Набор всех входных векторов, которые матрица отображает в ноль, называется ее нулевым пространством. Для матрицы, которую мы использовали в предыдущих разделах, этот набор представляет собой всю ось zz. Первый розовый компонент находится в пустом пространстве; второе целиком лежит в нем.

В обоих случаях нулевой компонент входных данных — (0,0,2)(0,0,2). Вторая декомпозиция явно изолирует его, окрашивая весь компонент пространства строк зеленым цветом. Входные данные имеют множество возможных декомпозиций, но их разделение на компонент пространства строк и компонент нулевого пространства является уникальным.

Таким образом, мы можем взять любую матрицу и входные данные, которые она принимает, и определить, какую часть этих входных данных матрица игнорирует, а какая часть влияет на выходные данные. Существует только один способ разделить входные данные так, чтобы одна часть полностью находилась в пространстве строк, а другая — в пустом пространстве.

Для нашей матрицы и ввода это именно второе разложение, показанное в наших виджетах и таблицах:

(3,5,2)=(3,5,0)⏟row-space component+(0,0,2)⏟null-space component(3,5,2)=\underbrace{(3,5,0)}_{\text{row-space component}}+\underbrace{(0,0,2)}_{\text{null-space component}}

Альтернативная декомпозиция (1,1,0)+(2,4,2)(1,1,0)+(2,4,2) создает тот же входной сигнал, но его второй компонент не полностью находится в пустом пространстве. Для этого примера расчет прост; для общей матрицы такие методы, как SVD, позволяют систематически вычислять разделение.

Вектор отображается в ноль, когда он перпендикулярен каждой строке и, следовательно, каждому вектору в пространстве строк. Нулевое пространство — это перпендикулярное дополнение пространства строк, которое мы пишем как:

Null⁡(W)=Row⁡(W)⊥\operatorname{Null}(W)=\operatorname{Row}(W)^\perp

Символом ⊥\perp обозначаются все векторы, перпендикулярные каждому вектору в этом пространстве. Разделение ввода на эти две части дает:

h=hrow+hnull,Wh=Whrowh=h_{\mathrm{row}}+h_{\mathrm{null}}, \qquad Wh=Wh_{\mathrm{row}}

Итак, Wh=WhrowWh=Wh_{\mathrm{row}} показывает, что на результат влияет только компонент пространства строк. Матрица по-прежнему может менять свою длину и направление или отображать ее в выходное пространство с другим количеством координат.

Левое пустое пространство: перпендикулярно всем возможным выводам

Предположим, что весовая матрица слоя имеет третью строку, равную сумме первых двух строк. Это приводит к ограничению вывода: третья координата всегда равна сумме первых двух. Независимо от того, какие входные данные мы ему даем, он не может выдать (1,2,4)(1,2,4), потому что первые две координаты потребуют, чтобы третья была 33. Левое пустое пространство помогает нам определить подобные ограничения на выходе слоя.

Как мы видели ранее, пространство столбцов содержит все возможные выходные данные. Левое пустое пространство описывает направления, перпендикулярные всем из них. Точно так же, как нулевое пространство перпендикулярно пространству строк во входном пространстве, левое нулевое пространство перпендикулярно пространству столбцов в выходном пространстве.

В нашем предыдущем примере с пространством столбцов каждый вывод имеет форму (s,t,s+t)(s,t,s+t). Третья координата всегда равна сумме первых двух. Вектор q=(−1,−1,1)q=(-1,-1,1) фиксирует это ограничение:

q⋅(s,t,s+t)=−s−t+(s+t)=0q\cdot(s,t,s+t)=-s-t+(s+t)=0

Он лежит в левом пустом пространстве, поскольку перпендикулярен всем возможным выводам. Цель, такая как (0,0,1)(0,0,1), нарушает это ограничение, поэтому никакие входные данные не могут заставить эту матрицу создать ее. Одно только изменение ввода не может исправить это несоответствие.

Это придает левому пустому пространству практическую роль: оно выявляет ограничения на то, что может создать матрица с фиксированным весом. Для слоя линейного прогнозирования оно может сказать нам, что некоторые целевые выходные данные недостижимы даже до того, как мы попытаемся найти входные данные, которые их создают. Эти ограничения применяются к линейному выходу WhWh; добавление смещения сдвигает их на q⋅z=q⋅bq\cdot z=q\cdot b для z=Wh+bz=Wh+b, а последующая нелинейная активация может изменить их дальше.

Важно подчеркнуть, что левое пустое пространство — это не то место, куда отправляются стертые входные данные; эти входы сопоставляются с началом координат. Он описывает ограничения на стороне вывода.

Соединение четырех подпространств вместе

Теперь мы можем соединить четыре пространства в одну картинку. Пространство строк и пустое пространство разделяют входные данные на перпендикулярные компоненты. Матрица отправляет компонент нулевого пространства в ноль и преобразует компонент пространства строк в выходные данные в пространстве столбцов. Левое нулевое пространство перпендикулярно каждому вектору в этом выходном подпространстве.

The four fundamental subspaces: the input h splits into row-space and null-space components. W maps h and its row-space component to the same output Wh, while mapping the null-space component to zero.

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

Давайте теперь исследуем эти отношения в виджете ниже. Он использует входной вектор h=(5,3,2)h=(5,3,2) и матрицу:

W=(110001111)W=\begin{pmatrix}1&1&0\\0&0&1\\1&1&1\end{pmatrix}

Начальный вход h=(5,3,2)h=(5,3,2) находится за пределами как плоскости строки, так и линии нулевого пространства. В каждом из них есть свой компонент. Три ползунка управляют входными координатами h1h_1, h2h_2 и h3h_3. Их изменение меняет вектор, который преобразует матрица, в то время как сама матрица остается неизменной.

Input space · ℝ³

h₁h₂h₃hhrowhnull0

Row space is a plane, Null space is a line

Output space · ℝ³

z₁z₂z₃Wh = Whrow0Whnull = (0, 0, 0)

Column space is a plane, Left null space is a line

Drag either plot to rotate; scroll to zoom. With a plot focused, use the arrow keys to rotate, + and − to zoom, or 0 to reset zoom.

Whole input h(5, 3, 2)→(8, 2, 10)
Row-space component hrow(4, 4, 2)→(8, 2, 10)
Null-space component hnull(1, −1, 0)→(0, 0, 0)

Вот что определяет каждое из четырех подпространств. Параметры aa, bb, dd, ss и tt могут быть любыми действительными числами.

ПодпространствоФормаVectors it containsЧто это значит
Row spaceСамолет(a,a,b)(a,a,b)Первые две входные координаты равны (h1=h2h_1=h_2); третий неограничен.
Нулевое пространствоЛиния(d,−d,0)(d,-d,0)Первые две входные координаты сокращаются, а третья равна нулю. Эти векторы отображаются в ноль.
Колонка пространстваСамолет(s,t,s+t)(s,t,s+t)Третья выходная координата представляет собой сумму первых двух (z3=z1+z2z_3=z_1+z_2).
Left null spaceЛиния(−d,−d,d)(-d,-d,d)Первые две координаты равны, а третья является их отрицательной. Эти векторы перпендикулярны каждому вектору в пространстве столбцов.

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

hrh_r и hnh_n изображения соответствуют hrowh_{\mathrm{row}} и hnullh_{\mathrm{null}} виджета. Первоначально синий вход разделяется на зеленый и розовый компоненты:

(5,3,2)⏟h=(4,4,2)⏟hrow+(1,−1,0)⏟hnull.\underbrace{(5,3,2)}_{h} =\underbrace{(4,4,2)}_{h_{\mathrm{row}}} +\underbrace{(1,-1,0)}_{h_{\mathrm{null}}}.

Стрелки, пересекающие изображение, обозначают применение WW. В виджете и весь ввод, и его зеленый компонент создают (8,2,10)(8,2,10), поэтому их выходные стрелки перекрываются в оранжевой плоскости. Розовый компонент отображается в ноль. Фиолетовая линия с левым пустым пространством перпендикулярна выходной плоскости; это не то место, куда идут стертые данные.

Изменение ввода оставляет четыре подпространства фиксированными.

Давайте теперь используем тот же входной вектор h=(5,3,2)h=(5,3,2) с этой альтернативной матрицей:

W=(110220330)W=\begin{pmatrix}1&1&0\\2&2&0\\3&3&0\end{pmatrix}

Он имеет ту же форму 3×33\times3, но имеет ранг 1: все его строки кратны (1,1,0)(1,1,0). Его пространства строк и столбцов являются линиями, а оба пустых пространства — плоскостями. Начальный ввод находится за пределами как линии пространства строк, так и плоскости нулевого пространства, в каждой из которых есть компонент. Ползунки изменяют входные данные, пока эта матрица остается фиксированной.

Input space · ℝ³

h₁h₂h₃hhrowhnull0

Row space is a line, Null space is a plane

Output space · ℝ³

z₁z₂z₃Wh = Whrow0Whnull = (0, 0, 0)

Column space is a line, Left null space is a plane

Drag either plot to rotate; scroll to zoom. With a plot focused, use the arrow keys to rotate, + and − to zoom, or 0 to reset zoom.

Whole input h(5, 3, 2)→(8, 16, 24)
Row-space component hrow(4, 4, 0)→(8, 16, 24)
Null-space component hnull(1, −1, 2)→(0, 0, 0)

Для этой матрицы четыре подпространства содержат следующие векторы. Опять же, параметрами могут быть любые действительные числа.

ПодпространствоФормаVectors it containsЧто это значит
Row spaceЛиния(a,a,0)(a,a,0)Первые две входные координаты равны, а третья равна нулю.
Нулевое пространствоСамолет(d,−d,b)(d,-d,b)Первые две входные координаты отменяются (h1+h2=0h_1+h_2=0); третий неограничен. Эти векторы отображаются в ноль.
Колонка пространстваЛиния(s,2s,3s)(s,2s,3s)Вторая и третья выходные координаты в два и три раза больше первой.
Left null spaceСамолет(−2a−3b,a,b)(-2a-3b,a,b)Координаты удовлетворяют z1+2z2+3z3=0z_1+2z_2+3z_3=0. Эти векторы перпендикулярны направлению пространства столбцов (1,2,3)(1,2,3).

Здесь изменение h3h_3 оставляет результат неизменным: третье направление координат лежит в нулевом пространстве. В выходные данные влияет только компонент, расположенный вдоль зеленой линии пространства между строками; каждый вывод лежит на оранжевой линии столбца.

Ранг матрицы и размерности четырех подпространств

Последнее понятие, на которое нам нужно обратить внимание, — это ранг матрицы. Мы видели, что матрицы одинаковой формы могут иметь разные размеры подпространства. Ранг сообщает нам, сколько независимых направлений сохраняет матрица, и вместе с ее формой определяет размеры всех четырех подпространств.

Для матрицы со строками mm и столбцами nn столбцы nn определяют входное пространство Rn\mathbb R^n, а строки mm определяют выходное пространство Rm\mathbb R^m. Это размеры полных входных и выходных пространств, определяемые формой матрицы.

Каждая матрица имеет свойство rank rr, которое определяет общую размерность ее пространств строк и столбцов: сколько независимых направлений охватывают строки и столбцы. Эти два пространства всегда имеют одинаковую размерность, даже если полные входные и выходные пространства имеют разные размеры.

Аналогично, максимальное количество линейно независимых строк всегда равно максимальному количеству линейно независимых столбцов. Ранг не может превышать ни количества строк, ни количества столбцов, формально r≤min⁡(m,n)r\leq\min(m,n).

Рассмотрим нашу предыдущую матрицу 2×32\times3:

W=(100010)W=\begin{pmatrix}1&0&0\\0&1&0\end{pmatrix}

Его форма описывает преобразование трех входных координат в две выходные: 3→23\to2. Две его строки независимы, поэтому его ранг равен 2. Пространство строк — это плоскость xyxy внутри R3\mathbb R^3, состоящая из векторов (a,b,0)(a,b,0). Пространство столбцов представляет собой все пространство R2\mathbb R^2, состоящее из векторов (a,b)(a,b).

Следовательно, пространства строк и столбцов имеют общую размерность, равную двум, хотя полные входные и выходные пространства имеют разные измерения. Пространство строк по-прежнему содержит трехкоординатные векторы; только две координаты могут изменяться независимо. В пространстве столбцов эти две независимые координаты заполняют все выходное пространство.

Two independent directions on each side → rank(W) = 2
Input space · ℝ³
The row space is a plane inside 3D.
Two independent rows span a plane in three dimensionsThe rows (1, 0, 0) and (0, 1, 0) span the horizontal h1 h2 plane. The vertical h3 axis is the null space. The row space has dimension two, although the input has three coordinates.h₃ · null spaceerased by W0r₁r₂h₁h₂
Row-space dimension: 2
Null-space dimension: 3 − 2 = 1
Output space · ℝ²
The column space fills all of 2D.
Two independent columns span the entire two-dimensional output spaceThe columns (1, 0) and (0, 1) span all of R2. The third column is (0, 0), marked at the origin, and adds no direction. The column space has dimension two. Its perpendicular complement, the left null space, contains only zero.c₁c₂c₃ = 0z₁z₂
Column-space dimension: 2
Left-null-space dimension: 2 − 2 = 0

Заштрихованные плоскости имеют одинаковое измерение, но живут в разных окружающих пространствах. Метки r1,r2r_1,r_2 обозначают строки входного пространства R3\mathbb R^3; c1,c2,c3c_1,c_2,c_3 обозначает столбцы в выходном пространстве R2\mathbb R^2 с c3=0c_3=0 в начале координат. Затенение показывает часть каждой бесконечной плоскости.

В таблице сравниваются полные входные и выходные пространства с пространствами строк и столбцов для этой матрицы:

КосмосГде он живетЕго размер
Входное пространствоR3\mathbb R^33
Row spaceПлоскость внутри R3\mathbb R^3: векторы (a,b,0)(a,b,0)2
Output spaceR2\mathbb R^22
Колонка пространстваВсе R2\mathbb R^2: векторы (a,b)(a,b)2

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

(100010)⏟W(h1h2h3)=(h1h2).\underbrace{\begin{pmatrix}1&0&0\\0&1&0\end{pmatrix}}_{W} \begin{pmatrix}h_1\\h_2\\h_3\end{pmatrix} =\begin{pmatrix}h_1\\h_2\end{pmatrix}.

Мы можем записать это как W(h1,h2,h3)=(h1,h2)W(h_1,h_2,h_3)=(h_1,h_2), используя кортеж как сокращение вектора-столбца. Например, и (5,3,2)(5,3,2), и (5,3,99)(5,3,99) соответствуют (5,3)(5,3). Компонент пространства строк (a,b,0)(a,b,0) отображается в (a,b)(a,b), а компонент нулевого пространства (0,0,c)(0,0,c) отображается в ноль.

Это оставляет на входе одно направление нулевого пространства: третью ось координат. На выходе пространство столбца уже заполняет все R2\mathbb R^2, поэтому его перпендикулярное дополнение — левое нулевое пространство — содержит только нулевой вектор и имеет нулевую размерность.

Тот же учет размерностей работает для любой матрицы m×nm\times n ранга rr: каждое пространство строк и столбцов имеет размерность rr, нулевое пространство имеет размерность n−rn-r, а левое нулевое пространство имеет размерность m−rm-r.

Форма устанавливает предел; записи определяют ранг. Другая матрица 2×32\times3 может иметь ранг 1. Ее полные входные и выходные пространства по-прежнему будут R3\mathbb R^3 и R2\mathbb R^2, но ее пространства строк и столбцов будут строками. Тогда его нулевое пространство будет иметь размерность 3−1=23-1=2, а его левое нулевое пространство будет иметь размерность 2−1=12-1=1.

Просмотр изображения

Масштаб: жест щипка или + / −. Перемещение: перетаскивание или стрелки. Esc — закрыть.