Rozkład wektorów i podprzestrzenie: co matryca czyta i kasuje

Jednym z najbardziej użytecznych sposobów oglądania wektora jest kombinacja wektorów składowych. Ta perspektywa pomaga nam zrozumieć transformacje macierzy. Zamiast pytać tylko, co macierz robi z całym wektorem wejściowym, możemy zapytać, co robi z każdym składnikiem. Ponieważ transformacja jest liniowa, przekształcone składowe dają taki sam wynik, jak transformacja całego wektora. Niektóre komponenty mogą silnie wpływać na wynik, niektóre mogą zostać osłabione lub przekierowane, a niektóre mogą zostać całkowicie zignorowane.

W przypadku sieci neuronowych ta perspektywa jest szczególnie przydatna, ponieważ wektory aktywacji często zawierają wiele rodzajów informacji jednocześnie. Konkretna macierz wag niekoniecznie wykorzystuje wszystkie te informacje. Zrozumienie transformacji staje się zatem częściowo kwestią określenia, które kierunki w przestrzeni aktywacji mają znaczenie dla matrycy, a które nie.

Jednym z dokładnych sposobów dokonania tego rozróżnienia jest wykorzystanie przestrzeni wierszy i przestrzeni zerowej macierzy. Dzielą przestrzeń wejściową na kierunki, które mogą mieć wpływ na wynik i kierunki, które matryca całkowicie wymazuje. To wyjaśnia, w jaki sposób dwa różne wektory aktywacji mogą dać dokładnie taki sam wynik w ramach tej samej macierzy wag.

W poprzednim artykule zbadaliśmy, w jaki sposób macierze wag przekształcają wektory i dlaczego sieci neuronowe wymagają nieliniowych aktywacji. W tym artykule rozwijamy algebrę liniową potrzebną do bliższego przyjrzenia się tym przekształceniom.

Najpierw przyjrzymy się, jak można budować wektory z innych wektorów, dlaczego ten sam wektor można rozłożyć w różnych kierunkach oraz w jaki sposób kombinacje liniowe i iloczyny skalarne pomagają nam zrozumieć transformację. Następnie przestudiujemy cztery podstawowe podprzestrzenie macierzy — jej przestrzeń wierszową, przestrzeń zerową, przestrzeń kolumnową i lewą przestrzeń zerową — i wykorzystamy je do zrozumienia, które składowe wejściowe determinują wynik, a które macierz kasuje. Eksperyment towarzyszący wprowadza te podstawy w życie poprzez konstruowanie i testowanie projekcji.

Stanowi to podstawę dla przyszłych artykułów, w tym naszego eksperymentu MNIST: co czyta przeszkolony klasyfikator. Tam ukryta warstwa tworzy wektor 128 wartości aktywacji dla każdego odręcznego obrazu cyfrowego. Identyfikujemy 118 niezależnych kierunków, które wyszkolona warstwa wyjściowa ignoruje, usuwamy odpowiedni składnik wektora aktywacji i zachowujemy wyniki cyfr klasyfikatora aż do zaokrąglenia liczbowego.

Budowanie wektora z komponentów

Macierz definiuje liniową transformację z przestrzeni wejściowej do przestrzeni wyjściowej. Jego kształt określa liczbę współrzędnych w tych przestrzeniach; jego wpisy określają, dokąd trafia każde wejście. W sieci neuronowej przestrzeń wejściowa to przestrzeń, w której żyją wektory aktywacji z warstwy poprzedniej. Przestrzeń wyjściowa to miejsce, w którym żyją wektory przekształcone liniowo, zanim zostanie zastosowana jakakolwiek aktywacja nieliniowa.

Aby zrozumieć wpływ macierzy na wektor, musimy przyjrzeć się składowym wektora, na które można ją rozłożyć. Każdy składnik sam w sobie jest wektorem w przestrzeni wejściowej, a wektor pierwotny jest ich sumą. Dzięki liniowości macierz przekształca każdy składnik osobno, a wynikowe wektory dają taki sam wynik, jak bezpośrednie przekształcenie pierwotnego wektora. Niektóre komponenty mogą zostać rozciągnięte, skrócone lub wysłane w innym kierunku, podczas gdy inne mogą zostać odwzorowane na zero i całkowicie zniknąć.

Wektor ma wiele możliwych rozkładów przy użyciu osi współrzędnych lub kierunków przecinających kilka osi. W mechanistycznej interpretacji i analizie reprezentacji techniki takie jak PCA/SVD, sondy liniowe i rzadkie autoenkodery pomagają zidentyfikować przydatne kierunki na podstawie danych, ujawniając strukturę rozłożoną na wiele wpisów wektora aktywacji.

Przyjrzyjmy się teraz, jak zbudować wektor ze składników. Każda opcja w poniższym widżecie tworzy ten sam niebieski wektor h=(5,3,2)h=(5,3,2) przy użyciu liniowej kombinacji różnych wektorów składowych: każda kolorowa strzałka jest wybranym wektorem przeskalowanym przez współczynnik, a te wektory składowe sumują się do hh. Pierwsza opcja wykorzystuje trzy wektory bazowe współrzędnych e1=(1,0,0)e_1=(1,0,0), e2=(0,1,0)e_2=(0,1,0) i e3=(0,0,1)e_3=(0,0,1). Każdy wskazuje wzdłuż odpowiedniej osi współrzędnych i jest skalowany przez odpowiednią współrzędną hh.

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

h₁h₂h₃h0

Przyjrzyjmy się bliżej opcji Coordinate basis widżetu, aby rozróżnić wektor bazowy, jego współczynnik i wynikową składową wektora. Wektor bazowy e1e_1 jest wektorem jednostkowym reprezentującym kierunek: ma długość jeden. Skalar 55 mówi nam, jak bardzo należy go skalować, a 5e1=(5,0,0)5e_1=(5,0,0) jest rzeczywistym składnikiem wektorowym. Na nasze dane wejściowe składają się trzy składowe wektorów:

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).

Współrzędne takie jak 55 są często nazywane składnikami skalarnymi. W tym artykule składnik wektora oznacza cały przeskalowany wektor, taki jak (5,0,0)(5,0,0).

W warstwie sieci neuronowej każdy neuron generuje jedną z tych współrzędnych skalarnych. Współczynniki widżetu 55, 33 i 22 mogą zatem stanowić wyjścia trzech neuronów dla jednego wejścia. Każda aktywacja skaluje odpowiedni wektor bazowy współrzędnych, dając wektor składowy wzdłuż tej osi. Razem te wektory składowe tworzą wektor aktywacji warstwy h=(5,3,2)h=(5,3,2), jak pokazano poniżej:

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).

Na przykład neuron 2 wyprowadza wartość skalarną 33. Reprezentujemy jego wkład w wektor warstwy jako 3e2=(0,3,0)3e_2=(0,3,0). Mnożenie przez e2e_2 i dodawanie wektorów składowych to nasz matematyczny opis składania współrzędnych; nie wymaga dodatkowej warstwy. To samo hh jest wyjściem tej warstwy i wejściem następnej warstwy.

Macierz wag następnej warstwy WW przekształca te wektory składowe, a wyniki sumują się do nowego wektora: Wh=5We1+3We2+2We3Wh=5We_1+3We_2+2We_3. Jest to liniowa część obliczeń następnej warstwy, przed dodaniem odchylenia i zastosowaniem funkcji aktywacji.

