User Tools

Site Tools


neurali:percettrone

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
neurali:percettrone [2019/08/17 22:24] profproneurali:percettrone [2023/06/09 14:02] (current) – [Funzioni di attivazione non lineari] profpro
Line 1: Line 1:
 +====== Percettrone ======
  
 +https://en.wikibooks.org/wiki/Artificial_Neural_Networks
 +
 +Il percettrone svolge il compito che il neurone svolge  nelle reti neurali biologiche. A volte è detto Processing Element.
 +
 +  * ogni percettrone è definito da tre elementi:
 +    * dai **pesi** delle connessioni (sinapsi) (w nella figura)
 +    * una funzione zetaxx(w,x) **funzione di aggregazione** come la **somma pesata** degli input x (prodotto scalare x · w). Rif. [[neurali:neuroni#somma_di_afferenze_sinaptiche]]
 +      * che somma i contributi dei neuroni che precedono il neurone attuale
 +    * una funzione sigmaxx(zetaxx) **funzione di attivazione** (lineare o non lineare) 
 +      * solo se la precedente somma zetaxx supera una certa soglia, il neurone produce a sua volta un impulso
 +
 + {{:neurali:percettrone.png}}
 +
 +  * Ogni funzione di attivazione è caratterizzata da una thetaxx **soglia di attivazione** 
 +    * a volte dentro al cerchio del neurone si trova rappresentata thetaxx, altre volte c'è il disegnino della funzione sigmaxx(zetaxx)
 +  * Ogni percettrone si attiva se la somma dei segnali provenienti in ingresso supera la soglia di attivazione.
 +
 +{{:neurali:pesi_rete.png?nolink&200|}}
 +
 +Alcune possibili funzioni di attivazione a soglia in cui //f(x)// supera zero solo se la variabile //x// supera un certo valore di soglia: **quale scegliere?** Probabilmente una facile da calcolare al computer...
 +
 +====RISPOSTA====
 +non è meglio scegliere la funzione di attivazione più facile da calcolare al computer, infatti esiste un teorema dell'approssimazione universale secondo il quale, per poter generare un approssimatore è necessario usare funzioni **non lineari**.
 +
 +Universal Approximation Theorem
 +
 +https://en.wikipedia.org/wiki/Activation_function#Comparison_of_activation_functions
 +
 +{{:neurali:640px-gjl-t_x_.svg.png?nolink&640|https://en.wikipedia.org/wiki/File:Gjl-t%28x%29.svg}}
 +
 +====Funzioni sigmoidee nelle reti neurali====
 +
 +https://it.wikipedia.org/wiki/Funzione_sigmoidea
 +
 +Le funzioni sigmoidee sono spesso usate nelle reti neurali per introdurre la non linearità nel modello e/o per assicurarsi che determinati segnali rimangano all'interno di specifici intervalli. Un popolare elemento neurale artificiale computa la combinazione lineare dei relativi segnali in ingresso ed applica una funzione sigmoidea limitata al risultato; questo modello può essere visto come variante "regolare" del classico neurone soglia. Un motivo per la relativa popolarità nelle reti neurali è perché la funzione sigmoidea soddisfa questa proprietà:
 +
 +...
 +
 +Questa relazione polinomiale semplice fra la derivata e la funzione stessa è, dal punto di vista informatico, semplice da implementare. 
 +===== Funzione di attivazione =====
 +
 +==== Funzione di attivazione lineare ====
 +
 +
 +http://it.wikipedia.org/wiki/Percettrone
 +
 +Matematicamente il comportamento di un percettrone può essere descritto come una funzione (//funzione di attivazione//)<del> che svolge una classificazione binaria</del>
 +
 +In questo esempio, la funzione di attivazione è del tipo a soglia (binaria 0, 1). Tale funzione è detta anche a gradino, rect o funzione di Heaviside. Anche gli input x potrebbero essere binari.
 +
 +{{:neurali:percettrone1.png?nolink|}}
 +
 +  * //x//, è il l'input del percettrone (scalare o vettore)
 +  * //w//, è il peso moltiplicato ad ogni input (scalare o vettore)
 +  * //- b//, è la soglia di attivazione (bias)
 +
 +Nel caso generale in cui ci siano più valori in ingresso (un vettore) si effettua un **prodotto scalare** tra //x// e //w//.
 +
 +Altri esempi di funzioni di attivazione (lineare) sono
 +  * y=sign(x); (output binario +1,-1)
 +  * y=rampa
 +  * y=x
 +
 +Nel 1969 si è dimostrato che un solo percettrone con **due input** potrebbe imitare solo funzioni //[[http://en.wikipedia.org/wiki/Linearly_separable|linearmente separabili]]// come AND  e OR, mentre non potrebbe imitare una funzione XOR perché quest'ultima non è linearmente separabile. 
 +
 +https://web.archive.org/web/20160305060552/http://automatica.ing.unibs.it/mco/cgsa/neurali/il_percettrone.htm
 +
 +Il problema dell'[[neurali:addestramento]] delle reti neurali artificiali si riduce ad un problema di convergenza della soluzione di un algoritmo di ottimizzazione.
 +
 +
 +  - [[neurali:funzione attivazione lineare]]
 +
 +==== Funzioni di attivazione non lineari ====
 +
 +In natura, si osserva spesso una funzione con saturazione.
 +
 +Il software [[neurali:libFANN2]] disponde delle seguenti  [[neurali:fann_activationfunc_enum|funzioni di attivazione]]
 +
 +Il software [[neurali:pybrain]] disponde delle seguenti  [[neurali:pybrain#descrizione|funzioni di attivazione]]
 +
 +Si tratta di funzioni che vanno spesso da 0 a 1 (oppure da -1 a 1) e che quindi potrebbero essere già note a coloro che hanno studiato in matematica le distribuzioni di probabilità. Per le distribuzioni di probabilità anche l'integrale della funzione deve dare 1.
 +  - funzione hopfield (sign) o Step
 +  - [[neurali:funzione attivazione Step]] (funzione a gradino) usata per i classificatori binari
 +  - [[neurali:funzione attivazione logistic sigmoid]]
 +  - [[neurali:funzione attivazione sigmoid]] (o log-sigmoid) caso particolare della logistic
 +  - [[neurali:funzione attivazione tangente iperbolica]]
 +  - [[neurali:funzione attivazione softmax]] (usata nei layer di output)
 +  - [[neurali:funzione attivazione softplus]]
 +  - [[neurali:funzione attivazione gaussiana]]
 +  - [[neurali:funzione attivazione radius]]
 +
 +
 +{{ :neurali:functions.jpg?nolink&400 |}}
 +
 +DA FINIRE
 +
 +Se il sistema (la rete neurale) è **lineare** (zero layer e funzione attivazione lineare) può risolvere solo problemi in cui le [[neurali:problemi di classificazione|classificazioni]] stabiliscono categorie **linearmente separabili**.
 +
 +Un sistema **dinamico** possiede la capacità di continuare a modificare il proprio output in base al proprio stato interno (non continuare ad apprendere) anche durante la fase di produzione (vedere neurali:[[neurali:recurrent_neural_network]])
 +
 +[[neurali:spiking_neural_network]]