Algoritmus zpětného šíření chyby: Porovnání verzí

Smazaný obsah Přidaný obsah
JAnDbot (diskuse | příspěvky)
m odstranění odkazu na neexistující kategorii na Commons; kosmetické úpravy
značky: nové přesměrování revertováno přesměrování místo článku
Řádek 1:
#PŘESMĚRUJ [[Umělá neuronová síť#Algoritmus zpětného šíření chyby]]
Algoritmus '''zpětného šíření chyby''' neboli anglicky '''error backpropagation''' je metoda učení [[Umělá neuronová síť|umělých neuronových sítí]]. Používá se u vícevrstvých sítí při [[učení s učitelem]], tedy pokud je na množině příkladů použitých k učení vždy znám požadovaný výsledek. Zpětné šíření chyby je založeno na metodě [[Gradientní sestup|gradientního sestupu]].
 
== Dějiny ==
Podle různých zdrojů<ref name="dreyfus1990">Stuart Dreyfus: ''Artificial Neural Networks, Back Propagation and the Kelley-Bryson Gradient Procedure.'' In: ''J. Guidance, Control and Dynamics.'' 1990.</ref><ref name="schmidhuber2015">[[Jürgen Schmidhuber]]: ''Deep learning in neural networks: An overview.'' In: ''Neural Networks.'' 61, 2015, S. 85–117. [http://arxiv.org/abs/1404.7828 ArXiv]</ref><ref name="scholarpedia2015">Jürgen Schmidhuber: ''Deep Learning.'' In: ''Scholarpedia.'' 10(11), 2015, S. 328–332. [http://www.scholarpedia.org/article/Deep_Learning#Backpropagation Section on Backpropagation]</ref> byly základy metody v kontextu teorie řízení odvozeny z principů [[Dynamické programování|dynamického programování]]; konkrétně se na tom podíleli Henry J. Kelley v roce 1960<ref name="kelley1960">Henry J. Kelley: ''Gradient theory of optimal flight paths.'' In: ''Ars Journal.'' 30(10), 1960, S. 947–954. [http://arc.aiaa.org/doi/abs/10.2514/8.5282?journalCode=arsj (online)]</ref> a Arthur E. Bryson v roce 1961.<ref name="bryson1961">Arthur E. Bryson: ''A gradient method for optimizing multi-stage allocation processes.'' In: ''Proceedings of the Harvard Univ. Symposium on digital computers and their applications.'' April 1961.</ref> Roku 1962 publikoval Stuart Dreyfus jednodušší odvození pomocí [[Řetízkové pravidlo|řetězového pravidla]].<ref name="dreyfus1962">Stuart Dreyfus: ''The numerical solution of variational problems.'' In: ''Journal of Mathematical Analysis and Applications.'' 5(1), 1962, S. 30–45. [https://www.researchgate.net/publication/256244271_The_numerical_solution_of_variational_problems (online)]</ref> [[Vladimir Vapnik]] cituje ve své knize o [[support vector machines]] článek z roku 1963.<ref>A. E. Bryson, W. F. Denham, S. E. Dreyfus: ''Optimal programming problems with inequality constraints. I: Necessary conditions for extremal solutions.'' In: ''AIAA J.'' 1, 11, 1963, S. 2544–2550.</ref> V roce 1969 Bryson a Yu-Chi Ho algoritmus popsali jako vícestupňovou optimalizaci dynamických systémů.
 
Konečně v roce 1970 Seppo Linnainmaa publikoval obecnou metodu automatického derivování (AD) diskrétních sítí vnořených [[Diferencovatelnost|diferencovatelných]] funkcí.<ref name="lin1970">[[Seppo Linnainmaa]]: ''The representation of the cumulative rounding error of an algorithm as a Taylor expansion of the local rounding errors.'' Master’s Thesis (in Finnish), Univ. Helsinki, 1970, S. 6–7.</ref><ref name="lin1976">[[Seppo Linnainmaa]]: ''Taylor expansion of the accumulated rounding error.''In: ''BIT Numerical Mathematics.'' 16(2), 1976, S. 146–160.</ref> Jedná se o moderní variantu metody zpětného šíření chyby, která je efektivní i v řídkých sítích.<ref name="grie2012">Andreas Griewank: ''Who Invented the Reverse Mode of Differentiation?'' Optimization Stories. In: ''Documenta Matematica.'' Extra Volume ISMP, 2012, S. 389–400.</ref><ref name="grie2008">Andreas Griewank, Andrea Walther: ''Principles and Techniques of Algorithmic Differentiation.'' 2. Auflage. SIAM, 2008.</ref>
 
V roce 1973 Stuart Dreyfus pomocí zpětného šíření chyby upravoval parametry řídicích systémů úměrně jejich chybovým gradientům.<ref name="dreyfus1973">Stuart Dreyfus: ''The computational solution of optimal control problems with time lag.'' In: ''IEEE Transactions on Automatic Control.'' 18(4), 1973, S. 383–385.</ref> Paul Werbos zmínil možnost uplatnění tohoto principu na [[Umělá neuronová síť|umělé neuronové sítě]] roku 1974 <ref name="werbos1974">[[Paul Werbos]]: ''Beyond regression: New tools for prediction and analysis in the behavioral sciences.'' PhD thesis. Harvard University 1974.</ref> a v roce 1982 tak učinil způsobem, který se používá nyní.<ref name="werbos1982">Paul Werbos: ''Applications of advances in nonlinear sensitivity analysis.'' In: ''System modeling and optimization.'' Springer, Berlin/ Heidelberg 1982, S. 762–770. [http://werbos.com/Neural/SensitivityIFIPSeptember1981.pdf (online)]</ref>O čtyři roky později David E. Rumelhart, Geoffrey E. Hinton a Ronald J. Williams experimentálně prokázali, že tato metoda může vést k užitečným interním reprezentacím vstupních dat v hlubších vrstvách neuronových sítí, což je základem [[Hluboké učení|hlubokého učení]].<ref name="Rumelhart1986">[[David Rumelhart|David E. Rumelhart]], [[Geoffrey Hinton|Geoffrey E. Hinton]], [[Ronald J. Williams]]: ''Learning representations by back-propagating errors.'' In: ''[http://www.nature.com/nature/journal/v323/n6088/abs/323533a0.html Nature].'' Band 323, 1986, S. 533–536.</ref> V roce 1993 byl Eric A. Wan první kdo vyhrál pomocí backpropagace mezinárodní soutěž v modelování dat.<ref name="wan1993">Eric A. Wan: ''Time series prediction by using a connectionist network with internal delay lines.'' In: ''Santa Fe Institute Studies in the Sciences of Complexity-Proceedings.'' Vol. 15, Addison-Wesley Publishing Co., 1993, S. 195–195.</ref>
 
== Algoritmus ==
[[Soubor:Gradient descent.gif|náhled|Gradientní sestup]]
Kvalita naučení [[Umělá neuronová síť|umělé neuronové sítě]] je popsána chybovou funkcí, nejčastěji kvadratickou chybou:<ref name=UNS>{{Citace monografie| příjmení = Křivan| jméno = Miloš| titul = Umělé neuronové sítě| url = https://www.intelligentsoftware.eu/upload/pdf/Scriptum.pdf| vydavatel = Oeconomica| místo = Praha| rok = 2021| počet stran =76| vydání = první| isbn = 978-80-245-2420-7| jazyk = cs}}</ref>
 
: <math>E\;=\;\frac{1}{2} \sum\limits^{N}_{j=1} \sum\limits^{n}_{i=1} (z_{ij}-y_{ij})^{2}\;=\;\sum\limits^{N}_{j=1} E_{j}</math>, pak <math>\Delta w\;=\;-\alpha {\partial E_{j} \over \partial w}</math>
 
: <math>E</math> chyba
: <math>N</math> počet vzorků předložených síti
: <math>n</math> počet neuronů výstupní vrstvy
: <math>z_{ij}</math> požadovaný výstup daného neuronu a daného vzorku
: <math>y_{ij}</math> vypočítaný výstup daného neuronu a daného vzorku
: <math>\Delta w</math> vektor přírůstků vah gradientního kroku
: <math>\alpha</math> velikost gradientního kroku
[[Soubor:Zpětné šíření chyby.png|náhled|Zpětné šíření chyby]]
 
Jeden sestupný gradientní krok pak může vypadat následovně:<ref name=UNS/>
 
: <math>w_{ij}\left(T\right)=w_{ij}\left(T-1\right)+\alpha \ y_i\left(T\right)\ g_j(x_j(T))+\mu \ \Delta w_{ij}\left(T-1\right)</math>
: <math>{\vartheta }_i\left(T\right)={\vartheta }_i\left(T-1\right)+\alpha \ g_i(x_i(T))+\mu \ \Delta {\vartheta }_i\left(T-1\right)</math>
: <math>p_i\left(T\right)=p_i\left(T-1\right)+\alpha \ x_i\left(T\right)\ g_i(x_i(T))+\mu \ \Delta p_i\left(T-1\right)</math>
 
: <math>g_k(x_k)=p_ky_k(1-y_k)(z_k-y_k) \ \ \ \ \ g_i(x_i)=p_iy_i\left(1-y_i\right)\ \sum_j{g_j(x_j)\ w_{ij}}</math>
 
: <math>k\in V_N, j\in V_L, i\in V_{L-1}, L\in \left\{2,\dots ,M\right\}, T\in \left\{1,\dots ,N\right\}</math>
 
{{Sloupce|2|
: <math>x_i</math> potenciál i-tého neuronu
: <math>y_i</math> skutečný stav i-tého neuronu
: <math>z_i</math> požadovaný stav i-tého neuronu
: <math>g_i</math> [[adaptační funkce]] i-tého neuronu
: <math>p_i</math> strmost [[aktivační funkce]] i-tého neuronu
: <math>\vartheta_i</math> práh i-tého neuronu
: <math>w_{ij}</math> váha vazby i-tého neuronu s j-tým neuronem
: <math>\alpha</math> velikost gradientního kroku
: <math>\mu</math> míra setrvačnosti gradientního sestupu
: <math>V_L</math> populace neuronů L-té vrstvy
: <math>M</math> počet vrstev sítě
: <math>\Delta</math> předcházející přírůstek příslušné proměnné
}}
 
Cílem učení je minimalizovat chybovou funkci závislou na vstupních vahách neuronů, přičemž [[gradientní sestup]] obecně najde pouze [[Extrém funkce|lokální minimum]], proto se do gradientního sestupu zavádí jistá jeho setrvačnost, spočívající v míře respektování směru jeho minulého sestupného kroku, tj. k aktuálnímu gradientu se připočte minulý gradient a aktuální sestupný krok se provede ve směru jejich součtu, tato deformace gradientního sestupu pak umožní vyklouznutí z mělkého lokálního minima. [[Učení s učitelem|Učení]] neuronové sítě spočívá ve změně vah vstupů neuronů. Algoritmus zpětného šíření chyby v každém kroku postupuje v následujících třech fázích:
 
* Aplikují se vzorky a pro každý vzorek se postupně směrem vpřed napočítají výstupy (vstupní signál se sítí šíří směrem dopředu).
* Napočítané výstupy se porovnají s požadovanými výstupy, tj. spočte se chyba, jak byla popsána výše.
* Na základě spočtené chyby se počítají hodnoty adaptačních funkcí ve směru od poslední vrstvy k první vrstvě (pro výpočet hodnoty adaptačních funkcí podřazené vrstvy již musí být vypočteny hodnoty adaptačních funkcí nadřazené vrstvy), tj. spočítá se gradient chybové funkce, na základě kterého se provede sestupný gradientní krok, tj. upraví se vstupní váhy neuronů tak, že klesne hodnota chyby. Výpočet tedy postupuje zpětně od výstupní vrstvy až po vstupní vrstvu (odtud zpětné šíření chyby), váhy se mění podle jejich vlivu na chybu.
 
== Reference ==
{{Překlad|de|Backpropagation|206626589}}
<references/>
 
{{Autoritní data}}
 
[[Kategorie:Optimalizační algoritmy a metody]]
[[Kategorie:Algoritmy strojového učení]]
[[Kategorie:Umělé neuronové sítě]]