9.2 MLP és nemlinearitás

9.2.1 Cél, előismeret és induló kérdés

Ez az egység a 9.1. Neuron és perceptron perceptron közvetlen folytatása. Ott beláttuk, hogy az XOR négy pontja lineárisan szeparálhatatlan, ezért egyetlen affin score és küszöbözés nem oldhatja meg. Most azt vizsgáljuk, mit nyerünk, ha több affin réteget komponálunk, és közéjük nemlineáris aktivációt teszünk.

Előismeret a 9.1. Neuron és perceptron alfejezetből: affin score s(x)=w⊤x+bs(x)=w^\top x+b, küszöbözés, lineáris szeparálhatóság. A mátrixműveletekhez a 3.2. Mátrixszorzás és affín réteg, a batch-alakokhoz a 2.1. Python, NumPy és tenzoralak konvencióit használjuk. A kapacitás és a hipotézisosztály mérete a 8.2. Véges hipotézisosztály egyenletes korlátja alfejezetben épült fel, és itt a paraméterszám értelmezésénél térünk vissza rá röviden.

Induló kérdés: két affin réteget kötünk össze, de a kettő közé nem teszünk semmilyen aktivációt. Meg tudja-e tanulni ez a modell az XOR-t? És hány paraméter kell ahhoz, hogy egy rejtett rétegű hálózat a négy XOR-pontot elválassza? Mielőtt tovább olvas, becsülje meg a 2–2–1 méretű hálózat paraméterszámát.

9.2.2 MLP, rejtett réteg és a három alapaktiváció

Definíció (két rétegű MLP). Legyen dd a bemeneti dimenzió, mm a rejtett szélesség, KK a kimeneti dimenzió. A modell három lépésből áll:

  1. rejtett pre-aktiváció: a(1)=W(1)x+b(1)a^{(1)}=W^{(1)}x+b^{(1)}, ahol W(1)∈ℝm×dW^{(1)}\in\mathbb R^{m\times d}, b(1)∈ℝmb^{(1)}\in\mathbb R^m, x∈ℝdx\in\mathbb R^d;
  2. rejtett aktiváció: h=φ(a(1))h=\varphi(a^{(1)}), ahol φ\varphi koordinátánként hat: φ(u)j=φ(uj)\varphi(u)_j=\varphi(u_j);
  3. kimeneti logit: z=W(2)h+b(2)z=W^{(2)}h+b^{(2)}, ahol W(2)∈ℝK×mW^{(2)}\in\mathbb R^{K\times m}, b(2)∈ℝKb^{(2)}\in\mathbb R^K.

Batchelt alakban, X∈ℝN×dX\in\mathbb R^{N\times d} sor-megfigyelésekkel:

Z=φ(XW(1)⊤+b(1))W(2)⊤+b(2),Z=\varphi\!\left(XW^{(1)\top}+b^{(1)}\right)W^{(2)\top}+b^{(2)},

ahol b(1)∈ℝmb^{(1)}\in\mathbb R^m sorirányban broadcastolódik az N×mN\times m mátrixhoz, és a kimenet Z∈ℝN×KZ\in\mathbb R^{N\times K}. Osztályozásban ZZ logit, tehát aktiváció előtti pontszám; a softmaxot vagy a döntési küszöböt később alkalmazzuk, nem a hálózat belsejében.

A rejtett rétegen a W(1),b(1),φW^{(1)},b^{(1)},\varphi hármast értjük; a hh vektort rejtett reprezentációnak nevezzük, mert nem célváltozó, hanem a hálózat közbülső belső ábrázolása.

A három leggyakoribb aktiváció pontos definíciója u∈ℝu\in\mathbb R-re:

ReLU(u)=max(0,u),σ(u)=11+e−u=eu1+eu,tanh(u)=eu−e−ueu+e−u.\operatorname{ReLU}(u)=\max(0,u),\qquad \sigma(u)=\frac{1}{1+e^{-u}}=\frac{e^u}{1+e^u},\qquad \tanh(u)=\frac{e^u-e^{-u}}{e^u+e^{-u}}.