Wyjścia neuronów zapewniają jeden ze sposobów rozkładu wektora aktywacji warstwy. Duża część analizy reprezentacji i interpretacji mechanistycznej ma na celu bardziej informatywną dekompozycję – kierunki lub podprzestrzenie, które pomagają wyjaśnić, co reprezentuje sieć i jak wykorzystuje te informacje. Matematycznie możliwych jest nieskończenie wiele rozkładów, dlatego potrzebujemy kryteriów i eksperymentów, aby zidentyfikować te przydatne.

Oddzielenie kierunku od wielkości

Oddzielenie kierunku od wielkości pomaga nam zrozumieć podprzestrzenie i transformacje. Wektory takie jak (1,1,1)(1,1,1) i (2,2,2)(2,2,2) obejmują tę samą linię pomimo różnych długości. Reprezentowanie ich kierunku za pomocą wektora jednostkowego pozwala iloczynom skalarnym bezpośrednio mierzyć długości projekcji ze znakiem i pozwala nam sprawdzić, w jaki sposób macierz przekształca ten kierunek niezależnie od tego, jaka część jest obecna na wejściu.

Aby wyraźnie podkreślić tę separację, zapisujemy składową wektora jako αd\alpha d: dd jest wektorem jednostkowym reprezentującym wybrany kierunek, a α\alpha jest skalarem ze znakiem określającym, ile z niego należy uwzględnić. W naszym przykładzie d=e1d=e_1 i α=5\alpha=5. Ponieważ długość nigdy nie jest ujemna, do wyrażenia długości komponentu używamy wartości bezwzględnej ∣α∣|\alpha|. Znak ujemny w α\alpha oznacza, że ​​komponent jest skierowany w kierunku przeciwnym do dd.

Jak wyrazić składnik jako skalar pomnożony przez wektor jednostkowy, jeśli znamy tylko jego współrzędne? Dla dowolnego niezerowego wektora vv oblicz jego długość ∥v∥\|v\| i podziel każdą współrzędną przez tę długość. To jest normalizacja:

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

Wybór dd tak, aby wskazywał ten sam kierunek co vv, powoduje, że α\alpha jest dodatni. Jeśli zamiast tego najpierw ustalimy kierunek jednostkowy, składowa skierowana przeciwko niemu będzie miała współczynnik ujemny.

Możemy zademonstrować normalizację przy użyciu wektora znajdującego się już w widżecie. Jednym z wektorów w zbiorze Other basis jest v=(1,1,1)v=(1,1,1), który wskazuje na wszystkie trzy osie współrzędnych. Początkowo jego współczynnik wynosi 22, więc zielony składnik to 2v=(2,2,2)2v=(2,2,2). Wektory te mają różną długość, ale ten sam kierunek.

Aby przedstawić ich wspólny kierunek za pomocą wektora jednostkowego, moglibyśmy użyć normalizacji L2. Normalizacja skaluje wektor do całkowitej długości 11, zachowując jego kierunek. Najpierw obliczamy długość vv, podnosząc jego współrzędne do kwadratu, dodając je i biorąc pierwiastek kwadratowy. Następnie dzielimy każdą współrzędną przez tę długość. Skalowanie wszystkich współrzędnych o tę samą wartość dodatnią zachowuje kierunek:

∥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).

Powstały wektor ma długość ∥d∥=13+13+13=1\|d\|=\sqrt{\tfrac13+\tfrac13+\tfrac13}=1. W ten sposób możemy znormalizować dowolny niezerowy wektor; wektor zerowy nie ma kierunku i nie można go podzielić przez jego długość.

Mnożenie przez pierwotną długość rekonstruuje wektor bazowy: v=3 d=(1,1,1)v=\sqrt{3}\,d=(1,1,1). Zielony komponent widżetu można zatem zapisać jako:

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).

Współczynnik wynosi 22, gdy skalujemy vv, ale 232\sqrt{3}, gdy skalujemy wektor jednostkowy dd. Sam komponent pozostaje niezmieniony. Przesunięcie pierwszego suwaka powoduje skalowanie komponentu w tym samym kierunku; wartość ujemna odwraca to.

Od wektorów składowych do podprzestrzeni

Jak dotąd wybraliśmy współczynniki do zbudowania pojedynczego wektora. Zachowując stałe wektory, które łączymy, możemy różnicować te współczynniki względem wszystkich liczb rzeczywistych, aby zbudować cały zbiór wektorów. Ten zbiór jest ich rozpiętością i tworzy podprzestrzeń.

W poniższym widżecie stałe wektory (4,1,1)(4,1,1) i (1,2,1)(1,2,1) rozciągają się na płaszczyznę. Zielone i różowe strzałki pokazują ich przeskalowane składniki, a niebieski wektor to ich suma. Gdy zmieniasz współczynniki, niebieski wektor porusza się w płaszczyźnie, pokazując różnych członków tej samej podprzestrzeni. Nie dodaje żadnego niezależnego kierunku, ponieważ jest zbudowany w całości z dwóch ustalonych wektorów.

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

xyz(5, 3, 2)0

Spróbuj zmienić dwa współczynniki, oznaczone aa i bb, w powyższym widżecie. Niebieski wektor porusza się w zacienionej płaszczyźnie. Wektorów spoza tej płaszczyzny nie można osiągnąć poprzez połączenie naszych dwóch ustalonych wektorów, niezależnie od tego, jakie współczynniki wybierzemy. Wybierz Show vector outside the plane, aby wyświetlić jeden z takich przykładów: pomarańczowy znacznik (0,0,3)(0,0,3).

Zacieniowana plama pokazuje część rozpiętości naszych dwóch ustalonych wektorów: nieskończonej płaszczyzny zawierającej wszystkie możliwe kombinacje liniowe. Suwaki liczb całkowitych widżetu pokazują tylko niektóre z tych kombinacji; zezwolenie aa i bb na przyjmowanie dowolnych wartości rzeczywistych dociera do każdego wektora na płaszczyźnie. Każdy wynik ma postać:

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)

Mówiąc bardziej ogólnie, dla wektorów stałych v1v_1 i v2v_2 piszemy:

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\}

Cały ten rozpiętość jest podprzestrzenią R3\mathbb R^3, otaczającej trójwymiarowej przestrzeni wektorowej. Jedna dekompozycja wybiera określone współczynniki i tworzy jeden wektor; podprzestrzeń zawiera każdy wektor, jaki mogą zbudować nasze stałe wektory rozpinające. Zawiera wektor zerowy, a skalowanie lub dodawanie w nim wektorów zawsze daje inny wektor w tym samym zestawie. W naszym przykładzie cała płaszczyzna jest podprzestrzenią, a każdy niebieski wektor jest jej elementem.

Nasze dwa niezależne wektory obejmują płaszczyznę przechodzącą przez początek układu współrzędnych. Wektor h=(5,3,2)h=(5,3,2) leży w tej płaszczyźnie, ponieważ możemy go zbudować za pomocą a=b=1a=b=1. Ale (0,0,3)(0,0,3) jest nieosiągalny: zerowanie pierwszych dwóch współrzędnych wymusza a=b=0a=b=0, co również daje trzecie zero. Aby dotrzeć do każdego wektora w 3D, potrzebowalibyśmy trzeciego wektora poza płaszczyzną. Każdy z elementów Coordinate basis i Other basis wcześniejszych widżetów udostępnia trzy niezależne wektory, więc ich rozpiętości wypełniają cały R3\mathbb R^3.

