3.2 Mátrixszorzás és affín réteg

3.2.1 Cél, előismeret és induló becslés

Ez az egység a 3.1. Vektor, norma és skalárszorzat alfejezetben bevezetett skalárszorzatot használja fel: egy lineáris réteg minden kimeneti komponense a súlymátrix egy sora és a bemeneti vektor skalárszorzata. A cél a lineáris és az affin leképezés pontos megkülönböztetése, a batchelt XW⊤+bXW^\top+b forma indoklása, valamint annak bizonyítása, hogy két lineáris réteg kompozíciója lineáris, míg nemnulla bias esetén az affin kompozíció általában nem az. A numerikus ellenőrzéshez a 2.2. Lebegőpont és stabil elemi számítás alfejezetben tárgyalt allclose és tolerancia fogalmát idézzük vissza.

Induló becslés. Egy GlyphLab-kép vektorizálva 24⋅24=57624\cdot 24=576 dimenziós. Egy háromkimenetű, bias nélküli lineáris réteg hány skaláris szorzat–összeadást végez egy mintán? Gondolja végig: minden kimeneti komponenshez egy 576 hosszú skalárszorzat tartozik, tehát 3⋅576=17283\cdot 576=1728 szorzás–összeadás. A bias hozzáadása ezen felül kimenetenként egy összeadás.

3.2.2 Lineáris operátor és mátrixreprezentáció

Definíció (lineáris leképezés). Az L:ℝd→ℝmL:\mathbb R^d\to\mathbb R^m leképezés lineáris, ha minden x,y∈ℝdx,y\in\mathbb R^d és α,β∈ℝ\alpha,\beta\in\mathbb R esetén

L(αx+βy)=αL(x)+βL(y).L(\alpha x+\beta y)=\alpha L(x)+\beta L(y).

Egy ilyen leképezést lineáris operátornak is nevezünk. Rögzített bázisban minden lineáris leképezés egy mátrixszal reprezentálható. A standard bázis legyen e1,…,ede_1,\ldots,e_d, ahol eje_j jj-edik koordinátája 1, a többi 0. Mivel minden x∈ℝdx\in\mathbb R^d felírható x=∑j=1dxjejx=\sum_{j=1}^d x_j e_j alakban, a linearitásból

L(x)=∑j=1dxjL(ej).L(x)=\sum_{j=1}^d x_j L(e_j).

Ha L(ej)∈ℝmL(e_j)\in\mathbb R^m vektorokat egy W∈ℝm×dW\in\mathbb R^{m\times d} mátrix oszlopaiként rendezzük, azaz W:,j=L(ej)W_{:,j}=L(e_j), akkor a fenti összeg éppen a WxWx mátrix–vektor szorzat. Megfordítva, tetszőleges W∈ℝm×dW\in\mathbb R^{m\times d} mátrix esetén L(x)=WxL(x)=Wx lineáris, mert a mátrixszorzás elosztó az összeadásra és felcserélhető a skalárral. A WxWx ii-edik komponense a WW ii-edik sorának és xx-nek a skalárszorzata:

(Wx)i=∑j=1dWijxj.(Wx)_i=\sum_{j=1}^d W_{ij}x_j.

Definíció (rang). A W∈ℝm×dW\in\mathbb R^{m\times d} mátrix rangja a lineáris leképezés képterének dimenziója:

rank(W)=dim{Wx:x∈ℝd}.\operatorname{rank}(W)=\dim\{Wx:x\in\mathbb R^d\}.

Mivel a képtér legfeljebb dd-dimenziós és ℝm\mathbb R^m altere, rank(W)≤min(m,d)\operatorname{rank}(W)\le\min(m,d). Az oszloprang és a sorrang egyenlősége ismert lineáris algebrai tétel; a bizonyítást itt nem ismételjük meg, a pontos feltételekhez és bizonyításhoz [B01] lineáris algebrai fejezete szolgál háttérként.

