11-1 System warstwowy
11-2 Pochodne dla systemu warstwowego 11-3 Propagacja gradientu
11-4 Propagacja zwrotna gradientu 11-5 Ilustracja (jednowymiarowa) 11-6 Ilustracja (wielowymiarowa) 11-7 Porównanie
11-8 System uporządkowany
11-9 Pochodne dla systemów uporządkowanych 11-10 Propagacja gradientu - postać lokalna
11-11 Propagacja zwrotna gradientu - postać lokalna 11-12 Ilustracja
System warstwowy
f1 : X0 7→ X1, x1 = f1(x0) . . .
fk : Xk−1 7→ Xk, xk = fk(xk−1) . . .
fn : Xn−1 7→ Xn xn = fn(xn−1) xn = fn(fn−1(. . . (f1(x0))))
Pochodne dla systemu warstwowego
xn = fn(fn−1(. . . (f1(x0))))
• notacja
fk′ = dfk
dxk−1
dla i = 1, . . . , n x′k|ℓ = dxk
dxℓ
dla ustalonych x0, . . . xℓ−1, ℓ < k
• obliczenie pochodnej dxn
dx0 = fn′(xn−1) fn′−1(xn−2) . . . f2′(x1) f1′(x0) gdzie
xk = fk(fk−1 · · · f1(x0)), k = 1, . . . , n
Propagacja gradientu
• grupowanie “od wejścia do wyjścia”
x′n|0 = dxn
dx0 = fn′(xn−1) fn′−1(xn−2) . . . f2′(x1) f1′(x0)
| {z }
x′
1|0
| {z }
x′
2|0
| {z }
x′
n−1|0
• algorytm propagacji gradientu x′0|0 = 1
x′k|0 = fk′(xk−1) x′k−1|0
xk = fk(xk−1) k = 1, . . . , n
• pochodne i wartości funkcji obliczane są w jednym kroku rekurencyjnym, dla k = 1, . . . , n.
Propagacja zwrotna gradientu
• grupowanie “od wyjścia do wejścia”
x′n|0 = dxn dx0
= fn′(xn−1)
| {z }
x′
n|n−1
fn′−1(xn−2)
| {z }
x′
n|n−2
. . . f2′(x1)
| {z }
x′
n|1
f1′(x0)
• algorytm propagacji zwrotnej
– przejście “do przodu”: wartości zmiennych
xk = fk(xk−1), k = 1, . . . , n – powrót: wartości pochodnych
x′n|n = 1
x′n|ℓ = x′n|ℓ+1fℓ+1′ (xℓ), ℓ = n − 1, . . . , 0
Ilustracja (jednowymiarowa)
y = sin(exp(x3cos(x3)))
System warstwowy (x0 = x, x4 = y)
x1 = x30
x2 = x1 cos(x1) x3 = exp(x2) x4 = sin(x3) propagacja
x′4|0 = cos(x3) x′3|0 x′3|0 = exp(x2) x′2|0
x′2|0 = cos(x1) − x1 sin(x1) x′1|0 x′1|0 = 3 x20 x′0|0
x′0|0 = 1
propagacja zwrotna x′4|0 = 3 x′4|1x20
x′4|1 = cos(x1) − x1 sin(x1) x′4|2 x′4|2 = x′4|3 exp(x2)
x′4|3 = x′4|4 cos(x3) x′4|4 = 1
Ilustracja (wielowymiarowa)
y = sin exp(x3) + 4 cos(x3)
system warstwowy (x0 = x, x3 = y)
x1 = x3
x21 = exp(x1) x22 = cos(x1)
x3 = sin(x21 + 4x22) propagacja gradientu
x′3|0 = cos(x21+4x22) x′21|0 + 4x′22|0 x′21|0 = exp(x1) x′1|0
x′22|0 = − sin(x1) x′1|0 x′1|0 = 3 x2
propagacja zwrotna gradientu x′3|0 = 3 x′3|1x2
x′3|1 = x′3|22 exp(x1) − x′3|21 sin(x1) x′3|21 = cos(x21 + x22)
x′3|22 = 4 cos(x21 + x22)
Porównanie
• propagacja gradientu (FP): pochodne zmiennych pośrednich względem docelowej zmiennej niezależnej
• propagacja zwrotna gradientu (BP): po- chodne docelowej zmiennej niezależnej względem zmiennych pośrednich
• obliczenia w sieci: potrzebne pochodne wskaźnika błędu względem różnych zmien- nych.
System uporządkowany
f1 : X0 7→ X1 x1 = f1(x0)
. . .
fk : X0 × · · · × Xk−1 7→ Xk xk = fk(x0, . . . , xk−1) . . .
fn : X0 × · · · × Xn−1 7→ Xn xn = fn(x0, . . . , xn−1)
Pochodne dla systemów uporządkowanych
• oznaczenia (tutaj xk∈ R)
fk|ℓ′ (x0, . . . , xk−1) = ∂
∂xℓ
fk(x0, . . . , xk−1), 0 ≤ ℓ < k
• Dla pierwszych ℓ zmiennych x0, . . . , xℓ−1, ℓ < k, ustalonych, definiujemy x′k|ℓ = dxk
dxℓ
• zależności równoważne x′k|ℓ = fk|ℓ′ +
k−1X
i=ℓ+1
fk|i′ x′i|ℓ 0 ≤ ℓ < k ≤ n (FP)
x′k|ℓ = fk|ℓ′ +
k−1X
j=ℓ+1
x′k|j fj|ℓ′ 0 ≤ ℓ < k ≤ n (BP)
Propagacja gradientu - postać lokalna
• dla dowolnych dwóch zmiennych u = xk, z = xℓ, ℓ < k dz
du = ∂fz
∂u + X
x
∂fz
∂x dx du
gdzie fz = fℓ jest funkcją definiującą z, a sumowanie rozciąga się na wszystkie zmienne x które bezpośrednio wpływają na z (tzn. argumenty fz)
Propagacja zwrotna gradientu - postać lokalna
• dla dowolnych dwóch zmiennych u = xk, z = xℓ, ℓ < k dz
du = ∂fz
∂u + X
x
dz dx
dfx du
gdzie fx oznacza funkcję która definiuje x, a sumowanie rozciąga się na wszystkie zmienne x na które bezpośrednio wpływa u (wszystkie funkcje, dla których u jest jednym z argumentów.)
Ilustracja
system uporządkowany
Q = x3 = f3(x0, x1, x2) x2 = f2(x0, x1)
x1 = f1(x0) propagacja gradientu
x′3|0 = f3|0′ + f3|1′ x′1|0 + f3|2′ x′2|0 x′2|0 = f2|0′ + f2|1′ x′1|0
x′1|0 = f1|0′
propagacja zwrotna gradientu
x′3|0 = f3|0′ + x′3|2f2|0′ + x′3|1f1|0′ x′3|1 = f3|1′ + x′3|2f2|1′
x′3|2 = f3|2′
dla obu algorytmów
x′3|0 = f3|0′ + f3|1′ f1|0′ + f3|2′ f2|0′ + f3|2′ f2|1′ f1|0′
F′ = {fi|j′ }i=0,...,n j=0,...,n
=
0
f1|0′ 0
... ... . ..
fn|0′ fn|1′ · · · fn|n−1′ 0
, X′ = {x′i|j}j=0,...,n i=0,...,n
=
1
x′1|0 1
... ... . ..
x′n|0 x′n|1 · · · x′n|n−1 1
dla systemów warstwowych
F′ =
0
f1′ 0
. .. . ..
fn′ 0
propagacja gradientu (F′ − I) X′ = −I