Komentáře k příspěvku: Neuronová síť Backpropagation v PHP https://www.jens.cz/neuronova-sit-backpropagation-v-php/ zápisník bývalého programátora Tue, 26 Mar 2013 23:33:31 +0000 hourly 1 Od: Jens https://www.jens.cz/neuronova-sit-backpropagation-v-php/comment-page-1/#comment-781 Jens Tue, 12 Jan 2010 09:34:43 +0000 http://www.jens.cz/neuronova-sit-backpropagation-v-php/#comment-781 Já myslím že výpočet je to dobře, možná jen nevhodně zvolený komentář. Pokud se podíváte na obrázek a k němu odpovídající kód, zjistíte že jsou prohozené indexy pole (což vás zřejmě zmátlo), tedy: <pre> $w[1][1] -- je neuron 1, vstup 1 (na obrázku w11), $w[2][1] -- je neuron 1, vstup 2 (na obrázku w12), $w[3][1] -- je neuron 1, vstup 3 (na obrázku w13), </pre> potom výpočet opravdu funguje tak, že index <strong>$i</strong> udává index neuronu a nastavuje pro něho váhy, příklad pro váhy neuronu 1: <pre> // pro $i = 1 (prvni cykl) $w[1][1] += $lr * 1 * $d[1]; // w11 = learning_rate * c1 * delta1 $w[2][1] += $lr * $v1 * $d[1]; // w12 = learning_rate * x1 * delta1 $w[3][1] += $lr * $v2 * $d[1]; // w13 = learning_rate * x2 * delta1 </pre> atd pro <strong>$i = 2</strong> ... Tedy každý cykl upravý na základě vstupů (c1, c2, x1, x2) a výstupů (delta1,2,3) daného neuronu váhu jeho vstupů. Já myslím že výpočet je to dobře, možná jen nevhodně zvolený komentář. Pokud se podíváte na obrázek a k němu odpovídající kód, zjistíte že jsou prohozené indexy pole (což vás zřejmě zmátlo), tedy:

$w[1][1] -- je neuron 1, vstup 1 (na obrázku w11),
$w[2][1] -- je neuron 1, vstup 2 (na obrázku w12),
$w[3][1] -- je neuron 1, vstup 3 (na obrázku w13),

potom výpočet opravdu funguje tak, že index $i udává index neuronu a nastavuje pro něho váhy, příklad pro váhy neuronu 1:

// pro $i = 1 (prvni cykl)
$w[1][1] += $lr * 1 * $d[1];   // w11 = learning_rate * c1 * delta1
$w[2][1] += $lr * $v1 * $d[1]; // w12 = learning_rate * x1 * delta1
$w[3][1] += $lr * $v2 * $d[1]; // w13 = learning_rate * x2 * delta1

atd pro $i = 2