Definíció (transzponált). Az A∈ℝm×dA\in\mathbb R^{m\times d} mátrix transzponáltja az A⊤∈ℝd×mA^\top\in\mathbb R^{d\times m} mátrix, amelyre (A⊤)ij=Aji(A^\top)_{ij}=A_{ji}. Két mátrix szorzatának transzponáltjára

(AB)⊤=B⊤A⊤,(AB)^\top=B^\top A^\top,

amelyet komponensenként ellenőrizhetünk:

((AB)⊤)ij=(AB)ji=∑kAjkBki=∑k(B⊤)ik(A⊤)kj=(B⊤A⊤)ij.((AB)^\top)_{ij}=(AB)_{ji}=\sum_k A_{jk}B_{ki}=\sum_k (B^\top)_{ik}(A^\top)_{kj}=(B^\top A^\top)_{ij}.

3.2.3 Affin réteg, bias és batchelt alak

Definíció (affin leképezés). Az f:ℝd→ℝmf:\mathbb R^d\to\mathbb R^m leképezés affin, ha f(x)=Wx+bf(x)=Wx+b alakú, ahol W∈ℝm×dW\in\mathbb R^{m\times d} és b∈ℝmb\in\mathbb R^m a bias (eltolás) vektor. A neurális hálózatok irodalmában az affin réteget gyakran pontatlanul „lineáris rétegnek” nevezik; ebben a könyvben a két fogalmat mindig megkülönböztetjük.

A b≠0b\neq 0 affin leképezés nem lineáris: f(0)=W0+b=b≠0f(0)=W0+b=b\neq 0, míg minden lineáris leképezés a nullvektort nullvektorba viszi, hiszen L(0)=L(0⋅0)=0⋅L(0)=0L(0)=L(0\cdot 0)=0\cdot L(0)=0. A bias tehát a lineáris rész eltolása; az f(x)=2x+3f(x)=2x+3 egyenes grafikonja nem megy át az origón, ezért a „grafikon egyenes” szemlélet sem teszi lineárissá.

A gyakorlatban egyszerre NN mintát dolgozunk fel. A batchelt bemenet X∈ℝN×dX\in\mathbb R^{N\times d}, ahol egy megfigyelés egy sor. A kimenet

Z=XW⊤+b,Z∈ℝN×m.Z=XW^\top+b,\qquad Z\in\mathbb R^{N\times m}.

Az XW⊤XW^\top szorzat (i,j)(i,j) eleme

(XW⊤)ij=∑k=1dXikWjk,(XW^\top)_{ij}=\sum_{k=1}^d X_{ik}W_{jk},

tehát az ii-edik minta Xi,:X_{i,:} sorvektorának és a jj-edik kimeneti komponenshez tartozó Wj,:W_{j,:} súlysornak a skalárszorzata; ehhez adjuk a bjb_j bias-t. A b∈ℝmb\in\mathbb R^m vektor sorirányban broadcastolódik: minden mintához ugyanaz a kimeneti csatornánkénti eltolás adódik. Az absztrakt oszlopvektoros Wx+bWx+b és a batchelt XW⊤+bXW^\top+b ugyanazt a leképezést jelöli, csak az utóbbiban xx sorokba rendezve szerepel; a transzponálás éppen a skalárszorzatok irányát állítja helyre.

3.2.4 Két lineáris réteg kompozíciója: állítás és bizonyítás

Állítás. Legyen W1∈ℝh×dW_1\in\mathbb R^{h\times d} és W2∈ℝm×hW_2\in\mathbb R^{m\times h}, valamint L1(x)=W1xL_1(x)=W_1x és L2(y)=W2yL_2(y)=W_2y. Ekkor a L2∘L1:ℝd→ℝmL_2\circ L_1:\mathbb R^d\to\mathbb R^m kompozíció lineáris, és a reprezentáló mátrixa W2W1∈ℝm×dW_2W_1\in\mathbb R^{m\times d}.

Bizonyítás. Először megmutatjuk, hogy a kompozíció mátrixa a mátrixszorzat. Tetszőleges x∈ℝdx\in\mathbb R^d esetén az ii-edik kimeneti komponens:

(L2∘L1)(x)i=(W2(W1x))i=∑j=1h(W2)ij(W1x)j=∑j=1h(W2)ij∑k=1d(W1)jkxk.(L_2\circ L_1)(x)_i=(W_2(W_1x))_i=\sum_{j=1}^h (W_2)_{ij}(W_1x)_j=\sum_{j=1}^h (W_2)_{ij}\sum_{k=1}^d (W_1)_{jk}x_k.

A két összegzés felcserélhető, mert véges összegekről van szó:

=∑k=1d(∑j=1h(W2)ij(W1)jk)xk=((W2W1)x)i.=\sum_{k=1}^d\left(\sum_{j=1}^h (W_2)_{ij}(W_1)_{jk}\right)x_k=((W_2W_1)x)_i.

Ez minden ii-re teljesül, tehát (L2∘L1)(x)=(W2W1)x(L_2\circ L_1)(x)=(W_2W_1)x.

Most ellenőrizzük a linearitás két tulajdonságát. Legyen u,v∈ℝdu,v\in\mathbb R^d és α,β∈ℝ\alpha,\beta\in\mathbb R. Az előbbi reprezentációt használva:

(L2∘L1)(αu+βv)=(W2W1)(αu+βv).(L_2\circ L_1)(\alpha u+\beta v)=(W_2W_1)(\alpha u+\beta v).

A mátrix–vektor szorzás linearitása miatt

(W2W1)(αu+βv)=α(W2W1)u+β(W2W1)v=α(L2∘L1)(u)+β(L2∘L1)(v).(W_2W_1)(\alpha u+\beta v)=\alpha(W_2W_1)u+\beta(W_2W_1)v=\alpha(L_2\circ L_1)(u)+\beta(L_2\circ L_1)(v).

Ezzel az additivitást és a homogenitást is beláttuk, tehát a kompozíció lineáris. ◼\blacksquare

A bizonyítás dimenzióellenőrzése: W1W_1 alakja h×dh\times d, W2W_2 alakja m×hm\times h, így W2W1W_2W_1 alakja m×dm\times d, ami éppen egy ℝd→ℝm\mathbb R^d\to\mathbb R^m leképezés mátrixának felel meg. A rangra a kompozíció nem növeli a dimenziót: rank(W2W1)≤min(rank(W1),rank(W2))\operatorname{rank}(W_2W_1)\le\min(\operatorname{rank}(W_1),\operatorname{rank}(W_2)); ez standard tétel, bizonyítását lásd [B01].

3.2.5 Ellenpélda: nemnulla bias esetén a kompozíció nem lineáris

Tekintsük a két affin réteget:

f1(x)=W1x+b1,f2(y)=W2y+b2,f_1(x)=W_1x+b_1,\qquad f_2(y)=W_2y+b_2,

ahol b1∈ℝhb_1\in\mathbb R^h, b2∈ℝmb_2\in\mathbb R^m. A kompozíció:

(f2∘f1)(x)=W2(W1x+b1)+b2=W2W1x+W2b1+b2.(f_2\circ f_1)(x)=W_2(W_1x+b_1)+b_2=W_2W_1x+W_2b_1+b_2.

A kompozíció tehát ismét affin, hatékony mátrixszal W2W1W_2W_1 és hatékony biasszal W2b1+b2W_2b_1+b_2. Ha W2b1+b2≠0W_2b_1+b_2\neq 0, akkor a kompozíció nem lineáris. Konkrét numerikus ellenpélda: legyen d=m=1d=m=1, W1=W2=1W_1=W_2=1, b1=1b_1=1, b2=2b_2=2. Ekkor

(f2∘f1)(x)=x+3.(f_2\circ f_1)(x)=x+3.

Az additivitás már u=v=1u=v=1 esetén sérül:

(f2∘f1)(1+1)=2+3=5,(f2∘f1)(1)+(f2∘f1)(1)=4+4=8,(f_2\circ f_1)(1+1)=2+3=5,\qquad (f_2\circ f_1)(1)+(f_2\circ f_1)(1)=4+4=8,

