Backpropagation
click to edit
click to edit
δL=σ′(zL)⊙∇aLC
\(\boldsymbol{\delta}^{l}=\color{red}{\sigma'(\boldsymbol{z}^{l})}\odot\left(W^{l+1}\right)^{T}\boldsymbol{\delta}^{l+1}\)
\(\frac{\partial C}{\partial w_{jk}^{l}}=\delta_{j}^{l}a_{k}^{l-1}\)
\(\frac{\partial C}{\partial b_{j}^{l}}=\delta_{j}^{l}\)
Om \(C=\frac{1}{2}\sum_{j}\left(t_{j}-a_{j}^{L}\right)^{2}\)
\(\color{orange}{\nabla_{\mathbf{a}^{L}}C=\left(\begin{array}{c} -(t_{1}-a_{1}^{L})\\ \vdots\\ -(t_{n}-a_{n}^{L}) \end{array}\right)=-(\boldsymbol{t}-\boldsymbol{a}^L)}\)
\(\delta_{j}^{L}=\color{orange}{-}\color{red}{\sigma'(z_{j}^{L})}\color{orange}{(t_{j}-a_{j}^{L})}\)
\(\frac{\partial C}{\partial w_{jk}^{L}}=\color{orange}{-(t_{j}-a_{j}^{L})}\color{red}{\sigma'(z_{j}^{L})}a_{k}^{L-1}\)
- \(\color{orange}{\textrm{Ju mer fel outputen är desto mer ändras det}}\)
- \(\color{red}{\textrm{Ju mer saturerad aktiveringsfunktionen är desto långsammare ändras vi}}\)
- \(\textrm{Ju mer aktiverad neuronen är desto mer ändras det}\)
bestämmer också tecknet, så om outputen är större än target minskar vi och tvärtom
\(\downarrow\)
= ju mer neutrala vi är desto mer ändras vi
\(\uparrow\)
neuroner som bidrar till en större andel av z kommer bidra med en ännu större andel av z i förhållande till neuroner som bidrar mindre
eller: ju mer aktiv en neuron är desto mer kan den hållas till svars för outputens fel
\(\boldsymbol{\delta}^{L-1}=\color{red}{\sigma'(\boldsymbol{z}^{L-1})}\odot\left(W^{L}\right)^{T}\boldsymbol{\delta}^{L}\)
\(\delta_j^{L-1}=\color{red}{\sigma'(z_j^{L-1})}\sum_{k}\delta_{k}^{L}w_{kj}^{L}\)
\(\boldsymbol{\delta}^{L-1}=\color{orange}{-}\color{red}{\sigma'(\boldsymbol{z}^{L-1})}\odot\left(W^{L}\right)^{T}(\color{red}{\sigma'(\boldsymbol{z}^{L})}\color{orange}{(\boldsymbol{t}-\boldsymbol{a}^{L})})\)
\(\delta_j^{L-1}=\color{orange}{-}\color{red}{\sigma'(z_j^{L-1})}\sum_{k}(\color{red}{\sigma'(z_{k}^{L})}\color{orange}{(t_{k}-a_{k}^{L})}w_{kj}^{L})\)
\(\boldsymbol{\delta}^{L}=\color{orange}{-}\color{red}{\sigma'(\boldsymbol{z}^{L})}\color{orange}{(\boldsymbol{t}-\boldsymbol{a}^{L})}\)
\(\frac{\partial C}{\partial w_{jk}^{L-1}}=\color{orange}{-(t_{j}-a_{j}^{L})}\color{red}{\sigma'(z_{j}^{L})}a_{k}^{L-1}\)
Om bara en outputneuron, som på bilden:
\(\delta_j^{L-1}=\color{orange}{-}\color{red}{\sigma'(z_j^{L-1})}\color{red}{\sigma'(z_{1}^{L})}\color{orange}{(t_{1}-a_{1}^{L})}w_{1j}^{L}\)
Man går igenom alla vägar från neuronen till kostnadsfunktionen C och summerar deras bidrag till påverkan på C för att få totala påverkan på C från ändring av neuronen
Detta är tydligt om man flyttar ut \(\sum\)-tecknena till ett kombinerat \(\sum_{j,k,m,n,...}\) längst till vänster. Man får då en summa där varje term är en produkt av derivator från neuronen till kostnadsfunktionen.
\(\delta_i^{L-2}=\color{orange}{-}\color{red}{\sigma'(z_i^{L-2})}\sum_{m}(\color{red}{\sigma'(z_m^{L-1})}\sum_{k}(\color{red}{\sigma'(z_{k}^{L})}\color{orange}{(t_{k}-a_{k}^{L})}w_{km}^{L})w_{mi}^{L-1})\)
\(\sum_{k,m}\color{red}{\sigma'(z_{j}^{L-2})\sigma'(z_{k}^{L-1})\sigma'(z_{m}^{L})}w_{kj}^{L-1}w_{mk}^{L}\color{orange}{(-(t_{m}-a_{m}^{L}))}\)
Låt oss använda index \(n_{L-2},n_{L-1}\) och \(n_{L}\) istället för i,j,k (\(n\) för neuron)
Vi får då
\(\sum_{n_{L-2},...,n_{L}}\color{red}{\sigma'(z_{n_{L-2}}^{L-2})\sigma'(z_{n_{L-1}}^{L-1})\sigma'(z_{n_{L}}^{L})}w_{n_{L-1}n_{L-2}}^{L-1}w_{n_{L}n_{L-1}}^{L}\color{orange}{(-(t_{n_{L}}-a_{n_{L}}^{L}))}\)
"Hur summan påverkar aktiveringen"
"Hur aktiveringen påverkar summan"
"Hur summan påverkar aktiveringen"
"Hur aktiveringen påverkar summan"
...
"Hur aktiveringen påverkar kostnadsfunktionen"
och generellt
\(\delta_{n_{l}}^{l}=\sum_{n_{l+1},...,n_{L}}\color{red}{\sigma'(z_{n_{l}}^{l})\sigma'(z_{n_{l+1}}^{l+1})\cdots\sigma'(z_{n_{L}}^{L})}w_{n_{l+1}n_{l}}^{l+1}\cdots w_{n_{L}n_{L-1}}^{L}\color{orange}{(-(t_{n_{L}}-a_{n_{L}}^{L}))}\)
\(w_{ij}^{L}\textrm{ kallas }W_{ij}\)
\(w_{ij}^{L-1}\textrm{ kallas }w_{ij}\)
\(a_{i}^{L}\textrm{ kallas }O_{i}\)
\(a_{i}^{L-1}\textrm{ kallas }V_{i}\)
\(z_{i}^{L}\textrm{ kallas }B_{i}\)
\(z_{i}^{L-1}\textrm{ kallas }b_{i}\)
\(-b_{i}^{L}\textrm{ kallas }\Theta_{i}\)
\(-b_{i}^{L-1}\textrm{ kallas }\theta_{i}\)
\(\sigma\textrm{ kallas }g\)
\(a_{i}^{l}\textrm{ kallas }V_{i}^{(l)}\)
\(w_{ij}^{l}\textrm{ kallas }w_{ij}^{(l)}\)
\(z_{i}^{l}\textrm{ kallas }b_{i}^{l}\)
\(-b_{i}^{l}\textrm{ kallas }\theta_{i}^{(l)}\)
\(-\delta_{i}^{l}\textrm{ kallas }\delta_{i}^{(l)}\)
x
\(-\delta_{i}^{L}\textrm{ kallas }\Delta_{i}\)
\(-\delta_{i}^{L-1}\textrm{ kallas }\delta_{i}\)
"We label the layers by the index
l = 0,...,L. The layer of input terminals has label l = 0"
därav minus
minus kommer från deltaL