A sigmoid értékkészlete (0,1)(0,1), ezért logit-utáni valószínűségjelöltként is használjuk; a tanh értékkészlete (−1,1)(-1,1), és zéruscentrált. A kettő között egyszerű azonosság áll fenn: tanh(u)=2σ(2u)−1\tanh(u)=2\sigma(2u)-1. Ezt behelyettesítéssel ellenőrizhetjük:

2σ(2u)−1=21+e−2u−1=1−e−2u1+e−2u=e2u−1e2u+1=tanh(u).2\sigma(2u)-1=\frac{2}{1+e^{-2u}}-1=\frac{1-e^{-2u}}{1+e^{-2u}} =\frac{e^{2u}-1}{e^{2u}+1}=\tanh(u).

A ReLU a nulla pontban klasszikus értelemben nem differenciálható; ez a forward számításra nincs hatással, de a későbbi gradiensszámításnál (10.2. Affín réteg és aktiváció backward) konvenciót igényel.

Paraméterszám. A fenti hálózatnak md+m+Km+Kmd+m+Km+K paramétere van: W(1)W^{(1)} elemei mdmd, b(1)b^{(1)} elemei mm, W(2)W^{(2)} elemei KmKm, b(2)b^{(2)} elemei KK. A gyakorlatban a biasokat is paraméternek számoljuk, tehát a 2–2–1 XOR-hálózat paraméterszáma 2⋅2+2+1⋅2+1=92\cdot2+2+1\cdot2+1=9.

9.2.3 Miért nem elég az affin kompozíció: a kollapszustétel

A levezetési kötelezettség a következő állítás.

Tétel (aktiváció nélküli rétegek összevonhatósága). Legyen W(1)∈ℝm×dW^{(1)}\in\mathbb R^{m\times d}, b(1)∈ℝmb^{(1)}\in\mathbb R^m, W(2)∈ℝK×mW^{(2)}\in\mathbb R^{K\times m}, b(2)∈ℝKb^{(2)}\in\mathbb R^K. Ha a két réteg között nincs nemlineáris aktiváció, azaz

f(x)=W(2)(W(1)x+b(1))+b(2),f(x)=W^{(2)}\!\left(W^{(1)}x+b^{(1)}\right)+b^{(2)},

akkor minden x∈ℝdx\in\mathbb R^d-re

f(x)=W̃x+b̃,f(x)=\widetilde Wx+\widetilde b,

ahol

W̃=W(2)W(1)∈ℝK×d,b̃=W(2)b(1)+b(2)∈ℝK.\widetilde W=W^{(2)}W^{(1)}\in\mathbb R^{K\times d}, \qquad \widetilde b=W^{(2)}b^{(1)}+b^{(2)}\in\mathbb R^K.

Indukcióval tetszőleges számú affin rétegre ugyanez igaz: a teljes kompozíció egyetlen affin leképezés.

Bizonyítás. A mátrixszorzás disztributív az összeadásra nézve, ezért

W(2)(W(1)x+b(1))+b(2)=W(2)W(1)x+W(2)b(1)+b(2)=W̃x+b̃.W^{(2)}\!\left(W^{(1)}x+b^{(1)}\right)+b^{(2)} =W^{(2)}W^{(1)}x+W^{(2)}b^{(1)}+b^{(2)} =\widetilde Wx+\widetilde b.

Az x↦W̃x+b̃x\mapsto \widetilde Wx+\widetilde b hozzárendelés éppen egy affin réteg, tehát a két rétegű kompozíció nem hoz be új függvényosztályt. Az indukciós lépés: ha az első L−1L-1 affin réteg már W̃x+b̃\widetilde Wx+\widetilde b alakú, akkor az LL-edik réteg ezen az összevont alakon alkalmazva ugyanezzel a számolással egyetlen affin leképezéssé vonható össze. Az L=1L=1 alapeset triviális.

A bizonyítás itt teljes, nincs szükség semmilyen további feltételre. Az állítás mélyebb jelentése: a puszta rétegszám-növelés önmagában nem növeli a reprezentálható függvények halmazát. A 8.2. Véges hipotézisosztály egyenletes korlátja alfejezetben látott kapacitásérveléshez hasonlóan itt is az a kérdés, hogy a paramétertér mely része érhető el ténylegesen; az aktiváció nélküli mély hálózat ugyanannyit tud, mint az egyrétegű, mert a leképezés ugyanaz.