és 5≠85\neq 8. Ezzel megadtuk a kért ellenpéldát: két affin, nemnulla biases réteg kompozíciója affin, de általában nem lineáris.

3.2.6 Kézi példa és NumPy-labor

Legyen d=2d=2, m=3m=3, N=2N=2, tehát két minta és három kimenet. A súly, a bias és a bemenet:

X=(13−20,5),W=(1−20120),b=(0,5,−1,0,2).X=\begin{pmatrix}1 & 3\\ -2 & 0{,}5\end{pmatrix},\qquad W=\begin{pmatrix}1 & -2\\ 0 & 1\\ 2 & 0\end{pmatrix},\qquad b=(0{,}5,\,-1,\,0{,}2).

Az első mintára az XW⊤XW^\top sorai:

A bias hozzáadása után az első kimeneti sor (−5+0,5,3−1,2+0,2)=(−4,5,2,2,2)(-5+0{,}5,\;3-1,\;2+0{,}2)=(-4{,}5,\;2,\;2{,}2). A második minta:

Bias után: (−3+0,5,0,5−1,−4+0,2)=(−2,5,−0,5,−3,8)(-3+0{,}5,\;0{,}5-1,\;-4+0{,}2)=(-2{,}5,\;-0{,}5,\;-3{,}8). Tehát

Z=(−4,522,2−2,5−0,5−3,8).Z=\begin{pmatrix}-4{,}5 & 2 & 2{,}2\\ -2{,}5 & -0{,}5 & -3{,}8\end{pmatrix}.

Labor. Munkakönyvtár: lab/n010/. A következő szkript a fenti kézi számítást ellenőrzi NumPy-ban:

# futtatás: python n010_affine_lab.py
import numpy as np

X = np.array([[1.0, 3.0],
              [-2.0, 0.5]], dtype=np.float32)      # (2, 2)
W = np.array([[ 1.0, -2.0],
              [ 0.0,  1.0],
              [ 2.0,  0.0]], dtype=np.float32)     # (3, 2)
b = np.array([0.5, -1.0, 0.2], dtype=np.float32)   # (3,)

Z = X @ W.T + b

Z_expected = np.array([[-4.5, 2.0, 2.2],
                       [-2.5, -0.5, -3.8]], dtype=np.float32)

print("Z =")
print(Z)
assert Z.shape == (2, 3)
assert np.allclose(Z, Z_expected, atol=1e-6, rtol=1e-5)
print("OK: shape es numerikus egyezes a kezi szamitassal")

A float32 típus miatt a 0,20{,}2 és 0,50{,}5 nem feltétlenül pontosan reprezentált tizedestörtek, ezért az egyenlőséget allclose kezeli a 2.2. Lebegőpont és stabil elemi számítás alfejezetben bevezetett abszolút és relatív toleranciával. Fontos: a fenti kimenet a kézi számításból származó számított példa, nem a labor mért jegyzőkönyve, amelyet a szkript futtatásakor külön ellenőrizni kell. A várt kimenet a Z mátrix és az OK üzenet.

3.2.7 Feladatok

F1 (fogalmi, nehézség 1). Adja meg az L:ℝ2→ℝ2L:\mathbb R^2\to\mathbb R^2, L(x)=(2x1−x2,x1+x2)L(x)=(2x_1-x_2,\;x_1+x_2) leképezés standard bázisbeli mátrixát. Számítsa ki L(x)L(x)-et x=(1,2)x=(1,2) esetén, és igazolja a homogenitást α=−3\alpha=-3 mellett. Miért nem lineáris az f(x)=L(x)+(1,0)f(x)=L(x)+(1,0) leképezés? Elvárt átadandó: a 2×22\times2 mátrix, két kiszámított vektor és egy szöveges indoklás.

F2 (levezetési, nehézség 2). Legyen

