Reţele neuronale
cu învăţarea de către înapoi eroare de raspandire
Colin Fahey

Un biologice de reţele neuronale
1. Software
2. Introducere
Acest document descrie cum să pună în aplicare o reţea de neuronale artificiale, care este capabil de a fi instruiţi să recunoască modelele.
Acest document descrie un model a unei reţele neuronale, care învaţă de către un algoritm care utilizează "înapoi eroare de raspandire."
Acest document de bază include demonstraţii de învăţare prin "propagarea înapoi eroare." Acest document are un link către calculatorul cod. De cod de computer include demonstraţii. De cod de computer pot fi utilizate pentru a crea reţele neuronale complexe. Cu toate acestea, computerul codul este doar pentru scopuri demonstrative. O alternativă ar putea reduce aplicare memorie şi ar putea mări viteza.
3. Alternative de învăţare prin propagarea înapoi eroare
Acest document descrie un model a unei reţele neuronale, care învaţă de către un algoritm numit "înapoi eroare de raspandire." Acest algoritm poate necesita o foarte lungă perioadă de timp, pentru a afla mai multe lecţii. De asemenea, acest algoritm nu pot aleator pentru a învăţa lecţii din cauza diferitelor la întâmplare starea iniţială de reţele neuronale, înainte de formare profesională.
Învăţarea prin "asocierea unor factori de activă" este o alternativa la învăţare prin "propagarea înapoi eroare." Învăţarea prin asocierea unor factori de activ doar asociatilor factorilor de producţie care sunt active simultan. Astfel de învăţare se poate de rapid şi de încredere. Cu toate acestea, pentru multe scopuri practice, nu există nici un mod evident pentru a utiliza un reţele neuronale, care învaţă de asociere, întrucât este evident un mod de a utiliza o reţea care învaţă de eroare înapoi raspandire.
Unele reţele neuronale biologice sunt cunoscute, pentru a afla de asociere a factorilor de producţie activ. Înapoi eroare de raspandire nu a fost respectat, în orice reţele neuronale biologice.
Acest document descrie utilizările interesante pentru un reţele neuronale, care învaţă de eroare înapoi raspandire. Cu toate acestea, învăţarea de către asociaţie este o alternativă foarte important algoritm de învăţare. Proiectarea unei reţele neuronale, care învaţă de către asociaţia de a soluţiona o anumită problemă ar putea fi mai dificil ca o alternativă desgining reţele neuronale, care învaţă de eroare înapoi raspandire, dar afla sistemele biologice de asociere, precum şi a capacităţii de învăţare a sistemelor biologice este evidentă.
4. Biologice neuron
4.1 Neuron de celule

Un neuron biologic (de tip "multipolar," ~4 um celulelor organismului)
Un neuron este tipul de celule care are capacitatea de a primi si transmite semnale nervoase.
Neurons sunt baza sistemelor nervoase, găsite în animale, pasari, pesti, insecte.
Brainuri cu logica si memorie, precum şi sisteme de simplu reflex, ambele sunt bazate pe aranjamente de neuroni.
Neurons sunt, de asemenea, folosite pentru a transmite semnale de la mari distanţe într-o creatura a organismului, cum ar fi de la senzori la creier, sau de la creier la muschi.
De comportament a unui neuron biologic este foarte complex, dar următoarele simplificate descriere captura la principiul de bază:
The neuron acumulează semnale primite de la alte neuroni, şi în cazul în care totalul semnal de acumulare depăşeşte un prag, neuron transmite propriile semnale de la alţi neuroni.
4.2 Neuron părţi

Părţi ale unui neuron biologic
|
Soma
|
Celula organism a unui neuron
|
|
Dendrites
|
Fibre chimice cu receptorii (intrările) care se extind de la celula organism a unui neuron. Un neuron de obicei are multe dendrites, dendrites şi de multe ori au multe ramuri.
|
|
Axon
|
Un chimice cu fibra emitters (iesiri), la endpoint, care se extinde de la celula organism al neuronului. Un neuron are un singur axon, şi de obicei axon are foarte putine ramuri.
|
|
Synapse
|
Un astfel de configurare că axon de un neuron, precum şi de un alt neuron dendrites sunt separate printr-un decalaj foarte mic. Într-o astfel de configurare, substanţele chimice emise de către un axon de o cruce de neuron synapse şi sunt primite de către dendrites pe de altă neuron. Acesta este modul în neuronii influenţa altor neuroni.
|
4.3 Neuron concedierea
Un neuron se acumulează chimice semnale de la dendrites sale, şi în cazul în care totalul de acumulare chimice depăşeşte un prag în termen de o perioadă de timp, neuron "incendii," trimiterea de propriul său semnal prin axon.
Unele sunt capabile de a neuronilor concedierea impulsurile de pe ordinea de 100 Hz.
Semnalele care trece prin neuroni implica (Na) concentrări de sodiu, potasiu (K), şi clor (Cl) ioni, precum şi un potenţial care rezultă electrochimica (de exemplu, tensiune).
De odihnă şi de tensiune (-70 mV) concedierea (+30 mV) de tensiune pot fi măsurate sau chiar influentat de circuitry electrice convenţionale.
Următoarea este o tensiune de înregistrare a unui neuron concedierea şobolan la o rată de aproximativ 100 Hz atunci când un singur whisker este atins şi a avut loc din poziţia sa de repaus:

Un şobolan neuron concedierea (100 Hz) cauza care deţine un whisker.
Deşi stimul este constant, neuron semnal este rapid pulsing.
4.4 Reţele neuronale
De a creierului uman de aproximativ 10^11 (100 de miliarde de) neuroni.
Fiecare neuron în cerebellum primeşte de la intrare cât mai multe 10^4 (10000) synapses.
Deşi axon şi dendrites unui neuron se extind adesea doar câteva micrometri departe de celula organism, unele axons se află pe ordinea de un metru lungime.
Un creier a neuronilor cu relativ scurt axons grupate în zone sau clustere.
Un creier are, de asemenea, pachete de neuroni cu relativ lungă axons la link-ul de zone separate de centimetri.
Astfel, o reţea ierarhică de elemente de prelucrare este format.
4.5 Reţele neuronale stare
Starea de o reţea de neuroni este atât de modul in care neuronii sunt conectate şi la toate semnalele de synapses.
Nu este clar cât de mult statutul de informaţii ar fi pierdute în cazul în care un creier tranquilized a fost în inactivitate totală a pentru orice perioadă de timp.
Se poate imagina informaţii susţinut doar de semnale în mişcare prin intermediul reţelei, şi nu de conectivitate la reţea de sine, ca si cum ar fi simulari celulare automata Conway's "Game of Life", simplu Dynamic Random Access Memory (DRAM) chips-uri, ecouri şi într-o camera.
4.6 Reţele neuronale de învăţare
Convenţionale de învăţare se produce atunci când proprietăţile dendrites schimba la o synapse pentru a deveni mai mult sau mai puţin eficient de la primirea de semnale chimice de la un axon.
Motivele pentru astfel de modificări sunt complicate, dar rezultatul este că un neuron necesită o combinaţie diferită de synapse inputuri pentru a declanşa un semnal de iesire.
5. Artificiale neuron
5.1 Definitie
Un "neuron artificial" este un algoritm sau un dispozitiv fizic care pune în aplicare un model matematic inspirat de comportamentul de bază al unui neuron biologic.
Un neuron se acumulează semnalele primite de la alţi factori de producţie sau de neuroni (de exemplu, senzori), şi în cazul în care totalul semnal de acumulare depăşeşte un prag, neuron transmite un semnal pentru a neuronilor sau alte iesiri (de exemplu, efectori).
Orice model matematic care include, de ideea de a acumularea mai multor factori de producţie şi obţinerii o singură ieşire (care accentuează intensitatea relativă de intrare în raport cu unele nominală nivel) pot fi folosite pentru recunoasterea.
Aceste modele pot fi baza unui neuron artificial.
Dacă influenţa fiecare intrare poate fi modificat, apoi modelul poate suporta învăţare.
5.2 Funcţia de activare
O "activare a funcţiei" matematice este o funcţie care transformă valorile de intrare de mai jos o anumită valoare la o valoare relativ scăzută de ieşire, intrare şi converteşte valorile de mai sus o anumită valoare la un nivel relativ ridicat de ieşire valoare.
Un "funcţia de activare" este folosit pentru a converti suma ponderată a valorilor de intrare a unui neuron, la o valoare care reprezintă datele de ieşire ale neuronului.
Un "sigmoid" general este o funcţie de clasa de functii care asymptotically buna abordare o limită mai scăzută se apropie de valorile de intrare pentru infinitul negativ, asymptotically abordare şi o limită superioară de intrare pentru valori pozitive se apropie de infinit.
Unul sigmoid specifice funcţiei este "logistic sigmoid" funcţie:

De "Logistic Sigmoid" funcţie: 1 / ( 1 + Exp( -x ) )
De "logistic sigmoid" funcţie să poată fi folosit ca o "funcţie de activare" pentru un model matematic a unui neuron.
Matematice derivate din "logistic sigmoid" pot fi calculate ca o formulă, făcându-l uşor pentru a calcula o formulă de învăţare asociate.
5.3 Reţele neuronale de intrare
Un "reţele neuronale de intrare" reprezinta o intrare la un reţele neuronale.

Reţele neuronale de intrare
"Input" este valoarea numerică a de intrare.
5.4 Reţele neuronale de ieşire
Un "reţele neuronale," reprezinta o "iesire" de ieşire a unei reţele neuronale.

Reţele neuronale de ieşire
"Output" este valoarea numerică a datelor de ieşire.
"Error" este o valoare numerică care reprezintă diferenţa dintre valoarea producţiei şi o valoare "Desired":
Error = (Output - Desired); // Derived from: Output = Desired + Error;
"Desired" de valoare reprezinta o valoare dorită, sau un ideal de valoare, sau o valoare corectă, că ar trebui să producă reţele neuronale ca o iesire ca răspuns la anumite date de intrare.
De eroare este de valoare calculate şi repartizate pentru a "Error" de un algoritm de instruire.
De eroare este de feedback de la valoarea de reţele neuronale.
De reţele neuronale pot adapta pentru a reduce diferenţa dintre ei şi a rezultatelor dorite valori; adică, de reţele neuronale pot afla, astfel, şi pot reduce erorile de viitor.
5.5 Neuron organism
Un "neuron organism" reprezintă corpul unui neuron, care se acumulează de intrare a contribuţiilor, şi adaugă o prejudecată, şi transformă rezultă valoarea de "activare a funcţiei" de ieşire pentru a produce o valoare.

