Algoritmus zpětného šíření chyby
Author
Albert FloresAlgoritmus zpětného šíření chyby neboli anglicky error backpropagation je metoda učení 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ího sestupu.
Historie
Podle různých zdrojů byly základy metody v kontextu teorie řízení odvozeny z principů dynamického programování; konkrétně se na tom podíleli Henry J. Kelley v roce 1960 a Arthur E. +more Bryson v roce 1961. Roku 1962 publikoval Stuart Dreyfus jednodušší odvození pomocí řetězového pravidla. Vladimir Vapnik cituje ve své knize o support vector machines článek z roku 1963. 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 diferencovatelných funkcí. Jedná se o moderní variantu metody zpětného šíření chyby, která je efektivní i v řídkých sítích.
V roce 1973 Stuart Dreyfus pomocí zpětného šíření chyby upravoval parametry řídicích systémů úměrně jejich chybovým gradientům. Paul Werbos zmínil možnost uplatnění tohoto principu na umělé neuronové sítě roku 1974 a v roce 1982 tak učinil způsobem, který se používá nyní. +moreO č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ého učení. V roce 1993 byl Eric A. Wan první kdo vyhrál pomocí backpropagace mezinárodní soutěž v modelování dat.
Algoritmus
Kvalita naučení umělé neuronové sítě je popsána chybovou funkcí, nejčastěji kvadratickou chybou:
: 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}, pak \Delta w\;=\;-\alpha {\partial E_{j} \over \partial w}
: E chyba : N počet vzorků předložených síti : n počet neuronů výstupní vrstvy : z_{ij} požadovaný výstup daného neuronu a daného vzorku : y_{ij} vypočítaný výstup daného neuronu a daného vzorku : \Delta w vektor přírůstků vah gradientního kroku : \alpha velikost gradientního kroku
Cílem učení je minimalizovat chybovou funkci závislou na vstupních vahách neuronů, přičemž gradientní sestup obecně najde pouze 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. +more 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. +more 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.