Ten sam wektor może należeć do różnych podprzestrzeni. Na przykład (1,0,0)(1,0,0) można zbudować jako (1,1,0)+(0,−1,0)(1,1,0)+(0,-1,0), którego komponenty rozciągają się na płaszczyznę xyxy, lub jako (1,0,1)+(0,0,−1)(1,0,1)+(0,0,-1), których komponenty rozciągają się na płaszczyznę xzxz. Nieskończenie wiele płaszczyzn przechodzących przez początek układu współrzędnych zawiera ten sam wektor.

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)

Zatem wektor nie wyznacza unikalnej większej podprzestrzeni. Kiedy jednak ustalimy wektory rozpinające, ich rozpiętość jest jednoznacznie określona. W powyższym widżecie obie płaszczyzny zawierają oś xx. Niebieski wektor i jego punkt końcowy (1,0,0)(1,0,0) leżą w obu płaszczyznach. Każda zacieniona plama jest częścią nieskończonej płaszczyzny.

Podprzestrzenie umożliwiają nam badanie struktury w reprezentacjach sieci neuronowych. Podprzestrzeń może być powiązana z cechą lub grupą powiązanych cech: jej wektory rozpinające wyznaczają kierunki, wzdłuż których reprezentacja może się zmieniać, a zmiana ich współczynników tworzy komponenty, które mogą kodować różne wartości cech. Jednakże wektory rozciągające się na podprzestrzeń niekoniecznie reprezentują oddzielne cechy, takie jak kolor lub kształt. Potrzebujemy eksperymentów, aby dowiedzieć się, jakie informacje, jeśli w ogóle, reprezentują.

Naukowcy przetestowali takie interpretacje eksperymentalnie. Badanie Othello zidentyfikowało kierunki kodujące stan płytki i zmieniło zachowanie modelu poprzez modyfikację aktywacji wzdłuż nich. W innym badanie stwierdzono, że dni i miesiące są ułożone w przybliżeniu w okręgi w dwuwymiarowych podprzestrzeniach aktywacji; interwencje zmieniły prognozy dotyczące dziennych i miesięcznych zadań arytmetycznych. Płaszczyzna jest podprzestrzenią, natomiast pozycje wokół okręgu reprezentują wartości cech. Eksperymenty te dostarczają dowodów na to, że modele wykorzystują zidentyfikowane reprezentacje, nie sugerując jednak, że każdy punkt w podprzestrzeni ma znaczącą interpretację.

W powyższych przykładach widzieliśmy, jak dwa wektory rozciągają się na płaszczyznę i jak wektor znajdujący się poza tą płaszczyzną pozostaje nieosiągalny, niezależnie od wybranych przez nas współczynników. Teraz interesującym pytaniem jest to, co determinuje geometrię tego rozpiętości: dlaczego płaszczyzna, a nie linia lub cała przestrzeń 3D, i co decyduje o tym, którą płaszczyznę otrzymamy? Aby odpowiedzieć na to pytanie, musimy rozróżnić liczbę współrzędnych od liczby niezależnych kierunków.

Trzy współrzędne nie wymagają trzech niezależnych kierunków

Jeśli zbudujemy wektor w R3\mathbb R^3 poprzez dodanie wektorów składowych, każdy komponent ma również trzy współrzędne. Posiadanie trzech współrzędnych mówi nam, że wektory żyją w przestrzeni trójwymiarowej; nie mówi nam wymiaru podprzestrzeni, którą obejmują. Wymiar rozpiętości zależy od tego, ile wybranych wektorów jest liniowo niezależnych.

Rozważmy dwa niezależne wektory, v1=(1,0,0)v_1=(1,0,0) i v2=(0,1,0)v_2=(0,1,0). Ich kombinacje mają postać (a,b,0)(a,b,0). Ponieważ trzecia współrzędna ma zawsze wartość zero, wektory te wypełniają płaszczyznę xyxy. Mogą zbudować (3,5,0)(3,5,0), ale nie (3,5,2)(3,5,2). Teraz zamień drugi wektor na (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)

Rozpiętość jest nadal płaska, teraz pochylona tak, że z=2yz=2y. Leży w nim na przykład 3(1,0,0)+5(0,1,2)=(3,5,10)3(1,0,0)+5(0,1,2)=(3,5,10). Dwuwymiarowa podprzestrzeń w przestrzeni trójwymiarowej nie wymaga, aby jedna współrzędna była równa zero. Wektor może mieć trzy niezerowe współrzędne i nadal leżeć w tej płaszczyźnie: trzecia współrzędna jest powiązana z drugą, pozostawiając tylko dwie niezależne możliwości wyboru.

Porównaj poniższe płaszczyzny płaskie i nachylone. Zmiana współczynników przesuwa niebieskie wektory w ich płaszczyznach; żadna konstrukcja nie może dotrzeć do zaznaczonego na czerwono celu.

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)

Dodanie trzeciego wektora spoza tej płaszczyzny, takiego jak (0,0,1)(0,0,1), pozwala nam zbudować dowolny wektor w R3\mathbb{R}^3, wybierając odpowiednie współczynniki:

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)

Możemy teraz zbudować dowolny wektor docelowy (x,y,z)(x,y,z). Nasza kombinacja daje (a,b,2b+c)(a,b,2b+c), więc wybieramy a=xa=x i b=yb=y, aby dopasować pierwsze dwie współrzędne, a następnie c=z−2yc=z-2y, aby dopasować trzecią. Na przykład, aby zbudować (3,5,2)(3,5,2), wybierz a=3a=3, b=5b=5 i c=−8c=-8. Trzeci wektor znajdujący się już na płaszczyźnie nie dodałby niezależnego kierunku.

Następny widżet pokazuje to rozwinięcie, zaczynając od płaskiej płaszczyzny: dodanie (0,0,1)(0,0,1) nadaje konstrukcji prawej trzeci niezależny kierunek. Dzięki trzem dowolnie wybranym współczynnikom konstrukcja ta może osiągnąć dowolny wektor w R3\mathbb R^3. Wartości początkowe a=3a=3, b=5b=5 i c=2c=2 osiągają wartość docelową (3,5,2)(3,5,2). Przesuń cc, aby zmienić trzecią współrzędną bez zmiany dwóch pierwszych.

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)

Z punktu widzenia analizy reprezentacji wspólna podprzestrzeń, w tym przypadku płaszczyzna, może nam coś powiedzieć o zbiorze reprezentacji. Aby połączyć tę geometrię z siecią neuronową, zastanów się, co się stanie, gdy przetworzy ona kilka różnych danych wejściowych. Możemy zebrać wektory aktywacji z tej samej warstwy do macierzy aktywacji, z jednym wejściem w wierszu i jednym neuronem w kolumnie. Analiza tej macierzy może ujawnić, czy zebrane aktywacje leżą we wspólnej podprzestrzeni niższego wymiaru.

Załóżmy, że trzy obrazy dają wektory aktywacji (1,1,0)(1,1,0), (2,0,2)(2,0,2) i (3,1,2)(3,1,2). Wszystkie trzy można zbudować z tych samych dwóch stałych wektorów, v1=(1,1,0)v_1=(1,1,0) i 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}

Zatem wszystkie trzy aktywacje leżą w tej samej płaszczyźnie, mimo że każda ma trzy współrzędne. Wektory rozpinające pozostają stałe; tylko ich współczynniki zmieniają się z obrazu na obraz.