A tétel következménye az induló kérdésre: aktiváció nélkül az XOR sem oldható meg, bárhogyan választjuk a rétegszámot, mert minden ilyen hálózat lineáris osztályozóvá redukálódik.

9.2.4 ReLU-hálózatok szakaszonként affin szerkezete

A ReLU azért hasznos, mert a belőle épített hálózat geometriája pontosan leírható anélkül, hogy a tanítási dinamikát ismernénk.

Állítás (piecewise affine, szakaszonként affin). Legyen φ=ReLU\varphi=\operatorname{ReLU} és

f(x)=W(2)φ(W(1)x+b(1))+b(2).f(x)=W^{(2)}\varphi\!\left(W^{(1)}x+b^{(1)}\right)+b^{(2)}.

Ekkor ff folytonos, és ℝd\mathbb R^d felbontható legfeljebb 2m2^m olyan poliéder-tartományra, amelyeken ff affin.

Bizonyításvázlat saját levezetéssel. Minden j∈{1,…,m}j\in\{1,\dots,m\} rejtett neuronhoz tartozik egy lineáris pre-aktiváció sj(x)=wj(1)⊤x+bj(1)s_j(x)=w_j^{(1)\top}x+b_j^{(1)}. Rögzítsünk egy α∈{0,1}m\alpha\in\{0,1\}^m aktivációs mintázatot, és definiáljuk

Dα={x∈ℝd:sj(x)>0 ha αj=1,sj(x)≤0 ha αj=0}.D_\alpha=\left\{x\in\mathbb R^d:\ s_j(x)>0 \text{ ha } \alpha_j=1,\ s_j(x)\le 0 \text{ ha } \alpha_j=0\right\}.

Ez legfeljebb mm nyílt vagy zárt féltér metszete, tehát poliéder. A DαD_\alpha tartományon minden neuron aktivációja rögzített: vagy φ(sj)=sj\varphi(s_j)=s_j, vagy φ(sj)=0\varphi(s_j)=0. Ezért itt hh affin függvénye xx-nek, és mivel ff affin függvénye hh-nak, ff is affin xx-ben. A 2m2^m darab DαD_\alpha együttesen lefedi ℝd\mathbb R^d-t, bár a határokon átfedhetnek; a folytonosság garantálja, hogy az átfedő darabok ott megegyeznek. A folytonosság maga abból következik, hogy a ReLU, az affin leképezések és a kompozíció mind folytonosak.

A darabok száma legfeljebb 2m2^m, tehát a rejtett szélességgel exponenciálisan nőhet; ez adja a ReLU-hálózatok kifejezőerejének egyik forrását, amelyet a következő 9.3. Expresszivitás és approximációs állítások egység formalizál.

9.2.5 Kézi XOR-példa

Használjuk a 9.1. Neuron és perceptron pontjait 0/10/1 célokkal:

(0,0)↦0,(1,0)↦1,(0,1)↦1,(1,1)↦0.(0,0)\mapsto 0,\quad(1,0)\mapsto 1,\quad(0,1)\mapsto 1,\quad(1,1)\mapsto 0.

Válasszuk a következő súlyokat: d=2d=2, m=2m=2, K=1K=1,

W(1)=(1111),b(1)=(−0.5−1.5),W(2)=(2−6),b(2)=0.W^{(1)}=\begin{pmatrix}1&1\\1&1\end{pmatrix},\quad b^{(1)}=\begin{pmatrix}-0.5\\-1.5\end{pmatrix},\quad W^{(2)}=\begin{pmatrix}2&-6\end{pmatrix},\quad b^{(2)}=0.

A rejtett pre-aktiváció és aktiváció:

a(1)=W(1)x+b(1)=(x1+x2−0.5x1+x2−1.5),h=ReLU(a(1)).a^{(1)}=W^{(1)}x+b^{(1)} =\begin{pmatrix}x_1+x_2-0.5\\x_1+x_2-1.5\end{pmatrix}, \qquad h=\operatorname{ReLU}(a^{(1)}).

A négy pontra:

xx a(1)a^{(1)} hh z=W(2)hz=W^{(2)}h
(0,0)(0,0) (−0.5,−1.5)(-0.5,-1.5) (0,0)(0,0) 00
(1,0)(1,0) (0.5,−0.5)(0.5,-0.5) (0.5,0)(0.5,0) 11
(0,1)(0,1) (0.5,−0.5)(0.5,-0.5) (0.5,0)(0.5,0) 11
(1,1)(1,1) (1.5,0.5)(1.5,0.5) (1.5,0.5)(1.5,0.5) 3−3=03-3=0

A döntési szabály z>0.5z>0.5: a két középső pont 1 osztályt kap, a két szélső 0-t. Ez a konstrukció tehát a négy ponton tökéletesen megoldja az XOR-t. A hidden térben a négy pont: (0,0)(0,0), (0.5,0)(0.5,0), (0.5,0)(0.5,0), (1.5,0.5)(1.5,0.5); a 2h1−6h2−0.5=02h_1-6h_2-0.5=0 affin határ szigorúan elválasztja a két osztályt.

Vegyük észre a kollapszustétel konkrét hatását: ha a ReLU-t elhagyjuk, akkor

W̃=W(2)W(1)=(2−6)(1111)=(−4−4),b̃=W(2)b(1)+b(2)=(2−6)(−0.5−1.5)=8,\widetilde W=W^{(2)}W^{(1)} =\begin{pmatrix}2&-6\end{pmatrix} \begin{pmatrix}1&1\\1&1\end{pmatrix} =\begin{pmatrix}-4&-4\end{pmatrix}, \qquad \widetilde b=W^{(2)}b^{(1)}+b^{(2)} = \begin{pmatrix}2&-6\end{pmatrix}\begin{pmatrix}-0.5\\-1.5\end{pmatrix}=8,

tehát a lineárissá összevont modell z=−4x1−4x2+8z=-4x_1-4x_2+8. A négy ponton ez 8,4,4,08,4,4,0 értéket ad: a (1,1)(1,1) pont a legnagyobb logitot kapta, miközben 0 osztályú, ezért küszöbözéssel nem lehet mind a négy pontot helyesen osztályozni.

9.2.6 Labor: XOR-forward NumPy-ban

A labor célja, hogy a fenti kézi konstrukciót ellenőrizhető kóddal számolja ki. Mivel a konstrukció determinisztikus, seedre nincs szükség; dtype float64, device CPU.

Munkakönyvtár: n034_labor/. Fájl: xor_mlp_forward.py.

import numpy as np

# dtype float64, CPU, nincs véletlen forrás
W1 = np.array([[1.0, 1.0],
               [1.0, 1.0]], dtype=np.float64)      # (2, 2)
b1 = np.array([-0.5, -1.5], dtype=np.float64)      # (2,)
W2 = np.array([[2.0, -6.0]], dtype=np.float64)     # (1, 2)
b2 = np.array([0.0], dtype=np.float64)             # (1,)

X = np.array([[0.0, 0.0],
              [1.0, 0.0],
              [0.0, 1.0],
              [1.0, 1.0]], dtype=np.float64)       # (4, 2)

def relu(u):
    return np.maximum(0.0, u)

Z_pre1 = X @ W1.T + b1          # (4, 2) + (2,) sorirányú broadcast
H = relu(Z_pre1)                # (4, 2)
Z = H @ W2.T + b2               # (4, 1)

print("H shape:", H.shape)
print("Z shape:", Z.shape)
print("H:\n", H)
print("Z:\n", Z)

pred = (Z > 0.5).astype(np.int64)
print("pred:\n", pred.ravel())

expected = np.array([[0.0], [1.0], [1.0], [0.0]], dtype=np.float64)
print("allclose expected:", np.allclose(Z, expected, atol=1e-12))

Futtatás: python xor_mlp_forward.py a n034_labor/ könyvtárban. A várt kimenet jelölt szemléltetés, nem mért futás:

H shape: (4, 2)
Z shape: (4, 1)
H:
 [[0.  0. ]
  [0.5 0. ]
  [0.5 0. ]
  [1.5 0.5]]
Z:
 [[0.]
  [1.]
  [1.]
  [0.]]
pred:
 [0 1 1 0]
allclose expected: True

Az ellenőrzés a négy logit pontos egyezését kéri atol=1e-12 tűréssel; a műveletek feles értékeket tartalmaznak, amelyek float64-ben pontosan reprezentálhatók, ezért a tűrés bőséges. Az eredmény értelmezése: a rejtett reprezentációban a két osztály már lineárisan szeparálható, és a kimeneti réteg ezt a szeparációt valósítja meg.