W1=(100111)∈ℝ3×2,W2=(1−1001210−1210)∈ℝ4×3.W_1=\begin{pmatrix}1&0\\0&1\\1&1\end{pmatrix}\in\mathbb R^{3\times2},\qquad W_2=\begin{pmatrix}1&-1&0\\0&1&2\\1&0&-1\\2&1&0\end{pmatrix}\in\mathbb R^{4\times3}.

Bizonyítsa a fenti állítás alkalmazásával, hogy L2∘L1L_2\circ L_1 lineáris, adja meg a W2W1∈ℝ4×2W_2W_1\in\mathbb R^{4\times2} mátrixot, és számítsa ki a (3,2)(3,2) elemét. Ellenőrizze, hogy (L2∘L1)(0,0)=(0,0,0,0)(L_2\circ L_1)(0,0)=(0,0,0,0). Elvárt átadandó: a bizonyítás lépései, a teljes 4×24\times2 mátrix és a (3,2)(3,2) elem levezetése.

F3 (implementációs, nehézség 2). Írjon affine_forward(X, W, b) függvényt, amely ellenőrzi, hogy XX alakja (N,d)(N,d), WW alakja (m,d)(m,d), bb alakja (m,)(m,), majd XW⊤+bXW^\top+b-t számol. Hibás alak esetén adjon értelmes AssertionError üzenetet. Tesztelje a labor X,W,bX,W,b értékeivel, és ellenőrizze np.allclose segítségével atol=1e-6, rtol=1e-5 mellett a fenti ZexpectedZ_{\text{expected}} mátrixszal. Elvárt átadandó: teljes függvény, teszt és a hibaüzenet.

F4 (hibakeresési, nehézség 2). Tekintse a következő függvényt:

def forward_wrong(X, W, b):
    return X @ W + b

A hívás X.shape=(2,2), W.shape=(3,2), b.shape=(3,). Mi a hiba oka, mi a közvetlen következménye, és hogyan javítja? Ellenőrizze a javítást a labor számadataival. Elvárt átadandó: a hiba oka, a hibás kimenet vagy kivétel leírása, a javított sor és a visszaellenőrzés.

F5 (kísérlettervezési/transzfer, nehézség 3). A GlyphLab data/images.npy tömbje (360,1,24,24)(360,1,24,24) alakú. Tervezzen baseline kísérletet, amely a képeket 24⋅24=57624\cdot24=576 dimenziós vektorrá lapítja, és egy háromkimenetű affin réteget alkalmaz. Adja meg a paraméterszámot, egy kézi kontrollt a helyes alak ellenőrzésére, a betanítás előtti baseline-t, a metrikát és az érvényességi korlátot. Ez nyitott feladat: legalább egy teljes protokollvázlat szükséges. Elvárt átadandó: legfeljebb féloldalas terv.

3.2.8 Megoldások és indoklás

F1 megoldás. A standard bázisvektorok képei: L(e1)=L(1,0)=(2,1)L(e_1)=L(1,0)=(2,1), L(e2)=L(0,1)=(−1,1)L(e_2)=L(0,1)=(-1,1). Ezért

W=(2−111).W=\begin{pmatrix}2&-1\\1&1\end{pmatrix}.

x=(1,2)x=(1,2) esetén L(x)=(2⋅1−2,1+2)=(0,3)L(x)=(2\cdot1-2,\;1+2)=(0,3). A homogenitás: L(−3x)=L(−3,−6)=(−6+6,−3−6)=(0,−9)L(-3x)=L(-3,-6)=(-6+6,\;-3-6)=(0,-9), és −3L(x)=−3(0,3)=(0,−9)-3L(x)=-3(0,3)=(0,-9), tehát egyenlők. Az f(x)=L(x)+(1,0)f(x)=L(x)+(1,0) leképezés nem lineáris, mert f(0,0)=(1,0)≠(0,0)f(0,0)=(1,0)\neq(0,0), márpedig lineáris leképezés a nullvektort nullvektorba viszi.