Kiedy przepuszczamy różne obrazy przez tę samą warstwę, każdy obraz tworzy swój własny wektor aktywacji. Aby sprawdzić, czy te wektory mają wspólną płaszczyznę, zadajemy pytanie, czy te same dwa wektory rozpinające mogą zbudować każdy z nich. Znalezienie płaszczyzny zawierającej wektor aktywacji jednego obrazu nie mówi nam, czy wektory aktywacji innych obrazów również się w niej znajdują.

Następnie zobaczmy, co się stanie, gdy zorganizujemy nasze wektory konstrukcyjne jako kolumny macierzy.

Kombinacje liniowe: budowanie wyników z kolumn

Wyobraź sobie dwa zestawy możliwych wektorów. Nazywamy je przestrzenią wejściową i przestrzenią wyjściową. Macierz WW definiuje funkcję odwzorowującą pomiędzy nimi: pobiera wektor wejściowy xx i tworzy wektor wyjściowy WxWx. To odwzorowanie jest transformacją liniową.

Jeśli przyjrzymy się, jak WW buduje dane wyjściowe, możemy zobaczyć, w jaki sposób każda kolumna wnosi wektor składowy. Każda kolumna leży w przestrzeni wyjściowej i jest skalowana według odpowiedniej współrzędnej xx — wyjścia jednego neuronu w poprzedniej warstwie. Widzieliśmy wcześniej, jak aktywacje neuronów skalują wektory bazowe współrzędnych, tworząc wektor aktywacji warstwy. Po przejściu do następnej warstwy te same aktywacje skalują kolumny WW, które służą jako wektory, które łączymy w celu zbudowania wyniku. Te skalowane kolumny sumują się do WxWx, co daje wynik liniową kombinację kolumn macierzy.

Zapisując kolumny jako w1,…,wnw_1,\ldots,w_n i współrzędne wejściowe jako x1,…,xnx_1,\ldots,x_n, możemy wyrazić tę konstrukcję jako:

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

W sieci neuronowej WW jest macierzą wag warstwy, a xx jest wektorem aktywacji dostarczonym przez poprzednią warstwę. Każda współrzędna xix_i skaluje odpowiednią kolumnę wiw_i, tworząc wektor składowy xiwix_iw_i wyniku.

Poniższy widget śledzi tę konstrukcję kolumna po kolumnie. Każda współrzędna wejścia x=(5,3,2)x=(5,3,2) skaluje odpowiadającą jej kolumnę, tworząc wektor składowy. Wybierz Next column, aby śledzić, jak każda współrzędna wejściowa skaluje swoją kolumnę. Pasująca strzałka podkreśla ten krok, podczas gdy wszystkie trzy składowe sumują się do przekształconego wyniku 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)

Komponenty te pozwalają nam śledzić, jak poszczególne współrzędne wejściowe wpływają na wynik. Aby zbadać cechę rozłożoną na kilku współrzędnych, możemy zamiast tego rozłożyć dane wejściowe wzdłuż kierunków powiązanych z tą cechą i sprawdzić, w jaki sposób WW przekształca te składowe.

Przestrzeń kolumn: jakie wyniki może osiągnąć macierz?

Macierz niekoniecznie dociera do każdego wektora w przestrzeni wyjściowej; może odwzorowywać wszystkie wektory wejściowe na mniejszą podprzestrzeń, taką jak płaszczyzna w przestrzeni trójwymiarowej. Wcześniej widzieliśmy, jak ustalony zbiór wektorów składowych może budować tylko wektory leżące w ich rozpiętości, co tworzy podprzestrzeń. W przypadku macierzy ta podprzestrzeń osiągalnych wyników nazywana jest jej przestrzenią kolumnową.

Nazwa wzięła się stąd, że kolumny macierzy są stałymi wektorami rozpinającymi podprzestrzeń możliwych wyników.

W wcześniejszym widżecie zbudowaliśmy ten sam wektor h=(5,3,2)h=(5,3,2), używając trzech różnych zestawów wektorów składowych. Popatrzmy teraz na każdą konstrukcję jako na transformację macierzy: wybrane przez nas wektory stają się kolumnami WW, ich współczynniki stają się wektorem wejściowym xx, a hh jest wyjściem WxWx.

Wszystkie trzy konstrukcje wytwarzają hh z wybranymi współczynnikami, ale nie wszystkie mogą generować ten sam zakres innych wyników. Utrzymując stałą macierz i zmieniając jej dane wejściowe, możemy zobaczyć, które wektory należą do jej przestrzeni kolumnowej.

Najpierw zacznijmy od wektora w opcji Coordinate basis. Zbudowaliśmy hh jako 5(1,0,0)+3(0,1,0)+2(0,0,1)5(1,0,0)+3(0,1,0)+2(0,0,1). Trzy wektory współrzędnych stają się kolumnami WW, a współczynniki skalujące 5,3,25,3,2 stają się wpisami 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}

Ponieważ WW jest macierzą tożsamości, pozostawia dane wejściowe bez zmian: Wx=x=(5,3,2)Wx=x=(5,3,2).

Wektor wejściowy xx ma trzy współrzędne, więc przestrzeń wejściowa to R3\mathbb R^3. Każda współrzędna skaluje jedną kolumnę WW. Te trzy kolumny obejmują cały R3\mathbb R^3, więc ta macierz może dotrzeć do każdego wektora w przestrzeni wyjściowej.

Przyjrzyjmy się teraz opcji Other basis. Budujemy ten sam wektor co 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). Kolumny to teraz (1,1,1)(1,1,1), (1,−1,1)(1,-1,1) i (2,2,−1)(2,2,-1), ze współczynnikami wejściowymi 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}

Przestrzeń wejściowa i wyjściowa to nadal R3\mathbb R^3. Te trzy kolumny są również niezależne, więc ich kombinacje liniowe mogą dać każdy wektor wyjściowy. Zmieniliśmy wektory konstrukcyjne i współczynniki wejściowe, ale nadal możemy osiągnąć wszystkie R3\mathbb R^3.

Gdy wypróbujemy opcję Two vectors, pojawia się coś interesującego. Ten sam wektor hh jest teraz zbudowany przy użyciu tylko dwóch wektorów konstrukcyjnych: h=1(4,1,1)+1(1,2,1)=(5,3,2)h=1(4,1,1)+1(1,2,1)=(5,3,2). Oznacza to, że nasza macierz transformacji ma tylko dwie kolumny. Na jego wejściu znajdują się dwa współczynniki 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}

Przestrzeń wejściowa wynosi teraz R2\mathbb R^2, ponieważ podajemy tylko dwa współczynniki. Przestrzeń wyjściowa pozostaje R3\mathbb R^3, ponieważ każde wyjście ma nadal trzy współrzędne: (4a+b,  a+2b,  a+b)(4a+b,\;a+2b,\;a+b). Istnieją jednak tylko dwie niezależne możliwości wyboru, aa i bb, mimo że wynik ma trzy współrzędne. Kształt macierzy ogranicza osiągalną podprzestrzeń w przestrzeni wyjściowej do co najwyżej dwóch wymiarów.

Dwa wybrane przez nas wektory konstrukcyjne, a co za tym idzie odpowiadające im kolumny macierzy, są niezależne, więc obejmują płaszczyznę przechodzącą przez początek układu współrzędnych, a ich wartości określają, która to jest płaszczyzna. W poprzednich przykładach kolumny obejmowały całą trójwymiarową przestrzeń wyjściową. W tym przypadku, mając tylko dwa wektory, nadal możemy osiągnąć ten sam wektor h=(5,3,2)h=(5,3,2), ale tylko dlatego, że leży on w płaszczyźnie, którą obejmują – przestrzeni kolumnowej macierzy. Wektory poza tą płaszczyzną pozostają nieosiągalne.

