Attivazione nelle Neural Networks
Tags: ai, automation, machinelearning
Published: 2023-07-19 10:06:45

_L'idea di fare questa nuova serie di post è quella di rendere più democratica possibile la comprensione delle reti neurali e dell'intelligenza artificiale._

Quindi inizialmente, prima di parlare della struttura delle reti di tutta la parte "brutta" della matematica che ci sta dietro, possiamo iniziare a parlare dell'attivazione di un [PERCETRON](https://cs.stanford.edu/people/eroberts/courses/soco/projects/neural-networks/Neuron/index.html#:~:text=Neural%20Networks%20%2D%20Neuron&text=The%20perceptron%20is%20a%20mathematical,are%20represented%20as%20numerical%20values.)

Vi ho condiviso il link della università di Stanford che spiega il percettrone, che tra l'altro sembra una pagina degli anni 90 :D quando feci la mia tesi delle medie, feci un hypertesto molto più carino. 

Voglio fare una premessa del come si é arrivato a simulare un neurone a livello _digitale_ cioé del fatto che il più spesso delle volte scoperte scientifiche e attitudini ingegneristiche sono inspirate da cose che esistono già in natura, già da molto prima di averci pensato pensato. Possiamo pensare al sogno di volare guardando gli uccelli, a come abbiamo copiato le balene per progettare i sommergibili, le tute mimetiche e camaleonti e cosi via. 
Non possiamo nascondere che la natura è stata e sempre sarà fonte di maggiori ispirazioni per le scoperte scientifiche fatte e quelle che faremo in futuro.

## Quindi cosa intendiamo per attivazione ?

Se dobbiamo pensare ad una activation, ad una attivazione possiamo pensare ad un interruttore, come quello della nostra lampada da salotto, un pulsante che accende e spegne la lampadina. Tornando all'esempio della natura, basta solo pensare al fatto che la luce attiva i nostri neuroni e ci sveglia dal sonno, un esempio più semplice di così non esiste :)

L'attivazione di un neurone, [percettrone](https://it.wikipedia.org/wiki/Percettrone), é praticamente il meccanismo che innesca l'uscita del nostro segnale, del nostro output. Questo vale per il percettrone ma anche per qualunque layer/strato di rete neurale, ma questo argomento verrà affrontato ampiamente nei futuri post.

Un attivazione, come abbiamo detto può essere considerata come un semplice interruttore, che influisce sul risultato dell'output, nel nostro esempio l'accensione della lampadina nella lampada. 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/140oiymudtv34ddbg5vz.png)
source: https://www.freepik.com/free-photos-vectors/light-switch

Naturalmente il meccanismo della lampada é piú semplicistico del perceptrone, anche se non ci manca molto, non é esageratamente piú semplice. 

Se pensiamo all'interruttore della lampada, dobbiamo immaginare a tanti piccoli interruttori che incideranno sul fatto che la lampadina si accenderà oppure no; Tanti interruttori come input e la luce della lampadina come output.

Diciamo che se si spingono abbastanza interruttori la luce della lampada si accenderà, invece se non se ne spingono abbastanza rimarrà spenta.

C'é una soglia che deve essere raggiunta per poter scatenare l'attivazione, si potrebbe dire le uscite degli interruttori si sommano tra di loro e se questa somma é abbastanza alta, la luce si accenderà.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2rbbtfqhxtcj99hi1hjn.png)
source: https://en.wikipedia.org/wiki/File:Components_of_neuron.jpg


Osservando l'immagine del neurone possiamo pensare che ogni Dendrite sia uno dei nostri pulsanti e se attivato/cliccato allora possa innescare una parte dell'attivazione.

Ora vorrei veramente insistere su questo concetto e provare a fare anche un altro esempio assumendo il rischio di essere banale e pesante, perché voglio essere veramente sicuro che sia passato il messaggio.

Proviamo ora a pensare di fare un sistema di vasi comunicanti nella struttura che abbiamo usato per i bottoni della lampada.

Cioé abbiamo tanti bicchieri che possiamo riempire d'acqua, questi bicchieri hanno un tubo che é collegato ad un altro bicchiere. Quando un primo bicchiere é abbastanza pieno fino a raggiungere il tubo allora iniziano a travasare l'acqua nel bicchiere sottostante.

Se il bicchiere finale a sua volta é abbastanza pieno inizierà a travasare acqua, ecco questa situazione può essere rappresentata come una attivazione di una rete neurale, cioé scateniamo l'uscita dell'acqua con delle distinte e composte azioni in ingresso, nel nostro esempio immettendo acqua nei diversi recipienti.

Ecco ho tirato fuori tutte le mie migliori skills di Paint :D per proporvi una rappresentazione di quello che ho appena descritto.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kkphmwocn5xc0ibiiawb.jpg)

Riassumendo e cercando di restare il più semplici possibile questo é quello che avviene in una attivazione di un percettrone e di una rete neurale.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oilno5e0kipg2hxh6ob6.png)

Guardando la rappresentazione ufficiale possiamo giocare un poco con l'immaginazione ed associare il nostro esempio dei bicchieri ai vari elementi come input layers, weights, activation functions, output layers, comunque tutti argomenti che verranno affrontati nei prossimi post della serie, però già é interessante vedere come si possono associare insieme.

Questo rappresenta la parte iniziale di come funziona una rete neurale, naturalmente é ancora difficile associarlo alle applicazioni di tutti i giorni come computer vision, text processing come chatgpt, etc. Però é un primo passo tangibile per capire senza troppa confusione come funziona veramente l'intelligenza artificiale, senza troppe speculazioni.