Neuron organism
"InputAccumulator" este o valoare care reprezintă acumulate de intrare de la neuron link-uri ale căror ieşiri sunt conectate la corpul neuronului.
"Bias" este o valoare reglabile, care este combinat cu valoarea de intrare a acumulat.
"Output" este o valoare numerică reprezentând valoarea de ieşire a neuronului.
Valoare de iesire este calculat folosind următoarea formulă:
Output = ActivationFunction( Bias + InputAccumulator );
"ErrorAccumulator" este o valoare numerică reprezentând cumulat de eroare.
Având în vedere o anumită valoare de ieşire din neuron organism, şi având în vedere o anumită valoare de ieşire de eroare, acumulate de eroare valoare este ajustată în conformitate cu următoarea formulă:
ErrorAccumulator += Output * (1 - Output) * OutputError;
"Rate" este o valoare care afectează modul în care "Bias" valoare de modificări din răspuns la "ErrorAccumulator" valoare:
Bias += (-1) * Rate * ErrorAccumulator;
5.6 Neuron link-ul
Un "neuron link-ul" reprezinta o legătură între:
(1) o introducere de reţele neuronale şi o introducere a unui neuron organism;
sau,
(2) o iesire a unui neuron şi un organism de introducere a unui alt neuron organism;
sau,
(3) o iesire a unui neuron şi un organism de ieşire din reţele neuronale.

Neuron link-ul
"Input" este un cache-ul de pe link-ul de la intrare.
"Weight" este o valoare reglabile, care afectează valorile şi cum semnal de eroare valorile propagate prin intermediul link-ul.
"Output" este un cache de ieşire de pe link-ul.
Valoarea se calculează utilizând următoarea formulă:
Output = Weight * Input;
"Error" este un cache de eroare de pe link-ul.
"WeightedError" este un cache de eroare de pe link-ul, determinate de factorul de greutate:
WeightedError = Weight * Error;
"Rate" este o valoare care afectează modul în care "Weight" valoare de modificări din răspuns la "Error" valoare şi "Input" valoare.
În timpul reţele neuronale de învăţare, "Weight" valoare este ajustată în modul următor:
Weight += (-1) * Rate * Input * Error;
5.7 Reţele neuronale
Un "reţele neuronale" conţine intrările, ieşirile, neuron organisme, precum şi link-uri.
Următoarele descrie o imagine simplă reţele neuronale, cu două intrări, şi cele două organisme într-un neuron primul strat, şi un singur neuron într-un al doilea strat, şi una de ieşire.

Exemplu de reţele neuronale
În timpul unui simulare a unei reţele neuronale, valorile de intrare propage transmite prin intermediul link-uri şi organisme neuron, şi, eventual, ajunge la puteri de ieşire.

Exemplu de raspandire transmite într-un reţele neuronale
Pe durata formării, valorile de eroare sunt prevăzute la iesiri, iar aceste erori propagate înapoi prin reţele neuronale, care rezultă din modificarea de greutăţi şi în biases neuron organisme şi link-uri.