Poniższa tabela porównuje trzy konstrukcje: jakie wektory wejściowe akceptuje każda macierz i jakie wektory wyjściowe może wytworzyć. Wszystkie trzy mają tę samą trójwymiarową przestrzeń wyjściową, ale tylko niektóre macierze mogą wytworzyć każdy wektor w tej przestrzeni.

Opcja widgetuPrzestrzeń wejściowa: współczynniki xxPrzestrzeń kolumn: osiągalne wyjścia
Podstawa współrzędnychR3\mathbb R^3Wszystko z R3\mathbb R^3
Inna podstawaR3\mathbb R^3Wszystko z R3\mathbb R^3
Dwa wektoryR2\mathbb R^2Samolot w środku R3\mathbb R^3

Widzieliśmy, jak posiadanie tylko dwóch kolumn ogranicza osiągalne wyniki do co najwyżej płaszczyzny. Co ciekawe, posiadanie trzech kolumn nie gwarantuje, że macierz może objąć całą trójwymiarową przestrzeń wyjściową. Kolumny muszą być również liniowo niezależne.

W poniższej macierzy pierwsze dwie kolumny są identyczne, więc druga kolumna nie dodaje nowego kierunku. Kolumny c1c_1 i c3c_3 są niezależne i stanowią podstawę płaszczyzny osiągalnych wyjść:

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}

Możemy zobaczyć matematycznie, dlaczego te trzy kolumny dają wyniki tylko w dwóch niezależnych kierunkach. Zapiszmy wejście jako hh i wyjście jako z=Whz=Wh. Od c2=c1c_2=c_1 pierwsze dwie współrzędne wejściowe skalują ten sam wektor kolumnowy:

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)

Jeśli pozwolimy s=h1+h2s=h_1+h_2 i t=h3t=h_3, każde możliwe wyjście ma postać:

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

Widzimy, że każde wyjście jest określone przez dwie wartości, s=h1+h2s=h_1+h_2 i t=h3t=h_3, przy czym trzecia współrzędna jest zawsze równa sumie dwóch pierwszych. Wszystkie wektory z tą zależnością tworzą płaszczyznę, która jest przestrzenią kolumnową macierzy. Wymiar zależy od liczby niezależnych kierunków, a nie od liczby kolumn.

Produkty kropkowe: tworzenie wyników po jednym wierszu na raz

W poprzedniej sekcji widzieliśmy, jak kolumny macierzy tworzą dane wyjściowe ze skalowanych wektorów. Przyjrzyjmy się teraz tej samej transformacji poprzez wiersze macierzy i sprawdźmy, w jaki sposób wektory składowych danych wejściowych wpływają na każdą współrzędną wyjściową. Jak wyjaśniono w jak neurony współpracują przy przekształcaniu wektora, każdy wiersz macierzy wag pobiera iloczyn skalarny z całym wektorem wejściowym, tworząc jedną współrzędną wyjściową.

Poniższy widget śledzi obliczenia po wierszu na raz. Wybierz każdy wiersz, aby zobaczyć, jak jego wagi stanowią iloczyn skalarny z całym wejściem h=(5,3,2)h=(5,3,2), tworząc jedną współrzędną wyjścia 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

Skupmy się na pierwszym rzędzie. Jego iloczyn skalarny z całym wejściem daje skalar 1919:

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

Liniowość pozwala nam wyrazić ten iloczyn skalarny jako sumę udziałów wektorów składowych sygnału wejściowego. Aby zobaczyć, skąd pochodzą 1010, 33 i 66, podziel dane wejściowe na składowe współrzędnych:

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).

Dla pierwszego rzędu r=(2,1,3)r=(2,1,3) liniowość daje:

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.

Każdy komponent dostarcza jeden wkład skalarny do tej współrzędnej wyjściowej:

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}

Dodanie ich daje r⋅h=10+3+6=19r\cdot h=10+3+6=19 dokładnie taki sam wynik, jak bezpośrednie obliczenie (2,1,3)⋅(5,3,2)(2,1,3)\cdot(5,3,2).

Powtarzanie tych obliczeń dla każdego wiersza daje jeden wynik skalarny na wiersz. Zbieranie tych wyników tworzy wektor wyjściowy Wh=(19,8,2)Wh=(19,8,2). W przypadku każdego wiersza wzięcie iloczynu skalarnego z całą wartością wejściową daje taki sam wynik, jak dodanie iloczynu skalarnego z jego składnikami.

Działa to dla dowolnej dekompozycji wejścia: jeśli h=v1+v2h=v_1+v_2, to r⋅h=r⋅v1+r⋅v2r\cdot h=r\cdot v_1+r\cdot v_2, nawet jeśli komponenty są skierowane w inne strony.

Geometrycznie możemy rzutować każdy komponent na tę samą linię — w kierunku wektora wiersza rr — i dodawać te rzuty ze znakiem. Ich suma równa się rzutowi całego wejścia. Składowa skierowana częściowo wzdłuż rr ma wpływ dodatni, część skierowana częściowo w stronę niej ma wkład ujemny, a składowa prostopadła ma wkład zerowy.

Aby wyraźnie zobaczyć te rzuty, następny widżet wykorzystuje dwuwymiarowy przykład z rzędem jednostek r=(1,0)r=(1,0) skierowanym wzdłuż osi poziomej. Zielony wektor c1c_1 i różowy wektor c2c_2 to dwa wektory składowe. Niebieski wektor h=c1+c2h=c_1+c_2 to połączony wektor, który zbudowali.

Linie przerywane łączą punkt końcowy każdego wektora z jego rzutem na oś poziomą. Pasujące kolorowe strzałki wzdłuż tej osi pokazują rzutowane wektory: zielony dla c1c_1, różowy dla c2c_2 i niebieski dla ich sumy hh. Te strzałki projekcji mogą się nakładać. Rzut skierowany w prawo ma pozytywny wpływ, jeden skierowany w lewo ma negatywny wpływ, a projekcja zerowa nie wnosi nic. Ponieważ rr ma długość jeden, każda długość projekcji ze znakiem jest równa odpowiadającemu iloczynowi skalarnemu z rr.

Przeciągnij punkt końcowy dowolnego komponentu lub zmień jego współrzędne, aby zobaczyć aktualizację połączonego wektora i jego rzutów. Wypróbuj Opposite signs, Perpendicular i Cancelling, aby zobaczyć wkłady ujemne, zerowe i anulujące.

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)

Widżet wykorzystywał wiersz jednostkowy, zatem długość projekcji ze znakiem każdego komponentu stanowiła jego udział w wynikach. Wiersz macierzy wag nie musi mieć długości jeden: jego długość skaluje każdy wkład. Aby zrozumieć, ile wnosi każdy element, musimy wziąć pod uwagę zarówno jego długość, jak i wyrównanie z rzędem.

Dla kierunku rzędu jednostek u=r/∥r∥u=r/\|r\|, iloczyn skalarny u⋅cu\cdot c jest długością rzutowania ze znakiem komponentu cc. Użycie samego rr mnoży tę długość przez ∥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,