F2 megoldás. Mivel L1,L2L_1,L_2 lineárisak, a bizonyított állítás szerint L2∘L1L_2\circ L_1 lineáris, mátrixa W2W1W_2W_1. Számoljuk ki W2W1W_2W_1 sorait úgy, hogy W2W_2 egy sorát skalárisan szorozzuk W1W_1 oszlopaival. W1W_1 oszlopai (1,0,1)(1,0,1) és (0,1,1)(0,1,1).

Tehát

W2W1=(1−1230−121),W_2W_1=\begin{pmatrix}1&-1\\2&3\\0&-1\\2&1\end{pmatrix},

és a (3,2)(3,2) elem a harmadik sor második oszlopában −1-1. A nullvektor képe W2W1(0,0)=(0,0,0,0)W_2W_1(0,0)=(0,0,0,0), ahogy minden lineáris leképezésre elvárható. Alakellenőrzés: 4×34\times3 szorozva 3×23\times2 mátrixszal 4×24\times2-t ad, ezért a négy sor két-két eleme helyes.

F3 megoldás.

import numpy as np

def affine_forward(X, W, b):
    assert X.ndim == 2, "X-nek (N, d) alakunak kell lennie"
    assert W.ndim == 2, "W-nek (m, d) alakunak kell lennie"
    assert b.ndim == 1, "b-nek (m,) alakunak kell lennie"
    N, d = X.shape
    m, d_w = W.shape
    assert d == d_w, f"bemeneti dimenzio elteres: X {d}, W {d_w}"
    assert b.shape[0] == m, f"bias meret {b.shape[0]}, de {m} kell"
    return X @ W.T + b

X = np.array([[1.0, 3.0], [-2.0, 0.5]], dtype=np.float32)
W = np.array([[1.0, -2.0], [0.0, 1.0], [2.0, 0.0]], dtype=np.float32)
b = np.array([0.5, -1.0, 0.2], dtype=np.float32)
Z = affine_forward(X, W, b)
Z_expected = np.array([[-4.5, 2.0, 2.2], [-2.5, -0.5, -3.8]], dtype=np.float32)
assert Z.shape == (2, 3)
assert np.allclose(Z, Z_expected, atol=1e-6, rtol=1e-5)

A hibaüzenet például X.shape=(2,3), W.shape=(3,2) esetén: bemeneti dimenzio elteres: X 3, W 2.

F4 megoldás. A hiba oka: a batchelt konvencióban Z=XW⊤+bZ=XW^\top+b szerepel, a kód azonban XWXW-t számol, tehát elmarad a transzponálás. Következmény: a hívott alakokkal XX (2,2)(2,2) és WW (3,2)(3,2) belső dimenziói 22 és 33, ezért a szorzás ValueError kivételt ad; ha véletlenül d=md=m lenne, a kód lefutna, de a súly oszlopait használná sorok helyett, ami általában más értéket ad. Javítás: return X @ W.T + b. Visszaellenőrzés: a labor számadataival a kimenet a fenti ZZ, amely allclose szerint egyezik a kézi számítással.

F5 megoldásminta. A vektorizálás Xflat∈ℝ360×576X_{\text{flat}}\in\mathbb R^{360\times576}, a réteg W∈ℝ3×576W\in\mathbb R^{3\times576}, b∈ℝ3b\in\mathbb R^3, a kimenet Z=XflatW⊤+b∈ℝ360×3Z=X_{\text{flat}}W^\top+b\in\mathbb R^{360\times3}. Paraméterszám: 3⋅576+3=17313\cdot576+3=1731. Kézi kontroll: válasszunk egy rögzített képet, W=0W=0, b=0b=0 mellett Z=0Z=0; majd egyetlen WW elem 1-re állításával a megfelelő pixel értéke jelenik meg a kimenetben. Ez a linearitás közvetlen ellenőrzése. Baseline: az osztályozó mindig a tanító osztálygyakoriságok szerinti legvalószínűbb osztályt jósolja; metrika: accuracy, de a három osztály kiegyensúlyozott, így az esély baseline körülbelül 1/31/3. A modellt csak a train spliten tanítjuk, a val spliten választunk, a test splitet egyszer, a végén értékeljük; a megfigyelési egység a scene_id. Érvényességi korlát: az affin modell csak globális intenzitásmintázatot lát, eltolási invarianciája nincs, ezért ez kizárólag alsó baseline, nem várható tőle a konvolúciós modellek teljesítménye. A terv nem állít mért eredményt; a futtatás előtt a protokollt rögzíteni kell.