Az XOR-példa rejtett reprezentációja - Kézzel konstruált ReLU MLP forwardjából számítva; a 0 osztály a (0,0) és (1.5,0.5) pont, az 1 osztály a két (0.5,0) pont.

9.2.7 Feladatok

F1 (fogalmi, nehézség 1). Magyarázza el, miért nem oldható meg az XOR két affin réteggel aktiváció nélkül. A fenti XOR-súlyokból kiindulva írja fel az összevont affin függvényt, és mutassa meg, hogy nincs olyan τ\tau küszöb, amely mind a négy pontot helyesen osztályozza.

F2 (levezetési/bizonyítási, nehézség 2). Legyen d=3d=3, m=2m=2, K=1K=1. Adja meg a

W(1)=(120011),b(1)=(0.5−1),W(2)=(2−1),b(2)=0.5W^{(1)}=\begin{pmatrix}1&2&0\\0&1&1\end{pmatrix},\quad b^{(1)}=\begin{pmatrix}0.5\\-1\end{pmatrix},\quad W^{(2)}=\begin{pmatrix}2&-1\end{pmatrix},\quad b^{(2)}=0.5

súlyokat aktiváció nélküli kompozícióhoz. Vezesse le a kollapszustétel alkalmazásával W̃\widetilde W-t és b̃\widetilde b-t, majd az x=(1,−1,2)⊤x=(1,-1,2)^\top ponton ellenőrizze a közvetlen és az összevont számítást.

F3 (implementációs, nehézség 1). Írjon NumPy-függvényt mlp_forward(X, W1, b1, W2, b2) néven, amely ReLU aktivációval számolja a két rétegű MLP logitjait. Az inputok alakja (N,d),(m,d),(m,),(K,m),(K,)(N,d),(m,d),(m,),(K,m),(K,); a visszatérés alakja (N,K)(N,K). Tesztelje a labor XOR-példáján, és ellenőrizze a shape-eket N=4,d=2,m=2,K=1N=4,d=2,m=2,K=1 mellett atol=1e-12 tűréssel.

F4 (hibakeresési, nehézség 2). Egy hallgató a következő előrefelé számítást írta:

H = relu(X @ W1.T + b1)
Z = relu(H @ W2.T + b2)

A tanítás során a loss nem csökken 0.3 alá egy bináris XOR-feladaton BCEWithLogitsLoss-szal, pedig a cél logitoknak a 0 osztályú pontokon negatívnak kellene lenniük. Hol van a hiba, mi a következménye a logitokra és a gradiensre, és hogyan javítandó?

F5 (kísérleti/transzfer, nehézség 2). Tervezzen kontrollált kísérletet annak eldöntésére, hogy egy rejtett rétegű MLP szükséges-e az XOR megtanulásához. Adja meg: az adatot (a négy pont, illetve annak zajosított változatai), a train/val felosztást, a baseline-t (perceptron), a változó tényezőt (rejtett réteg jelenléte), a metrikát, legalább 5 seeddel való ismétlést, és a következtetés érvényességi korlátját.

9.2.8 Megoldások és indoklás

F1 megoldása. Az aktiváció nélküli két rétegű modell a kollapszustétel miatt egyetlen affin függvény. A megadott súlyokkal a fenti levezetés alapján z=−4x1−4x2+8z=-4x_1-4x_2+8. A négy ponton a logitok:

z(0,0)=8,z(1,0)=4,z(0,1)=4,z(1,1)=0.z(0,0)=8,\quad z(1,0)=4,\quad z(0,1)=4,\quad z(1,1)=0.

A helyes osztályozáshoz valamilyen τ\tau-ra z(1,0)>τz(1,0)>\tau és z(0,1)>τz(0,1)>\tau, tehát τ<4\tau<4; ugyanakkor z(0,0)≤τz(0,0)\le\tau, tehát τ≥8\tau\ge8. Egyszerre τ<4\tau<4 és τ≥8\tau\ge8 lehetetlen. A (1,1)(1,1) pont 00 logitja is 0 osztályú, ami konzisztens lenne, de a (0,0)(0,0) pont magas logitja már kizárja a küszöbözést. Tehát nincs megfelelő lineáris osztályozó.