Tedy každý cykl upravý na základě vstupů (c1, c2, x1, x2) a výstupů (delta1,2,3) daného neuronu váhu jeho vstupů.

]]>
Od: Arcanis https://www.jens.cz/neuronova-sit-backpropagation-v-php/comment-page-1/#comment-736 Arcanis Mon, 11 Jan 2010 19:49:25 +0000 http://www.jens.cz/neuronova-sit-backpropagation-v-php/#comment-736 Omlouvám se za to PS, ochrany fungují jak mají číselně, akorát konkrétní příklad "Kolik je součet čísel 2 a 2?" mi nefungoval Omlouvám se za to PS, ochrany fungují jak mají číselně, akorát konkrétní příklad „Kolik je součet čísel 2 a 2?“ mi nefungoval

]]>
Od: Arcanis https://www.jens.cz/neuronova-sit-backpropagation-v-php/comment-page-1/#comment-735 Arcanis Mon, 11 Jan 2010 19:47:28 +0000 http://www.jens.cz/neuronova-sit-backpropagation-v-php/#comment-735 Děkuji za tento příklad, na kterém jsem to pochopil, moc mi pomohl :) (zamotal jsem se v matematických vzorcích na back-propagation) Jen bych se chtěl zeptat, zdá se mi že máte chybu ve změně vah: $w[1][$i] += $lr * 1 * $d[$i]; $w[2][$i] += $lr * $v1 * $d[$i]; $w[3][$i] += $lr * $v2 * $d[$i]; kde bych podle obrázku čekal (prohozené rozměry u pole): $w[$i][1] += $lr * 1 * $d[$i]; $w[$i][2] += $lr * $v1 * $d[$i]; $w[$i][3] += $lr * $v2 * $d[$i]; pokud tedy dobře chápu, že tím cyklem for se projíždí neuron po neuronu, a vždy se upravují váhy, které do neuronu vedou z jiných. PS: u ochrany prosi spamu není jasné jestli mám psát slovně nebo číslo, napsal jsem číslo a smazalo mi to jednou celý příspěvek, psal jsem ho tudíž znovu :( Děkuji za tento příklad, na kterém jsem to pochopil, moc mi pomohl :) (zamotal jsem se v matematických vzorcích na back-propagation)

Jen bych se chtěl zeptat, zdá se mi že máte chybu ve změně vah:
$w[1][$i] += $lr * 1 * $d[$i];
$w[2][$i] += $lr * $v1 * $d[$i];
$w[3][$i] += $lr * $v2 * $d[$i];

kde bych podle obrázku čekal (prohozené rozměry u pole):

$w[$i][1] += $lr * 1 * $d[$i];
$w[$i][2] += $lr * $v1 * $d[$i];
$w[$i][3] += $lr * $v2 * $d[$i];

pokud tedy dobře chápu, že tím cyklem for se projíždí neuron po neuronu, a vždy se upravují váhy, které do neuronu vedou z jiných.

PS: u ochrany prosi spamu není jasné jestli mám psát slovně nebo číslo, napsal jsem číslo a smazalo mi to jednou celý příspěvek, psal jsem ho tudíž znovu :(

]]>
Od: Jens https://www.jens.cz/neuronova-sit-backpropagation-v-php/comment-page-1/#comment-9 Jens Sun, 06 Apr 2008 19:37:18 +0000 http://www.jens.cz/neuronova-sit-backpropagation-v-php/#comment-9 Oba pojmy rozhodně nejdou proti sobě, jedná pouze o různé způsoby klasifikace téže neuronové sítě. Backpropagation: klasifikace podle způsobu učení -- to probíhá na základě zpětného šíření chyby. Dopředná neuronová síť: klasifikace dle architektury sítě -- propojední neuronů nevytváří cykl (nejsou zpětně propojení) ani neexistují propojení mezi neurony téže vrstvy. viz také: <a href="http://en.wikipedia.org/wiki/Feedforward_neural_network" rel="nofollow">Feedforward neural network</a> alias "dopředná neuronová síť" na wiki Oba pojmy rozhodně nejdou proti sobě, jedná pouze o různé způsoby klasifikace téže neuronové sítě.

Backpropagation: klasifikace podle způsobu učení — to probíhá na základě zpětného šíření chyby.

Dopředná neuronová síť: klasifikace dle architektury sítě — propojední neuronů nevytváří cykl (nejsou zpětně propojení) ani neexistují propojení mezi neurony téže vrstvy.

viz také: Feedforward neural network alias „dopředná neuronová síť“ na wiki

]]>
Od: szk https://www.jens.cz/neuronova-sit-backpropagation-v-php/comment-page-1/#comment-8 szk Sat, 05 Apr 2008 14:20:34 +0000 http://www.jens.cz/neuronova-sit-backpropagation-v-php/#comment-8 Nejedná se ale o zpětné řetězení? (back propagation vs. věta na začátku článku). Nejedná se ale o zpětné řetězení? (back propagation vs. věta na začátku článku).

]]>