gdzie θ\theta jest kątem pomiędzy komponentem a kierunkiem rzędu. Dla naszego rzędu r=(2,1,3)r=(2,1,3), którego długość wynosi 14\sqrt{14}:

  • c1=(5,0,0)c_1=(5,0,0) ma długość 55 i wyrównanie cos⁡θ1=2/14\cos\theta_1=2/\sqrt{14}, co daje wkład 1010.
  • c2=(0,3,0)c_2=(0,3,0) ma długość 33 i wyrównanie cos⁡θ2=1/14\cos\theta_2=1/\sqrt{14}, co daje wkład 33.
  • c3=(0,0,2)c_3=(0,0,2) ma długość 22 i wyrównanie cos⁡θ3=3/14\cos\theta_3=3/\sqrt{14}, co daje wkład 66.

Z tego widzimy, że trzeci składnik jest najbliżej wyrównany z rr: ma największy cosinus, a zatem najmniejszy kąt do kierunku rzędu. Ale pierwszy komponent wnosi więcej, ponieważ jest dłuższy. Każdy składnik wejściowy ma swój udział zgodnie ze swoją długością i wyrównaniem z kierunkiem wiersza, a liniowość pozwala nam dodać te składowe ze znakiem, aby uzyskać odpowiedź wiersza na cały wektor wejściowy.

Wiersze i kolumny umożliwiają obliczenie tej samej transformacji na dwa sposoby:

KolumnyWiersze
Gdzie żyją wektoryPrzestrzeń wyjściowaMiejsce wprowadzania
Rola w mnożeniuSkaluj i dodawaj, aby zbudować wynikKażdy bierze iloczyn skalarny, aby obliczyć jedną współrzędną wyjściową

Przestrzeń wierszy i przestrzeń zerowa: co matryca czyta, a co ignoruje

Zacznijmy od dwóch wektorów (1,0,0)(1,0,0) i (0,1,0)(0,1,0). Są one niezależne, a ich kombinacje liniowe mają postać

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

Ich rozpiętość to płaszczyzna xyxy, której wszystkie wektory mają postać (a,b,0)(a,b,0), jak pokazano na poniższym widżecie.

Teraz wyobraźmy sobie, że mamy niebieski wektor h=(3,5,2)h=(3,5,2) i chcemy sprawdzić, czy leży on w tej podprzestrzeni. Jednym ze sposobów jego rozłożenia jest składnik zielony (1,1,0)(1,1,0) i składnik różowy (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

Zwróć uwagę, że zielony komponent leży na płaszczyźnie, podczas gdy różowy komponent i niebieski wektor leżą poza nią. Zielony składnik leży na płaszczyźnie, ponieważ można go zbudować z dwóch wektorów (1,0,0)(1,0,0) i (0,1,0)(0,1,0), które go rozciągają.

Załóżmy teraz, że używamy dwóch ustalonych wektorów (1,0,0)(1,0,0) i (0,1,0)(0,1,0) jako wierszy macierzy:

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

W tym przypadku każdy wiersz zawiera wektor, którego możemy użyć w kombinacji liniowej. Wspólnie wektory te obejmują podprzestrzeń przestrzeni wejściowej zwanej przestrzenią wierszy. Płaszczyzna w widżecie jest zatem przestrzenią wierszy tej macierzy.

Spróbujmy teraz innego rozkładu tego samego niebieskiego wektora, używając zielonego składnika (3,5,0)(3,5,0) i różowego składnika (0,0,2)(0,0,2). Kolor zielony nadal leży w płaszczyźnie przestrzeni rzędów, ale kolor różowy jest teraz do niej prostopadły, jak pokazano na poniższym widżecie.

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

Potraktujmy niebieski wektor hh jako dane wejściowe i sprawdźmy, jak jego składowe wpływają na wynik każdej dekompozycji. Macierz daje ten sam wynik w obu przypadkach, ale składniki w każdym rozkładzie mają na to inny wpływ.

W pierwszym rozkładzie możemy obliczyć udział każdego składnika, biorąc jego iloczyn skalarny z każdym wierszem WW. Każdy wynik podaje jedną współrzędną udziału tego składnika w wyniku.

Zielony komponent (1,1,0)(1,1,0)Różowy komponent (2,4,2)(2,4,2)
Iloczyn kropkowy z rzędem 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
Iloczyn kropkowy z rzędem 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
Wkład w wynik(1,1)(1,1)(2,4)(2,4)

Trzecia współrzędna żadnego ze składników nie ma wpływu na wynik, ponieważ oba wiersze macierzy mają trzecią współrzędną zerową. Liniowo, składki zielone i różowe sumują się do wyniku:

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)

W drugim rozkładzie zielony (3,5,0)(3,5,0) wnosi cały wynik, podczas gdy różowy (0,0,2)(0,0,2) nie wnosi nic:

Zielony komponent (3,5,0)(3,5,0)Różowy komponent (0,0,2)(0,0,2)
Iloczyn kropkowy z rzędem 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
Iloczyn kropkowy z rzędem 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
Wkład w wynik(3,5)(3,5)(0,0)(0,0)

Podobnie jak w przypadku pierwszego rozkładu, trzecia współrzędna żadnego ze składników nie ma wpływu na wynik, ponieważ oba wiersze macierzy mają trzecią współrzędną zerową. Liniowo, składki zielone i różowe sumują się do wyniku:

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)

Zwróć uwagę na różnicę między tymi dwoma rozkładami: pierwszy różowy składnik nadal ma udział w wynikach, podczas gdy drugi nie wnosi żadnego wkładu. Dzieje się tak, ponieważ druga różowa składowa jest prostopadła do obu wierszy, a co za tym idzie do całej przestrzeni wierszy. Widzimy to w widżetach i obliczeniach iloczynu skalarnego w tabelach. W pierwszym przypadku składnik różowy ma iloczyny skalarne 22 i 44 z dwoma rzędami, podczas gdy w drugim przypadku oba iloczyny skalarne mają wartość zerową. To pokazuje, że położenie poza przestrzenią wierszy nie oznacza, że ​​wektor jest całkowicie ignorowany; jest prostopadły do ​​każdego rzędu.

Przestrzeń zerowa: dane wejściowe, które nic nie wnoszą

Widzieliśmy, że drugi różowy składnik, (0,0,2)(0,0,2), nie wnosi nic, ponieważ jest prostopadły do każdego wiersza. To samo dotyczy każdego wektora (0,0,z)(0,0,z) wzdłuż osi zz: zmiana jego długości lub odwrócenie jego kierunku nadal pozostawia oba iloczyny skalarne na poziomie zerowym.

Zbiór wszystkich wektorów wejściowych, które macierz odwzorowuje na zero, nazywany jest jej przestrzenią zerową. W przypadku macierzy, której używaliśmy w poprzednich sekcjach, tym zbiorem jest cała oś zz. Pierwszy różowy składnik ma część w przestrzeni zerowej; drugie całkowicie w nim leży.

W obu przypadkach składową zerową przestrzeni wejściowej jest (0,0,2)(0,0,2). Drugi rozkład wyraźnie go izoluje, umieszczając cały komponent przestrzeni wierszy na zielono. ** Dane wejściowe mają wiele możliwych dekompozycji, ale ich podział na komponent w przestrzeni wierszy i komponent w przestrzeni zerowej jest unikalny.**

Możemy więc wziąć dowolną macierz i akceptowane przez nią dane wejściowe i sprawdzić, którą część tych danych wejściowych macierz ignoruje, a która część wpływa na wynik. Istnieje tylko jeden sposób podziału danych wejściowych tak, aby jedna część znajdowała się całkowicie w przestrzeni wierszy, a druga całkowicie w przestrzeni zerowej.

W przypadku naszej macierzy i danych wejściowych jest to dokładnie drugi rozkład pokazany w naszych widżetach i tabelach:

(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}}

Alternatywna dekompozycja (1,1,0)+(2,4,2)(1,1,0)+(2,4,2) tworzy te same dane wejściowe, ale ich drugi składnik nie znajduje się całkowicie w przestrzeni zerowej. W tym przykładzie obliczenia są proste; w przypadku macierzy ogólnej metody takie jak SVD pozwalają nam systematycznie obliczać podział.

Wektor jest odwzorowany na zero, gdy jest prostopadły do każdego wiersza, a zatem do każdego wektora w przestrzeni wierszy. Przestrzeń zerowa jest prostopadłym dopełnieniem przestrzeni wierszowej, którą zapisujemy jako:

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

Symbol ⊥\perp oznacza wszystkie wektory prostopadłe do każdego wektora w tej przestrzeni. Podział danych wejściowych na te dwie części daje:

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

Zatem Wh=WhrowWh=Wh_{\mathrm{row}} pokazuje, że tylko komponent przestrzeni wierszy wpływa na wynik. Macierz może nadal zmieniać swoją długość i kierunek lub mapować ją w przestrzeń wyjściową o innej liczbie współrzędnych.

Lewa przestrzeń zerowa: prostopadła do każdego możliwego wyniku

Załóżmy, że macierz wag warstwy ma trzeci wiersz równy sumie jej dwóch pierwszych wierszy. Prowadzi to do ograniczenia wyniku: trzecia współrzędna jest zawsze równa sumie dwóch pierwszych. Bez względu na to, jakie dane wejściowe mu podajemy, nie może wygenerować (1,2,4)(1,2,4), ponieważ pierwsze dwie współrzędne wymagałyby, aby trzecia była 33. Lewa przestrzeń zerowa pomaga nam zidentyfikować takie ograniczenia na wyjściu warstwy.

Jak widzieliśmy wcześniej, przestrzeń kolumn zawiera wszystkie możliwe wyniki. Lewa przestrzeń zerowa opisuje kierunki prostopadłe do nich wszystkich. Tak jak przestrzeń zerowa jest prostopadła do przestrzeni wierszy w przestrzeni wejściowej, tak lewa przestrzeń zerowa jest prostopadła do przestrzeni kolumn w przestrzeni wyjściowej.

W naszym wcześniejszym przykładzie z przestrzenią kolumn każde wyjście ma postać (s,t,s+t)(s,t,s+t). Trzecia współrzędna jest zawsze sumą dwóch pierwszych. Wektor q=(−1,−1,1)q=(-1,-1,1) uwzględnia to ograniczenie:

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

Leży w lewej przestrzeni zerowej, ponieważ jest prostopadła do każdego możliwego wyniku. Cel taki jak (0,0,1)(0,0,1) łamie to ograniczenie, więc żadne dane wejściowe nie mogą sprawić, że ta matryca go wytworzy. Sama zmiana wejścia nie może naprawić tego niedopasowania.

Nadaje to lewej przestrzeni zerowej praktyczną rolę: ujawnia ograniczenia dotyczące tego, co może wytworzyć macierz o stałej wadze. W przypadku warstwy predykcji liniowej może nam ona powiedzieć, że niektóre docelowe wyniki są nieosiągalne nawet zanim spróbujemy znaleźć dane wejściowe, które je wygenerują. Te ograniczenia dotyczą wyjścia liniowego WhWh; dodanie odchylenia przesuwa je do q⋅z=q⋅bq\cdot z=q\cdot b dla z=Wh+bz=Wh+b, a następująca po nich nieliniowa aktywacja może je jeszcze bardziej zmienić.

Należy podkreślić, że lewa przestrzeń zerowa nie jest miejscem, w którym trafiają usunięte dane wejściowe; te dane wejściowe są mapowane na początek. Opisuje ograniczenia po stronie wyjściowej.

Łączenie czterech podprzestrzeni

Możemy teraz połączyć cztery przestrzenie na jednym obrazku. Przestrzeń wierszowa i przestrzeń zerowa dzielą dane wejściowe na składowe prostopadłe. Macierz wysyła składnik przestrzeni zerowej do zera i przekształca składnik przestrzeni wierszy na wynik w przestrzeni kolumn. Lewa przestrzeń zerowa jest prostopadła do każdego wektora w tej podprzestrzeni wyjściowej.

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.

Obrazek pokazuje wzajemne powiązanie czterech podprzestrzeni, ale jej płaskie obszary są schematyczne: podprzestrzeń może być linią lub płaszczyzną, w zależności od macierzy. Poniższe dwa widżety ukonkretniają te relacje. Możesz zmienić dane wejściowe i zobaczyć, jak są one podzielone na komponenty z przestrzenią wierszy i zerową oraz w jaki sposób każdy komponent wpływa na wynik.

Przyjrzyjmy się teraz tym zależnościom w poniższym widżecie. Wykorzystuje wektor wejściowy h=(5,3,2)h=(5,3,2) i macierz:

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

Początkowe wejście h=(5,3,2)h=(5,3,2) leży zarówno poza płaszczyzną przestrzeni wierszy, jak i linią przestrzeni zerowej. W każdym jest jakiś element. Trzy suwaki kontrolują współrzędne wejściowe h1h_1, h2h_2 i h3h_3. Zmiana ich zmienia wektor, który przekształca macierz, podczas gdy sama macierz pozostaje stała.

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)

Oto, co definiuje każdą z czterech podprzestrzeni. Parametry aa, bb, dd, ss i tt mogą być dowolnymi liczbami rzeczywistymi.

PodprzestrzeńKształtWektory, które zawieraCo to oznacza
Przestrzeń wierszowaSamolot(a,a,b)(a,a,b)Pierwsze dwie współrzędne wejściowe są równe (h1=h2h_1=h_2); trzeci jest nieograniczony.
Miejsce zeroweLinia(d,−d,0)(d,-d,0)Pierwsze dwie współrzędne wejściowe znoszą, a trzecia wynosi zero. Te wektory są odwzorowane na zero.
Miejsce na kolumnęSamolot(s,t,s+t)(s,t,s+t)Trzecia współrzędna wyjściowa jest sumą dwóch pierwszych (z3=z1+z2z_3=z_1+z_2).
Lewa przestrzeń zerowaLinia(−d,−d,d)(-d,-d,d)Pierwsze dwie współrzędne są równe, a trzecia jest ich ujemną. Wektory te są prostopadłe do każdego wektora w przestrzeni kolumnowej.

Trzy karty pokazują cały wkład i jego dwa składniki. Zastosowanie WW do komponentu przestrzeni wierszy daje taki sam wynik, jak zastosowanie go do całego wejścia. Składnik zerowy wnosi zero, więc dodanie lub usunięcie go pozostawia wynik niezmieniony.

hrh_r i hnh_n obrazu odpowiadają hrowh_{\mathrm{row}} i hnullh_{\mathrm{null}} widżetu. Początkowo niebieskie wejście jest rozdzielane na składową zieloną i różową:

(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}}}.

Strzałki przecinające obraz przedstawiają zastosowanie WW. W widgecie zarówno całe wejście, jak i jego zielony komponent dają (8,2,10)(8,2,10), więc ich strzałki wyjściowe nakładają się na pomarańczową płaszczyznę. Różowy składnik jest mapowany na zero. Fioletowa linia lewej przestrzeni zerowej jest prostopadła do płaszczyzny wyjściowej; nie jest to miejsce, do którego trafiają usunięte dane wejściowe.

Zmiana danych wejściowych pozostawia cztery podprzestrzenie stałe.

