Reti neurali artificiali con NEST.

Intelligenza artificiale: realizziamo il nostro primo neurone con NEST Simulator.

NEST mette a disposizione una serie di funzioni e componenti che permettono, con poche righe di codice, di realizzare reti neurali artificiali a spiking neuron di qualsiasi complessità.

In questo tutorial, dopo aver visto come installare Nest, vedremo i principali comandi, quelli che sono necessari per creare un singolo neurone e monitorarne l’attività elettrica al variare della corrente di fondo. Attraverso opportuni comandi, infatti, è possibile impostare i parametri della rete neurale prima dell’inizio della simulazione.

Reti neurali artificiali : intensità di corrente e differenza di potenziale.

L’intensità di corrente elettrica, indicata con la lettera I e misurata in Ampere (A), è la quantità di carica che attraversa la sezione di un conduttore nell’unità di tempo. Se parliamo della corrente che attraversa un neurone, è chiaro che ci riferiamo a correnti molto piccole, dell’ordine dei pico ampere (pA), cioè 1 * 10-12, la bilionesima parte di un ampere, ovvero 0,000 000 000 001 ampere (A). Per avere una idea delle grandezze, una corrente di intensità pari a un ampere (I=1 A) sposta 6,24150948 * 1018 portatori di carica elementare (cioè particelle mobili dotate di carica) in un secondo tra due capi di un circuito.

Con tensione elettrica, invece, misurata in Volt (V), indichiamo la “pressione” che spinge gli elettroni da una parte all’altra di un circuito attraverso un conduttore. La tensione elettrica è una differenza di potenziale che si genera dalla separazione di carica. Le cariche separate si attraggono reciprocamente, generando un flusso di portatori di carica che tende a ripristinare una situazione di equilibrio.

Anche in questo caso ci riferiamo a tensioni veramente piccole, dell’ordine dei millivolt (mV), cioè un millesimo di V.

La tensione elettrica, in pratica, è la forza che, appena possibile, mette in movimento gli elettroni, cioè genera corrente elettrica. In tutti i fenomeni elettrici potremmo dire che “la tensione rappresenta la causa mentre la corrente ne costituisce l’effetto”.

Abbiamo un altro elemento da considerare. Se la tensione è la forza necessaria a generare la corrente, la resistenza è quella forza che si oppone al passaggio del flusso di corrente.

Va da se che maggiore sarà la resistenza, maggiore sarà la differenza di potenziale necessaria a generare un determinato flusso di corrente.

Come saprete, la corrente elettrica è direttamente proporzionale alla tensione e inversamente proporzionale alla resistenza. La legge di ohm I = V/R

reti neurali artificiali

Reti neurali artificiali : i neuroni biologici come piccoli “generatori elettrici di segnale” di una grandissima rete neurale.

Al pari di un circuito elettrico, possiamo considerare la tensione come la differenza di potenziale tra lo spazio extracellulare di un neurone e lo spazio intracellulare (citosol), tra i quali è frapposta la membrana cellulare, la resistenza i canali ionici, attraverso i quali diffondono le cariche elettriche, mentre la corrente, la quantità di carica che diffonde nell’unità di tempo. Il potenziale elettrico tra l’interno e l’esterno del neurone, in assenza di stimolazione, è chiamato potenziale di membrana a riposo. Per maggiori dettagli potete consultare questo link.

Un complesso sistema di elementi, come i canali ionici voltaggio dipendenti e la pompa sodio potassio, sono i responsabili del mantenimento e della variazione del potenziale di membrana, come del potenziale d’azione, che consente al neurone di comunicare con gli altri neuroni di una rete neurale.

Possiamo immaginare il neurone come un dispositivo che riceve in ingresso diversi segnali elettrici che turbano il potenziale di membrana a riposo facendolo variare. Quando la somma di questi segnali, pesati per la loro “importanza”, supera un valore soglia, il neurone genera un segnale elettrico chiamato potenziale d’azione, comunicando, attraverso il suo assone, verso l’esterno. Il potenziale di membrana, dopo che si è generato il potenziale d’azione, si “resetta” assumendo nuovamente il valore precedente la stimolazione, cioè quello di riposo.

neurone artificiale
Figura 3 Schema di un neurone artificiale: gli ingressi (x) sono pesati (w) e sommati. Se il risultato supera il valore soglia (f) della funzione di attivazione, il neurone scarica (si accende) altrimenti non genera verso l’esterno alcun segnale (rimane spento).

Di norma il potenziale di membrana a riposo è di circa -60 mV e -70 mV, mentre la tensione di soglia di -55 mV.

Quello che vogliamo simulare in questo tutorial è appunto il funzionamento appena descritto. Creare un neurone, misurare la variazione del potenziale di membrana e visualizzare i potenziali d’azione (gli spike).

Scriviamo qualche riga di codice in Python.

Apriamo il nostro tool di sviluppo (nella VM di NEST è già presente jupyter notebook). Importiamo nest e la libreria grafica pylab che ci servirà per visualizzare l’andamento di tensione e corrente del neurone.

import nest
import pylab

Successivamente creiamo il neurone attraverso la seguente linea di codice.

neuron = nest.Create("iaf_psc_alpha")

Tra le virgolette indichiamo il tipo di neurone da creare, in questo caso un particolare tipo di Leaky integrate-and-fire di cui potete consultare i dettagli del modello i quest’articolo:

Brette, R., & Gerstner, W. (2005). Adaptive exponential integrate-and-fire model as an effective description of neuronal activity. Journal of neurophysiology94(5), 3637-3642. DOI: https://doi.org/10.1152/jn.00686.2005

Nel video tutorial vi mostro più nel dettaglio come realizzare il vostro primo neurone con NEST e come visualizzare i grafici della sua attività.

Questo articolo nasce con intento divulgativo. Eventuali semplificazioni sono volute al fine di  renderlo di più facile lettura e comprensione.

Share Button