Exemplu de raspandire înapoi într-o eroare de reţele neuronale
5.8 Reţele neuronale de simulare
Definiţie:
"Reţeaua de simulare" este procedura utilizată pentru a propage reţeaua de factori de producţie prin intermediul link-uri şi organisme neuron, până la a ajunge la reţea a rezultatelor.
Reţeaua de simulare implică simularea de toate legăturile sale constitutive şi organele neuron.
Simulations buclele sau fără timp:
Există mai multe configuraţii de reţea care implică posibil buclele.
Există multe modele de neuron, care depind de timp.
Dar unele din cele mai comune aplicaţii ale neuronilor artificiali buclele şi nici nu implică nici timp.
Următorul este un model matematic al unui neuron organism:
Output = ActivationFunction( Bias + InputAccumulator );
Cu acest model de neuron, si-o reţea fără "buclele," pur şi simplu am începe de la factorii externi, conform rezultatelor din primul strat de neuroni, de aprovizionare şi cele rezultate ca factori de producţie la alta, s-calcula ieşirile pentru că, s-şi continua prin straturi de neuroni, până când se calculează rezultatele finale.
Buclele:
O retea poate avea legaturi in forma de bucle (sau "cicluri)."
De exemplu, datele de ieşire ale unui neuron poate fi conectat direct la o intrare de acelaşi neuron, cauzatoare de "feedback."
Un alt exemplu este cel de ieşire din neuron # 1 fiind conectat la intrare de neuron # 2, precum şi datele de ieşire ale neuron # 2 fiind conectat la intrare de neuron # 1.
Dacă se poate porni de la un moment dat într-o reţea şi a urmări o cale prin intermediul neuronilor şi de conexiuni, ascultarea de la un mod de-a fluxului de semnale, şi, eventual, ajunge la acelaşi punct de plecare, apoi de cale este o bucla.
Buclele de interesant să introducă posibilitatea de a semnalelor care curg în jurul reţelei pentru perioade de timp nedeterminată.
Unele modele de simplă presupune că este nevoie de o anumită sumă de semnale de timp pentru a trece prin neuroni individuale.
În astfel de modele, semnalele de circula prin buclele cu cativa neuroni mai repede decât semnalele de circula prin buclele cu mulţi neuroni.
Un neuron conectat la sine, va avea cea mai rapidă rată de semnal circulaţie.
Dacă un neuron are o intrare X, o greutate W, o prejudecată B, şi un non-negativ Y de ieşire (de exemplu, 0.0 -> 1.0), atunci ne putem forma o oscilatorul pur şi simplu prin stabilirea W = (-8) şi B = +4 şi conectarea Y la X;
de fiecare dată când vom simula de neuron, semnalul va fi toggled pentru a opus de stat.
O reţea cu buclele poate fi ocupat cu activitate, chiar şi atunci când acesta nu acceptă semnale externe (stimuli), ca factori de producţie.
Celulare automata a regulilor de Conway's "Game of Life" ar putea fi puse în aplicare într-un reţele neuronale, care vă oferă un mic indiciu de diversitatea de activitate care poate întâmpla într-un reţele neuronale cu buclele.
Finite-Maşini de stat (FSM), oscillators, memorie volatilă (în contrast cu modele de învăţare prin modificarea ponderilor), sunt posibile prin looping.
Dacă o reţea a buclele, dar nu putem nici o actualizare a rezultatelor până când vom calcula toate ieşirile; Astfel, am nevoie de un tampon pentru stocarea temporară a rezultatelor calculate până când vom calcula toate ieşirile, apoi ne putem angaja noi valori de ieşire la neuronilor din reţea.
Orice metodă de faptul că actualizările de iesiri in actuala reţea într-un mod progresiv, în loc de unu-la-toate la fel-o dată, introduce un arbitrar de comanda în timp ce conduce la haos.
Fizica simulari cuplate care implică entităţi, cum ar fi planete orbiting o stea cu gravitationala reciprocă între toate forţele de organisme, necesită acelaşi tip de abordare: calculez forţele de pe net toate organismele înainte de actualizarea orice viteza şi poziţia.
Termenul de dependenţă:
O simplă reţea de simulare implică de obicei, factori de producţie, determinând rezultatele dorite după un singur pas de simulare timp.
Într-o astfel de simulare, noi credem ca din punct de vedere al "numărului de iterations," mai degrabă decât "timpul în secunde."
Nu pot să nu fie nici o corespondenţă între iterations şi o scară de timp.
Un sistem ar putea fi creată pentru a face o reţea de simulare (iteration) doar atunci când noi introduse nu sunt disponibile, care ar putea apărea la intervale neregulate de timp.
Cu toate acestea, să ia în considerare un model matematic al unui neuron, care încearcă să simuleze pulsing de ieşire aspectul unui neuron biologic.
The pulsing ar putea fi caracterizata în termeni de timp, cum ar fi pulsing la o anumită frecvenţă sau având impulsurile ale căror curba se extinde pentru o anumită perioadă de timp.
Putem să fi dependent de timp, alte elemente într-un model matematic al unui neuron, cum ar fi un acumulator de intrare a căror valoare este de contribuţii de la factori de producţie, dar are o scurgere proporţională cu valoarea sa actuală.
În general, putem găsi o analogie cu circuit electric pentru anumite elemente care ascultă de ecuaţii matematice, şi aşa se poate ceea ce priveşte un neuron ca un circuit cu rezistenţe, condensatori, şi un amplificator non-lineară.
Doar ca un circuit poate expoziţii de complexe de comportament dependent de timp, datele de ieşire ale unui neuron poate fi privită ca o funcţie care depinde de factori de producţie şi de timpul său într-un mod complicat.
5.9 Înapoi eroare de raspandire
Definiţie:
"Înapoi eroare de raspandire" matematice este o procedura care incepe cu eroarea la ieşire a unei reţele neuronale şi propagates această eroare pe spate prin intermediul reţelei la un randament de ieşire de eroare pentru toate valorile neuronilor din reţea.
Înapoi eroare de raspandire formule:
Valori de eroare la ieşirile de reţele neuronale sunt calculate folosind următoarea formulă:
Error = (Output - Desired); // Derived from: Output = Desired + Error;
Acumularea de eroare într-un neuron organism este ajustat în funcţie de datele de ieşire ale organismului şi de neuron de ieşire de eroare (specificate de link-uri conectate la corpul neuronului).
Fiecare iesire de eroare valoare contribuie la acumulatorul de eroare în modul următor:
ErrorAccumulator += Output * (1 - Output) * OutputError;
Într-un sens, toate aceste erori de ieşire la urmatorul strat de scurgere înapoi prin greutăţile de intrare şi de ieşire a acumula cel al unui neuron într-un strat anterior.
Această valoare este acumulat, înmulţită cu o valoare mai mare este că atunci când curent de ieşire al neuronului este cel mai neutru (cel mai "nedecisi)" şi este puţin atunci când datele de ieşire al neuronului este de cele mai extreme (foarte "anumite)."
Greutate schimbare şi parţialitatea modifica formulele:
Baza de învăţare este de ajustare a greutăţilor şi parţialitatea valorilor într-o încercare de a reduce erorile de ieşire viitor.
"Rata de" învăţare este o valoare numerică în esenţă, care indică cât de repede un neuron ajustează în greutate şi valori în funcţie de prejudecăţile pe valori de eroare.
Următoarea formulă, indică modul de schimbare a greutăţilor de un neuron cu un anumit set de valori de intrare şi de ieşire de eroare valoare:
Weight += (-1) * Rate * Input * Error;
Următoarea formulă, indică modul de a schimba o prejudecată a unui neuron dat curent de ieşire de eroare pentru neuron:
Bias += (-1) * Rate * Error;
6. Instruire un reţele neuronale
6.1 Procedura de Formare
Se poate începe cu o reţea de instruit şi continuă de a reduce producţia de eroare cu formarea continuă, dar de multe ori o începe cu o reţea de untrained.
Înainte de formare, alege aleator valori pentru toate greutăţile tuturor neuronilor din reţea.
Am observat probleme când am randomly selectat de valori în intervalul [ -1.0, +1.0 ], º i nu au avut probleme când am selectat aleatoriu din intervalul de valori [ +0.1, +1.0 ].
Mentionez aceste observaţii, dar acestea ar putea fi din cauza mea greşeli.
Scopul este aleatoare, greutăţi pentru a reduce posibilitatea de a oricărei situaţii patologice într-o reţea.
Dacă toate neuroni într-o reţea a început cu aceleaşi greutăţi, reţeaua ar avea nici o bază pentru diferenţiere între creşterea neuronilor.
Am observat că setarea toate prejudecăţile pe valori la zero (0.0) este acceptabil.
O sesiune de formare implică trece printr-o formare stabilit de mai multe ori, poate sute sau mii de ori.
Pentru fiecare treacă prin formare stabilite, considerăm fiecare element din setul de formare.
Un element de formare a stabilit un set de intrări, şi un set de rezultatele dorite.
Am simulează de reţea, utilizând un set de factori de producţie specificate de formare element.
De simulare randamentele valorile de ieşire.
Propage Am crezut în spate erorile de reţele neuronale pentru a calcula datele de ieşire pentru toate erorile de neuroni.
Am actualizare toate greutăţile şi biases.
Atentie: Un text care a discutat academice reţele neuronale a pledat trece prin întregul set de formare şi doar insumarea greutate modificări şi biases.
După ce trece prin intreaga de formare pe care le-am stabilit un set de modificări sume de greutate şi parţialitatea modificări.
Ne iau aceste sume şi să actualizeze toate greutăţile şi biases.
Aceste sume ar putea fi uriase pentru seturi mari de formare - şi rezultă intri in greutate spaţiu-ar fi nerezonabil de mare.
Deci, cred că împărţirea la numărul de elemente de training, pentru a obţine medie de greutate medie a schimba valorile şi prejudecată schimba valorile, ar fi rezonabil.
Nu este ceva despre atrăgătoare de calcul o singură greutate schimba vectorul cumva consideră că întregul set de formare în considerare.
Nu ştiu dacă am făcut o greşeală pur şi simplu în punerea în aplicare ideea, dar mi-a dat până aproape în întregime pe reţele neuronale, deoarece de prost cum au fost lucrurile de cotitură.
Apoi, când am încercat de naiv alternativă, şi anume a face actualizări la fiecare element de formare, lucrurile lucrat perfect.
Având în vedere întregul set de formare, înainte de a face o actualizare a unor avantaje şi dezavantaje:
Avantaje:
Unice de formare în elemente de formare stabilite cu extreme de eroare (de exemplu, rau de formare element) nu va aduce o mare contribuţie la această actualizare, pentru că ea va fi copleşiţi de influenta "buna" a datelor;
Dezavantaj:
Dacă N este numărul de elemente din setul dumneavoastră de formare, rata de progres pentru a vectorului greutate optima va fi divizat în funcţie de N.
Sau, pentru o anumită distanţă pe care le va avea doar o fracţiune de-a lungul direc sugestii în comparaţie cu modul de abordare naiv;
Poate aceasta tehnica va lucra pentru tine, dar incerca naiv de abordare înainte de a vă oferi pe reţele neuronale în utter frustrarea!
6.2 Eşecul de a reduce eroare
Formare poate să nu reuşească să reducă eroarea globala de formare stabilite.
Este important de a detecta o eroare de a reduce eroare.
Următoarea listă descrie cauzele eşecului de a reduce de eroare, precum şi posibile soluţii.
Elementele din listă sunt enumerate în ordinea aproximative de probabilitate, cu primul element fiind cele mai probabile.
(1) Greutatea combinaţie a atins un minim local de eroare de suprafaţă, şi este "blocat;"
Soluţie: Începeţi o nouă simulare cu noi ponderi aleatoare.
(2) Reţeaua are prea puţine straturi neuronilor sau să codifice toate modelele stabilite în formare;
Soluţie: divertisment cu prudenţă posibilitatea de a adăuga sau straturi neuronilor.
(3) Unul sau mai multe elemente din setul dumneavoastră de formare sau contrazice grossly este în contradicţie cu alte elemente de formare;
Soluţie: Verificaţi-vă datele stabilite pentru nereguli.
Găsiţi test de elemente care randamentul cel mai de eroare vă pregătiţi pentru reţea.
Uita-te la tehnici de greutate medie de modificări asupra întregului set de date pentru a reduce influenta de orice rău cazuri.
(4) rata de învăţare este prea mare (nimic peste 1.0 este, probabil, excesiv), şi actualizările întotdeauna depăşiri de obiectiv;
Soluţie: Reducerea ratei de învăţare.
(5) rata de învăţare este prea mică (0.01 nimic de mai jos ar putea fi prea mic), precum şi de reţea este chiar convergente cu privire la combinaţia ideală de greutate - dar este prea lent;
Soluţie: Majorarea ratei de învăţare.
Instruire un strat de doua, trei-neuron de reţea pentru a se potrivi cu sau exclusive de-(xor) funcţie, poate, în ciuda simplitate a funcţiei, nu reuşesc să converg.
Acest lucru poate fi surprinzător şi frustrant.
Cu toate acestea, soluţia este pur şi simplu pentru a stabili toate neuron link-ul de la noi greutăţi aleatoare, valori şi de a încerca, apoi, din nou tren de reţea.
În caz de formare a unei reţele pentru a se potrivi cu sau exclusive de-(xor) funcţie, greutăţile aleatoare pozitive par să conducă la învăţare de succes de fiecare dată, întrucât anumite combinaţii de pozitive şi negative, uneori, cauza greutăţilor de formare profesională pentru a nu dramatic.
Nevoia de a selecta noi aleatoare iniţială de greutăţi pentru a recupera de la un eşec la convergenţa este o consecinţă a unfortunate combinaţie de procedura de învăţare.
Procedura de învăţare este în esenţă, căutarea unui minim la nivel global de către steepest coborâre pe o suprafata, iar potenţialul pentru prezenţa unui "minim local," în care căutarea poate deveni captiv.
6.3 Încă o eroare de formare
Eroarea globala de o reţea poate fi caracterizat de pătrat-rădăcină de media de squared erori, sau "la rădăcină medie pătrată" (RMS).
Orice eroare de la reţele specifice de ieşire este dat de următoarea formulă:
Error = (Output - Desired);
Suma de squared erori de formare pentru un singur element este dat de următoarea formulă:
double squaredError = 0.0;
foreach (NeuralNetworkOutput output in ListOfOutputs)
{
squaredError += (output.Error * output.Error);
}
Suma de squared erorile pentru întregul set de elemente într-un set de formare este suma squared erori de elemente individuale. Următoarele cod arată modul în care squared erorile pentru întregul set de elemente de formare pot fi calculate:
double squaredError = 0.0;
for
(
int trainingItemIndex = 0;
trainingItemIndex < totalTrainingItems;
trainingItemIndex++
)
{
trainingSet.SetAllInputNodeValues( trainingItemIndex );
Simulate( propagationIterations );
trainingSet.SetAllOutputNodeErrorValues( trainingItemIndex );
PropagateErrors( propagationIterations );
UpdateWeightsAndBiases();
foreach (NeuralNetworkOutput output in ListOfOutputs)
{
squaredError += (output.Error * output.Error);
}
}
General de la rădăcină medie pătrată (RMS) de eroare este dat de rădăcina pătrată din media de squared erori:
double rmsError = Math.Sqrt( squaredError / (double)totalTrainingItems );
Această valoare este o modalitate de a caracteriza global de eroare de o reţea de formare în vedere toate cazurile.
7. Learning
Învăţarea are loc în momentul în care valorile de greutate şi parţialitatea neuron de neuron link-uri şi organisme sunt ajustate în conformitate cu caracteristici specificate la reţeaua de factori de producţie şi de ieşire de eroare valori.
Consideraţi un reţele neuronale cu două intrări (x1 şi x2), şi două link-uri (cu greutăţi w1 şi w2), şi un organism de neuron, şi una de ieşire (y).

Reţele neuronale cu două intrări, şi un organism de neuron, şi una de ieşire
Am tren acest neuron de furnizarea de date de intrare, ieşire de calcul, eroarea de calcul, calcul greutate şi parţialitatea de modificări, şi de actualizare a ponderilor şi de prejudicii, se ajunge la noi greutăţi ( w1', w2' ).
Nu este un foarte interesant mod de a vizualiza acest proces.
Putem ceea ce priveşte setul de greutăţi ca un vector într-un spaţiu multi-dimensional. De exemplu, pentru două greutăţi avem W = (w1, w2) într-un vector bidimensional "greutate spaţiu."
Când ponderile sunt ajustate, avem un nou vector W' = (w1',w2') greutate.
Putem vizualiza aceasta ca un punct de W a trece la un nou punct W' ca parte a unui proces pentru a minimiza de ieşire de eroare.
În mod normal nu ar calcula o iesire de eroare pentru toate combinaţiile posibile de greutate, pentru că speranţa este că procesul de ajustare va greutatea eficient capul spre cel mai bun combinaţie.
Cu toate acestea, daţi-ne de teren în suprafaţă în esenţă, arată că un neuron cât de bine satisface toate elementele într-un set de formare, în funcţie de cele două greutăţi:

Sum squared de erori pentru un anumit set de formare, în funcţie de două greutăţi (w1, w2)
Practic, cu scopul de a invata este de a coborî la cel mai redus nivel din această suprafaţă, în cazul în care eroarea este minimizat.
După ce vom găsi punctul W = (w1, w2) că randamentele valoarea minimă de pe această suprafaţă, de învăţare este terminat şi apoi pur şi simplu putem folosi instruit neuron.
Următorul grafic arată datele de ieşire ale unui neuron instruiţi, în funcţie de toate intrările X = (x1, x2):

Neuron de ieşire în funcţie de doi factori de producţie pentru o greutate (x1, x2) combinaţie care minimizeaza squared error
Chiar dacă sînt ponderate pentru acest două neuron de intrare este pur şi simplu (w1*x1 + w2*x2), în funcţie de activare de rotit un simplu se transformă în avion la o faleza.
Această suprafaţă a valorilor de ieşire corecte pentru toate combinaţiile de intrare (x1, x2) specificate de formare stabilite.
Dar vă puteţi imagina cum vectorilor de intrare X = (x1, x2) similare cu valorile de formare ar putea de asemenea să conducă la valori de ieşire corespunzătoare; această facilitate de reţele neuronale este numit şi "centralizarea" este principala valoare de reţele neuronale.
După cum am încerca să "coborâm" în suprafaţă de squared error, noi trebuie să "ne uităm salt înainte!"
Am actualizare a vectorului greutate şi o prejudecată, şi apoi vom evalua "inaltimea" de suprafata, la noua noastra locatie.
O consecinţă a prezentului este că am putea trece la un punct cu o eroare mai multe extreme.
O altă consecinţă este că ar putea dura un timp pentru a coborî înapoi la adâncimea de locatie noastre anterioare.
Posibilitatea de a "leaping" la mai multe extreme, varfuri si vai de eroare locuibilă este direct legate de "rata de învăţare," pentru că rata de învăţare determină cât de mare influenţă eroare pe valorile noastre au greutate şi parţialitatea modificări.
Următorul grafic arată cum creşterea ratei de învăţare hastens nostru de la sosirea în poziţii inferioare pe squared error locuibilă, în cazul în care eroarea este minimizat.
Graful de asemenea, arată că creşterea ratei de învăţare de asemenea, introduce posibilitatea de a face rau paşi:

Tendinţa pe termen scurt de la rădăcină înseamnă-squared (RMS) eroare pentru întregul set de formare pe mai mulţi de formare iterations, pentru ratele de învăţare 0.1, 0.5, 1.0, şi 2.0.
Aici este un grafic de la rădăcină-inseamna-squared de ieşire de eroare de un multi-strat de reţea cu un set de formare cu 19386 elemente care experimentat multe rele paşi pe calea către cele mai bune greutate vectori:

Instruire, uneori, întâmpină spikes în rădăcina-inseamna-squared (RMS) eroare, eroare, atunci când creşte, pentru unele lucrari iterations, înainte de o tendinţă descrescătoare.
Uneori, tendinţa este pur şi simplu buna de convergenţă pentru a dorit set de greutăţi:

Trend de la rădăcină înseamnă-squared (RMS) eroare pentru întregul set de formare pe mai mulţi de formare iterations, pentru ratele de învăţare 0.1, 0.5, 1.0, şi 2.0.
8. Exemplu:-exclusiva sau (xor)
"Exclusiv-(xor) sau" este o funcţie care acceptă booleene doi factori de producţie şi de randamentele o singură ieşire booleene în conformitate cu următorul tabel:
|
X1
|
X2
|
Y = xor (X1, X2)
|
|
0
|
0
|
0
|
|
0
|
1
|
1
|
|
1
|
0
|
1
|
|
1
|
1
|
0
|
În general, un singur neuron a factorilor de producţie {x1, x2, ...}, intrand prin intermediul link-uri cu greutăţi {w1, w2, ...}.
The neuron computes o cantitate d = bias + (w1*x1 + w2*x2 + ...) intermediare, care pot fi considerate ca planul de identificare care, într-un infinit set de planuri paralele, conţine un anumit punct cu coordonatele {x1, x2, ...}.
Computes un neuron de ieşire, valoarea, y = ActivationFunction( d ), care are ca efect de divizare a infinit set de planuri în paralel a două seturi, cu un set redus de ieşire producătoare de valori, precum şi celelalte stabilite de ieşire de mare producătoare de valori.
Astfel, un singur neuron şpalturi multidimensionale în spaţiu a două regiuni, separate de avion bias + w1*x1 + w2*x2 + ... = 0, şi atribuie valori scăzute la punctele de ieşire din regiune, pe de o parte şi de alta a avionului, ridicat şi atribuie valori la punctele de ieşire în regiunea de pe partea opusă ale planului.
Astfel, dacă două seturi de puncte în spaţiu multidimensionale au clasificări distincte şi pot fi complet separate printr-un avion, apoi un singur neuron poate fi utilizat pentru a clasifica corect aceste puncte de la stabileşte ca aparţinând sau un set de altă parte.
Exclusive-(xor) sau funcţia clasifică în două puncte de spaţiu-dimensional (cu coordonatele (x1, x2)) că o astfel de puncte în setul { (0,0), (1,1) } sunt clasificate ca producătoare de o ieşire de la "0," şi puncte în setul { (0,1), (1,0) } sunt clasificate ca producătoare de o ieşire din "1."
Nu există nici un singur "plan" (în acest caz, o linie) care pot separa cele patru puncte în cele două seturi.
Prin urmare, un singur neuron nu poate fi folosit pentru a clasifica în funcţie de punctele-exclusivă sau (xor) funcţie.
Un singur neuron nu poate decât să împărţi un spaţiu de puncte în două regiuni.
Exclusive sau (xor) clasifică funcţie de puncte într-un mod care împarte în esenţă, un spaţiu bidimensional, în trei regiuni (sau, alternativ, patru regiuni).
Doi neuroni se poate împărţi spaţiul bidimensional în trei regiuni (de exemplu, de doua linii paralele distincte), şi, astfel, pot fi folosite pentru a clasifica în funcţie de punctele-exclusivă sau (xor) funcţie.
Un al treilea neuron poate fi utilizat pentru a combina rezultatele din celelalte două în neuronii la o singură ieşire.
Următoarele reţele neuronale, cu două intrări, şi cele două organisme într-un neuron primul strat, şi un singur neuron într-un al doilea strat, şi o singură ieşire, pot fi folosite pentru a clasifica în funcţie de punctele-exclusivă sau (xor) funcţie.
Următoarele reţele neuronale pot fi instruiţi pentru a calcula-exclusiv sau (xor) functie, sau de reţele neuronale pot pur şi simplu au de greutate şi prejudecăţile pe valorile atribuite într-o manieră care produce comportamentul dorit.

Un reţele neuronale capabile de clasificare în funcţie de punctele-exclusivă sau (xor)
Computerul de cod asociat cu acest document demonstrează de formare de reţele neuronale se arată în diagrama de mai sus pentru a se potrivi cu sau exclusive de-(xor) funcţie.
De reţele neuronale, uneori, nu reuşeşte să înveţe să funcţioneze, dar software-ul poate fi pur şi simplu repornite pentru a încerca de învăţare cu un nou set de iniţiale de greutăţi.
În cazul în care învaţă cu succes software-exclusive sau (xor) funcţia, apoi datele de ieşire seamănă cu următorul text:
x1 = 0.0000 x2 = 0.0000 y = 0.0172 error = 0.0172
x1 = 1.0000 x2 = 0.0000 y = 0.9802 error = -0.0198
x1 = 0.0000 x2 = 1.0000 y = 0.9839 error = -0.0161
x1 = 1.0000 x2 = 1.0000 y = 0.0154 error = 0.0154
Rezultatul este (y) în termen de 2% din valoarea dorită pentru fiecare dintre cele patru combinatii ale variabilelor (x1, x2).
Deşi reţeaua a fost pregatit pentru a afla valorile de ieşire pentru doar patru combinaţie de variabile (cu valori 0.0 şi 1.0, reprezentând valori booleene), factorii de reţele neuronale poate fi setat la orice punct arbitrar plutitoare-valori.
Următoarele imagine arată datele de ieşire ale reţelei neuronale pregatit pentru mai multe combinaţii de valori de intrare:

Un reţele neuronale capabile de clasificare în funcţie de punctele-exclusivă sau (xor)
Suprafaţa reprezintă datele de ieşire ale reţelei neuronale pentru toate combinaţiile posibile de intrare în (x1, x2) gama [ -2.0, +2.0 ].
Rezultatul este aproape de 0.0 scade la zonele de suprafata, iar rezultatul este aproape de 1.0 la cele mai inalte zone ale suprafeţei acestuia.
Reţineţi că suprafaţa este scăzut pentru { (0,0), (1,1) } la puncte, şi de suprafaţă este ridicat la punctele { (0,1), (1,0) }.
Aceasta retea a fost doar o pregătire pentru a produce ieşirile dorite pentru patru combinaţii specifice ale variabilelor de intrare, dar de asemenea, reţele neuronale produce rezultate pentru toate celelalte combinaţii posibile de valori de intrare.
Capacitatea de reţele neuronale pentru a produce rezonabile răspunsuri pentru cazuri generale după ce a fost instruit pentru cazuri specifice, pot fi considerate ca "centralizarea."
Orice proces de puncte de date care se potriveşte cu un model, cum ar fi punctele de amenajare a unei linii sau a altor curba, de asemenea, produce un efect de "generalizing," deci faptul că o montare reţele neuronale pentru a produce rezultatele dorite, pentru anumite lecţii rezultatele într-un fel de centralizarea nu este extraordinare, dar este totuşi interesant de observat capacitatea de a generaliza de la cazuri specifice.
9. Exemplu: Tic-tac-toe "(Naughts şi Crosses)"
9.1 Introducere
Tic-tac-toe "(Naughts şi Crosses)" este un simplu joc jucat pe un 3 * 3 grila de celule care pot fi marcate cu "O" sau "X".
Playere loc alternativ "O" şi "X" de comerţ în unoccupied celule până când unul dintre jucãtori încheie un rând, coloană sau diagonală.
Pentru că există 3 rânduri, coloane şi 3, şi 2 diagonale, există opt modele castigatoare pentru fiecare jucator.

Tic-Tac-Toe bord câştigătoare şi modele
Este trivial de a scrie o funcţie recursivă care analizeaza toate posibilele Tic-Tac-Toe jocuri, pentru că durata maximă de joc, este nouă mutãri.
La fiecare punct din joc pur şi simplu am examina rezultatele se deplasează în fiecare din celelalte celule unoccupied.
O astfel de funcţie pot confirma că un joc Tic-Tac-Toe jucat "perfect" cu "jucători" nu se va încheia cu câştigătorul.
9.2 Instruire un reţele neuronale de a indica cele mai bune mutãri
Un recursive funcţie să poată explora toate jocurile posibile, şi va determina cea mai bună mutare pentru fiecare consiliu de configurare.
Vă adăugaţi fiecare consiliu de configurare (intrări), şi cea mai bună mutare (a rezultatelor dorite), la o listă de elemente de formare.
Putem apoi tren de reţea pentru a produce ieşirile dorite pentru fiecare set de factori de producţie.
Reţeaua va avea 9 intrările corespunzătoare pentru fiecare celulă de reţea, precum şi valorile de intrare va fi limitat la următoarele valori:
0: Unoccupied de celule
+1: Protagonist player
-1: Adversar player
Reţeaua va avea 9 ieşirile corespunzătoare pentru fiecare celulă de reţea, precum şi valorile de ieşire vor fi limitate la următoarele valori:
0: Nu misca aici
1: Mutare aici
Opt rezultatele vor fi stabilită la "0," si unul de iesire va fi setată la "1."
Astfel, după formarea de reţele neuronale, un consiliu de configurare poate fi specificat drept de intrare, precum şi reţele neuronale va indica cea mai bună mutare.
Cel mai apropiat de iesire la "1" va indica cea mai bună mişcare, şi toate celelalte iesiri ar trebui să fie aproape de "0."
În general, orice funcţie cu parametrii Boolean Logic şi ieşirile pot fi reprezentate de un reţele neuronale cu două straturi de neuroni.
Primul strat de neuroni poate diviza multidimensionale în spaţiu pentru a regiunilor, precum şi cel de-al doilea strat de regiune clasificări combină pentru a produce valori de ieşire corespunzătoare.
Tic-Tac-Toe de reţele neuronale produce booleene ieşirile şi, deşi au factori de trei stări ( -1, 0, +1 ), am putea, în princple, conversia acestor câteva valori discrete de intrare la un set de date de intrare booleene.
Prin urmare, două straturi de neuroni ar trebui să fie suficientă pentru a afla Tic-Tac-Toe.
Pentru că reţeaua a 9 iesiri, există organisme 9 neuron in finala (a doua) strat.
Singura rămasă reţele neuronale de design de decizie este de a decide numărul de neuron organisme de a pune în primul strat de reţele neuronale.
Pentru a face această decizie, de cod de computer pot genera un tren şi de reţele neuronale cu N neuronilor din primul strat.
Capacitatea de reţele neuronale de a învăţa completă de formare stabilite pentru Tic-Tac-Toe poate fi graphed.
Următorul grafic arată generală de formare stabilite de eroare în timpul formării, pentru fiecare de 48 de diferite reţele neuronale, cu N = 1,2,...,48 neuronilor din primul strat.

Per ansamblu de formare stabilite de eroare în timpul formării, pentru N = 1,2,...,48 neuronilor în primul strat (N = 1 este de la început, şi N = 48 este în partea de jos, intermediar şi de cele mai multe curbe sunt mai mici pentru valori mai mari de N)
O altă metodă de a vizualiza această tendinţă este de a forma o suprafata de la succesiune de curbe:

Per ansamblu de formare stabilite de eroare în timpul formării, pentru N = 1,2,...,48 neuronilor în primul strat (N = 1 este la spate, si N = 48 este la fata)
Astfel, vom vedea că, după cum o abordare N = 48 neuronilor din primul strat, reţeaua pare a fi în măsură să accepte toate cazurile de formare.