3.2.9 Gyakori tévedés, önellenőrzés és visszahívás

Gyakori tévedés. A PyTorch nn.Linear(in_features, out_features) súlymátrixa (out_features, in_features) alakú, tehát W∈ℝm×dW\in\mathbb R^{m\times d}. Egyes lineáris algebrai könyvek a sorvektoros x⊤x^\top konvencióban W∈ℝd×mW\in\mathbb R^{d\times m} alakot használnak. A két mátrix egymás transzponáltja; ha összekeverjük őket, a forward rossz lesz. Konkrét ellenpélda: legyen a PyTorch-konvenciójú súly

Wpt=(1234),W_{\text{pt}}=\begin{pmatrix}1&2\\3&4\end{pmatrix},

tehát d=m=2d=m=2. Az x=(1,1)x=(1,1) bemenetre a helyes kimenet Wptx=(3,7)W_{\text{pt}}x=(3,7). Ha valaki tévesen a sorvektoros x⊤Wptx^\top W_{\text{pt}} kifejezést számolja, az (1,1)Wpt=(4,6)(1,1)W_{\text{pt}}=(4,6) eredményt ad; ez nem a kívánt leképezés. Batchelt alakban a hiba jellemzően az X @ W használata X @ W.T helyett, ami d≠md\neq m esetén alakhibát, d=md=m esetén rossz értéket okoz.

Önellenőrzés. (1) Miért Z=XW⊤+bZ=XW^\top+b és nem XW+bXW+b? (2) Mondja ki, miért viszi a lineáris leképezés a nullvektort nullvektorba. (3) Két affin réteg kompozíciójának hatékony bias-vektora miért W2b1+b2W_2b_1+b_2? (4) Ellenőrizze a laborban, hogy a b a kimenet melyik tengelyéhez adódik. A válaszok a fenti levezetésekben megtalálhatók; ha bármelyik kérdésre nem tud indokolni, térjen vissza a megfelelő szakaszhoz.

Visszahívás. A 3.1. Vektor, norma és skalárszorzat skalárszorzat-fogalma itt a WW sorai és az xx közötti szorzatösszegben jelenik meg. A 2.2. Lebegőpont és stabil elemi számítás allclose- és float32-tolerancia-gondolata indokolja, miért nem ==-tel ellenőrizzük a 0,20{,}2-t tartalmazó kézi eredményt.

3.2.10 Rövid összefoglaló

A lineáris leképezés két feltételt teljesít: additivitás és homogenitás. Rögzített bázisban minden lineáris leképezés egy W∈ℝm×dW\in\mathbb R^{m\times d} mátrixszal reprezentálható, amelynek oszlopai a bázisvektorok képei; a rang a képtere dimenziója. Az affin leképezés Wx+bWx+b; ha b≠0b\neq0, nem lineáris, mert a nullvektor képe nem nulla. Batchelt bemenetre a kimenet Z=XW⊤+bZ=XW^\top+b, ahol a bias sorirányban broadcastolódik. Két lineáris réteg kompozíciója lineáris, mátrixa W2W1W_2W_1; két affin réteg kompozíciója affin, hatékony biasszal W2b1+b2W_2b_1+b_2, és általában nem lineáris. A NumPy-labor két mintára és három kimenetre ellenőrizte a kézi számítást.

3.2.11 Következő alkalmazás

A 3.3. Vetítés, legkisebb négyzetek és kondicionáltság a vetítést és a legkisebb négyzeteket tárgyalja: az affin réteg ott jelenik meg mint a legjobban illeszkedő lineáris modell keresésének alapművelete, a kondicionáltság pedig a WW mátrix numerikus tulajdonságait kapcsolja a gradiensalapú tanításhoz.

3.2.12 Források