F2 megoldása. A kollapszustétel képleteivel:

W̃=W(2)W(1)=(2−1)(120011)=(2⋅1+(−1)⋅02⋅2+(−1)⋅12⋅0+(−1)⋅1)=(23−1).\widetilde W=W^{(2)}W^{(1)} =\begin{pmatrix}2&-1\end{pmatrix} \begin{pmatrix}1&2&0\\0&1&1\end{pmatrix} =\begin{pmatrix}2\cdot1+(-1)\cdot0 & 2\cdot2+(-1)\cdot1 & 2\cdot0+(-1)\cdot1\end{pmatrix} =\begin{pmatrix}2&3&-1\end{pmatrix}.

b̃=W(2)b(1)+b(2)=(2−1)(0.5−1)+0.5=(1+1)+0.5=2.5.\widetilde b=W^{(2)}b^{(1)}+b^{(2)} =\begin{pmatrix}2&-1\end{pmatrix}\begin{pmatrix}0.5\\-1\end{pmatrix}+0.5 =(1+1)+0.5=2.5.

Közvetlen számítás: W(1)x+b(1)=(1−2+0.5,−1+2−1)=(−0.5,0)W^{(1)}x+b^{(1)}=(1-2+0.5,\ -1+2-1)=(-0.5,0); majd W(2)W^{(2)}-vel és b2-vel: 2(−0.5)+(−1)⋅0+0.5=−0.52(-0.5)+(-1)\cdot0+0.5=-0.5. Összevontan: W̃x+b̃=2−3−2+2.5=−0.5\widetilde Wx+\widetilde b=2-3-2+2.5=-0.5. A két út megegyezik; az alakellenőrzés: W̃∈ℝ1×3\widetilde W\in\mathbb R^{1\times3}, b̃∈ℝ1\widetilde b\in\mathbb R^1.

F3 megoldása.

import numpy as np

def mlp_forward(X, W1, b1, W2, b2):
    # X: (N,d), W1: (m,d), b1: (m,), W2: (K,m), b2: (K,)
    Z = X @ W1.T + b1          # (N,m)
    H = np.maximum(0.0, Z)     # (N,m)
    return H @ W2.T + b2       # (N,K)

W1 = np.array([[1.0, 1.0], [1.0, 1.0]], dtype=np.float64)
b1 = np.array([-0.5, -1.5], dtype=np.float64)
W2 = np.array([[2.0, -6.0]], dtype=np.float64)
b2 = np.array([0.0], dtype=np.float64)
X = np.array([[0.0, 0.0], [1.0, 0.0], [0.0, 1.0], [1.0, 1.0]],
             dtype=np.float64)

Z = mlp_forward(X, W1, b1, W2, b2)
expected = np.array([[0.0], [1.0], [1.0], [0.0]], dtype=np.float64)
assert Z.shape == (4, 1)
assert np.allclose(Z, expected, atol=1e-12)
print("OK", Z.shape, Z.ravel())

Az ellenőrzés a shape-re és a négy logitra terjed ki. A np.maximum(0.0, Z) koordinátánkénti ReLU, tehát a batch-művelet is pontosan a definíciót követi.

F4 megoldása. A hiba a kimeneti rétegen lévő felesleges ReLU. A BCEWithLogitsLoss bemenete logit, amelynek negatívnak is kell tudnia lenni, hiszen a szigmoidon átmenve ebből lesz 0.50.5-nél kisebb valószínűség. A ReLU a negatív logitokat nullára vágja, így a 0 osztályú pontokra a modell legjobb esetben is 0.50.5 körüli valószínűséget tud adni, a loss nem mehet a kívánt szint alá, és a BCEWithLogits gradiensét is torzítja a saturáció. A javítás: Z = H @ W2.T + b2, aktiváció nélkül. A visszaellenőrzés a labor XOR-példáján: a negatív logitot igénylő konstrukció, például b(2)=−0.25b^{(2)}=-0.25, a javított kódban −0.25-0.25 értéket ad a (0,0)(0,0) pontra, a hibás kódban 00-t, és ez a döntési határt is eltolhatja.