Użyjmy teraz tego samego wektora wejściowego h=(5,3,2)h=(5,3,2) z tą alternatywną macierzą:

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

Ma ten sam kształt 3×33\times3, ale ma rangę 1: wszystkie jego wiersze są wielokrotnościami (1,1,0)(1,1,0). Przestrzenie wierszy i kolumn są liniami, a obie przestrzenie zerowe są płaszczyznami. Początkowe wejście leży poza linią przestrzeni wierszy i płaszczyzną przestrzeni zerowej, z komponentem w każdym z nich. Suwaki zmieniają dane wejściowe, podczas gdy ta matryca pozostaje stała.

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)

W przypadku tej macierzy cztery podprzestrzenie zawierają następujące wektory. Ponownie, parametrami mogą być dowolne liczby rzeczywiste.

PodprzestrzeńKształtWektory, które zawieraCo to oznacza
Przestrzeń wierszowaLinia(a,a,0)(a,a,0)Pierwsze dwie współrzędne wejściowe są równe, a trzecia wynosi zero.
Miejsce zeroweSamolot(d,−d,b)(d,-d,b)Pierwsze dwie współrzędne wejściowe anulowane (h1+h2=0h_1+h_2=0); trzeci jest nieograniczony. Te wektory są odwzorowane na zero.
Miejsce na kolumnęLinia(s,2s,3s)(s,2s,3s)Drugie i trzecie współrzędne wyjściowe są dwa razy i trzy razy większe niż pierwsze.
Lewa przestrzeń zerowaSamolot(−2a−3b,a,b)(-2a-3b,a,b)Współrzędne odpowiadają z1+2z2+3z3=0z_1+2z_2+3z_3=0. Wektory te są prostopadłe do kierunku przestrzeni kolumn (1,2,3)(1,2,3).

Tutaj zmiana h3h_3 pozostawia wynik niezmieniony: trzeci kierunek współrzędnych leży w przestrzeni zerowej. Tylko komponent wzdłuż zielonej linii odstępów między rzędami ma wpływ na wynik; każde wyjście leży na pomarańczowej linii przestrzeni kolumn.

Ranga macierzy i wymiary czterech podprzestrzeni

Ostatnią koncepcją, której musimy się przyjrzeć, jest ranga macierzy. Widzieliśmy, że macierze o tym samym kształcie mogą mieć różne wymiary podprzestrzenne. Ranga mówi nam, ile niezależnych kierunków zachowuje macierz i wraz ze swoim kształtem określa wymiary wszystkich czterech podprzestrzeni.

W przypadku macierzy z wierszami mm i kolumnami nn kolumny nn definiują przestrzeń wejściową Rn\mathbb R^n, a wiersze mm definiują przestrzeń wyjściową Rm\mathbb R^m. Są to wymiary pełnej przestrzeni wejściowej i wyjściowej, określone przez kształt macierzy.

Każda macierz ma właściwość zwaną rank rr, która definiuje wspólny wymiar jej przestrzeni wierszy i kolumn: ile niezależnych kierunków rozciągają się wiersze i kolumny. Te dwie przestrzenie mają zawsze ten sam wymiar, nawet jeśli pełna przestrzeń wejściowa i wyjściowa mają różne wymiary.

Odpowiednio, maksymalna liczba liniowo niezależnych wierszy jest zawsze równa maksymalnej liczbie liniowo niezależnych kolumn. Ranga nie może przekraczać liczby wierszy ani liczby kolumn, formalnie r≤min⁡(m,n)r\leq\min(m,n).

Rozważmy naszą wcześniejszą macierz 2×32\times3:

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

Jego kształt opisuje transformację z trzech współrzędnych wejściowych na dwie współrzędne wyjściowe: 3→23\to2. Jego dwa wiersze są niezależne, więc jego rząd wynosi 2. Przestrzeń wierszy to płaszczyzna xyxy wewnątrz R3\mathbb R^3, składająca się z wektorów (a,b,0)(a,b,0). Przestrzeń kolumn składa się w całości z R2\mathbb R^2 i składa się z wektorów (a,b)(a,b).

Dlatego przestrzenie wierszy i kolumn mają wymiar dwa, mimo że pełne przestrzenie wejściowe i wyjściowe mają różne wymiary. Przestrzeń wierszy nadal zawiera wektory o trzech współrzędnych; tylko dwie współrzędne mogą różnić się niezależnie. W przestrzeni kolumn te dwie niezależne współrzędne wypełniają całą przestrzeń wyjściową.

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

Zacienione płaszczyzny mają ten sam wymiar, ale żyją w różnych przestrzeniach otoczenia. Etykiety r1,r2r_1,r_2 oznaczają wiersze w przestrzeni wejściowej R3\mathbb R^3; c1,c2,c3c_1,c_2,c_3 oznacza kolumny w przestrzeni wyjściowej R2\mathbb R^2, z c3=0c_3=0 na początku. Cieniowanie pokazuje część każdej nieskończonej płaszczyzny.

W tabeli porównano pełne przestrzenie wejściowe i wyjściowe z przestrzeniami wierszowymi i kolumnowymi tej macierzy:

PrzestrzeńGdzie mieszkaJego wymiar
Przestrzeń wejściowaR3\mathbb R^33
Przestrzeń wierszowaPłaszczyzna wewnątrz R3\mathbb R^3: wektory (a,b,0)(a,b,0)2
Przestrzeń wyjściowaR2\mathbb R^22
Miejsce na kolumnęWszystkie R2\mathbb R^2: wektory (a,b)(a,b)2

Ta macierz zachowuje pierwsze dwie współrzędne i pomija trzecią:

(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}.

Możemy to zapisać jako W(h1,h2,h3)=(h1,h2)W(h_1,h_2,h_3)=(h_1,h_2), używając krotki jako skrótu wektora kolumnowego. Na przykład zarówno (5,3,2)(5,3,2), jak i (5,3,99)(5,3,99) są mapowane na (5,3)(5,3). Składnik przestrzeni wierszy (a,b,0)(a,b,0) jest odwzorowywany na (a,b)(a,b), podczas gdy składnik przestrzeni zerowej (0,0,c)(0,0,c) jest odwzorowywany na zero.

To pozostawia na wejściu jeden kierunek zerowy: trzecią oś współrzędnych. Po stronie wyjściowej przestrzeń kolumnowa już wypełnia całą R2\mathbb R^2, zatem jej prostopadłe uzupełnienie — lewa przestrzeń zerowa — zawiera tylko wektor zerowy i ma wymiar zerowy.

To samo rozliczanie wymiarów działa dla dowolnej macierzy m×nm\times n o randze rr: każda przestrzeń wierszowa i kolumnowa ma wymiar rr, przestrzeń zerowa ma wymiar n−rn-r, a lewa przestrzeń zerowa ma wymiar m−rm-r.

Kształt wyznacza granicę; wpisy określają rangę. Inna macierz 2×32\times3 może mieć rangę 1. Jej pełne przestrzenie wejściowe i wyjściowe nadal będą wynosić R3\mathbb R^3 i R2\mathbb R^2, ale jej przestrzenie wierszy i kolumn będą liniami. Jej przestrzeń zerowa miałaby wówczas wymiar 3−1=23-1=2, a lewa przestrzeń zerowa miałaby wymiar 2−1=12-1=1.

Podgląd obrazu

Zbliżaj palcami lub użyj + / −. Przeciągaj lub użyj strzałek. Esc zamyka podgląd.