F5 megoldásminta. Az adat a négy XOR-pont, valamint ezekből képzett zajos változatok: minden ponthoz adjunk kis független Gauss-zajt, a címke az eredeti pont címkéje marad; ez a feladat nehezedik, de a cél itt a kontroll. A split: a négy alappont mindig jelenjen meg trainben; a zajos pontokból 60% train, 40% val partíció. A baseline a 9.1. Neuron és perceptron perceptron; a változó tényező a rejtett réteg megléte, azonos 22 szélességgel. Metrika: accuracy a val némileg zajos pontjain. Öt különböző seed mellett tanítsuk mindkét modellt, rögzítve a tanulási rátát, az epochok számát és az inicializálást. A várt jelenség: a perceptron a tiszta XOR-on 50%50\% körül marad, az MLP a tiszta pontokon 100%100\%-ot érhet el. A következtetés korlátja: ez a kísérlet a 2-dimenziós XOR-ra bizonyítja a rejtett réteg szükségességét, de általános architektúra-állítást nem alapoz meg; ahhoz a hipotézisosztályok összehasonlítására és nagyobb adatra van szükség a 8.2. Véges hipotézisosztály egyenletes korlátja keretében.

9.2.9 Tipikus tévedés, önellenőrzés és visszahívás

A leggyakoribb tévedés: „több lineáris réteg mégiscsak gazdagabb modellt ad, mert több paramétere van.” Ez hamis. A kollapszustétel bizonyítja, hogy a kompozíció függvényosztálya nem bővül: bármely két affin réteg egyetlen W̃,b̃\widetilde W,\widetilde b párba írható át. Az XOR-példán a 9 paraméteres lineáris hálózat is csak a W̃=(−4,−4)\widetilde W=(-4,-4), b̃=8\widetilde b=8 affin egyenes családját valósítja meg, és a fentiek szerint nem tudja a négy pontot elválasztani. A paraméterszám tehát önmagában nem reprezentációs erő; a nemlinearitás hiánya miatt a plusz paraméterek egy része redundáns.

Rövid önellenőrzés. (1) Melyik azonosság köti össze a sigmoidot és a tanh-t? (2) Miért elegendő a ReLU-t koordinátánként definiálni? (3) Ha φ(u)=cu\varphi(u)=cu valamely c≠0c\neq0 konstansra, kollapszál-e a két réteg? (Válasz: igen, mert φ\varphi lineáris, és a kollapszustétel bizonyításában a cc szorzó beolvad W(2)W^{(2)}-be; a nemlinearitásnak ténylegesen nemlineárisnak kell lennie.)

Korábbi fogalom visszahívása: a 9.1. Neuron és perceptron alfejezetben a konvex burokkal bizonyítottuk az XOR lineáris szeparálhatatlanságát. Az itteni kollapszustétel ennek az állításnak a mélységi kiterjesztése: akármilyen mély, de aktiváció nélküli hálózat sem tud többet egy perceptronnál. A 8.2. Véges hipotézisosztály egyenletes korlátja alfejezetben tárgyalt kapacitásfogalom szempontjából ez arra figyelmeztet, hogy a hipotézisosztály tényleges méretét a nemlinearitás, nem a puszta rétegszám határozza meg.

9.2.10 Rövid összefoglaló

A két rétegű MLP rejtett affin transzformációt, koordinátánkénti nemlineáris aktivációt és kimeneti affin réteget komponál. ReLU-val a hálózat folytonos és szakaszonként affin: legfeljebb 2m2^m poliéder-darabon egy-egy affin függvény. Aktiváció nélkül bármennyi affin réteg egyetlen W̃=W(2)W(1)\widetilde W=W^{(2)}W^{(1)}, b̃=W(2)b(1)+b(2)\widetilde b=W^{(2)}b^{(1)}+b^{(2)} paraméterű affin leképezéssé vonható össze, tehát a rétegmélység önmagában nem növeli a kifejezőerőt. A kézi XOR-konstrukció 9 paraméterrel és 2 rejtett neuronnal elválasztja a négy pontot, amelyeket perceptron nem tud; a NumPy-forward ezt ellenőrzi.

A következő 9.3. Expresszivitás és approximációs állítások egységben ezt a kifejezőerőt formalizáljuk approximációs tételekkel, és a P24 Cybenko-eredmény feltételeit is ott tárgyaljuk.

9.2.11 Források