Vai alla Home Page About me Courseware Federica Living Library Federica Federica Podstudio Virtual Campus 3D Le Miniguide all'orientamento Gli eBook di Federica La Corte in Rete
 
I corsi di Scienze Matematiche Fisiche e Naturali
 
Il Corso Le lezioni del Corso La Cattedra
 
Materiali di approfondimento Risorse Web Il Podcast di questa lezione

Roberto Prevete » 3.Un modello computazionale del neurone biologico


Introduzione

Nella presente lezione descriveremo il primo, dal punto di vista storico, modello computazionale del neurone biologico:

  • Il modello di McCulloch & Pitts

proposto in A logical calculus of the ideas immanent in nervous activity, 1943

Prima di descrivere tale modello cerchiamo di capire, sulla base della lezione precedente, quali sono le caratteristiche strutturali e funzionali del neurone biologico che portano alla “costruzione” del modello computazionale.

Nelle prossime slide faremo, allora, vedere come:

  • La struttura e il comportamento di un neurone biologico può essere “catturato” da un punto di vista computazionale;
  • Come il tutto si traduce in un modello computazionale del neurone biologico.

Dal neurone biologico al modello computazionale

Da un punto di vista computazionale, un singolo neurone può essere così schematizzato:

  • Il corpo della cellula (o soma) può essere interpretato come una unità di computazione elementare.
  • Le connessioni tra bottoni sinaptici e dendriti di un neurone possono essere interpretate come delle linee (canali, connessioni) di input.
  • I potenziali d’azione presenti sugli assoni pre-sinaptici possono essere visti come dei segnali di ingresso che possono attivare un canale di input .
  • L’assone può essere visto come un canale di output che o trasporta un segnale oppur è silente.

Inoltre …

Dal neurone biologico al modello computazionale (segue)

  • Il numero di neurotrasmettitori rilasciati da un bottone sinaptico quando è presente un potenziale d’azione esprime l’efficacia (o peso) della connessione tra un bottone sinaptico e il dendrite del neurone post-sinaptico. Tale efficacia può essere rappresentata tramite un valore w_ii associato a ciascuna linea di input.
  • Ciascun ingresso può essere rappresentato da una variabile x_i \in { {0,1} }. Dove x_i = 1 rappresenta la presenza di un potenziale d’azione sul bottone pre-sinaptico, x_i = 0 l’assenza.
  • La presenza o assenza di un potenziale d’azione sull’assone può essere rappresentato da una variabile y_i \in { {0,1} } associata a ciascun canale d’output.

Il modello di McCulloch and Pitts

A partire dalle precedenti considerazione possiamo descrivere il modello di McCulloche & Pitts nel seguente modo (vedi figura).

Un neurone è visto come una unità di computazione elementare costituita da:

  • n linee di ingresso
  • Un valore di input, x_i \in { {0,1} }, e un peso w_i per ciascuna i-sima linea di ingresso.
  • Una soglia T.
  • Un valore di output y_i \in { {0,1} }.
Rappresentazione schematica del modello di McCulloch & Pitts.

Rappresentazione schematica del modello di McCulloch & Pitts.


Il modello di McCulloch and Pitts (segue)

L’unita di calcolo compie le seguenti operazioni:

  • Ad ogni dato momento alcuni canali di input sono attivati, cioè sono alimentati con un input x_ii=1.
  • L’unità computazionale riceve un input (l’equivalente del potenziale post-sinaptico, PSP) dato dalla somma dei valori w_i corrispondenti ai canali attivati.
  • Tale somma è confrontata con una valore di soglia T. Se la somma supera la soglia T il valore di output della unità di calcolo risulta y=1, altrimenti y=0 .
Rappresentazione schematica del modello di McCulloch & Pitts.

Rappresentazione schematica del modello di McCulloch & Pitts.


Il modello di McCulloch and Pitts (segue)

In definitiva, il valore di output dell’unità di calcolo può essere così formalizzato:

y=\theta(h -T)

con
h=\sum_{i=1,...,n} w_i x_i
\theta(x)=\begin{cases} 1 \text{ if } x > 0 & \\ 0 \text{ otherwise  } \end{cases}

Quindi il neurone artificiale avrà un valore di output pari a 1 quando la somma pesata dei suoi input supera una certa soglia T, altrimenti il suo output sarà pari a 0.

Rappresentazione schematica del modello di McCulloch & Pitts.

Rappresentazione schematica del modello di McCulloch & Pitts.


Modello di McCulloch & Pitts ed operazioni logiche

McCulloch e Pitts, nel 1943, mostrarono come dei semplici neuroni formali potessero essere combinati per calcolare le tre operazioni logiche elementari:

  • NOT
  • AND
  • OR

Ciascuna operazione logica può essere realizzata scegliendo opportunamente

il numero di linee di ingresso;
i valori dei pesi associati alle linee di ingresso;
il valore della soglia e…
… supponendo che un valore di ingresso pari a 1 codifichi il valore logico TRUE, mentre il valore di ingresso pari a 0 codifichi il valore logico FALSE.

Vediamo come possiamo fare …

OR

Ecco una possibile scelta dei valori dei pesi e della soglia per realizzare un OR logico:

  • w_1=1.5
  • w_2=1.5
  • T=1

In questo caso se i valori di input sono, ad esempio, x_1=1 e x_2=0 otteniamo:

h=\sum_{i=1,2}w_ix_i=1.5
y=\theta(h-1)=\theta(0.5)=1

Come esercizio provare per gli altri possibili valori di input cosa succede, cioè per:

  • x_1=0 e x_2=0
  • x_1=0 e x_2=1
  • x_1=1 e x_2=1
Modello di McCulloch & Pitts che realizza un OR logico.

Modello di McCulloch & Pitts che realizza un OR logico.


AND

Ecco una possibile scelta dei valori dei pesi e della soglia per realizzare un AND logico:

w_1=0.6
w_2=0.6
T=1

In questo caso se i valori di input sono, ad esempio, x_1=1 e x_2=0 otteniamo:

h=\sum_{i=1,2}w_ix_i=0.6

y=\theta(h-1)=\theta(- 0.4)=0

Come esercizio provare per gli altri possibili valori di input cosa succede, cioè per:

  • x_1=0 e x_2=0
  • x_1=0 e x_2=1
  • x_1=1 e x_2=1
Modello di McCulloch & Pitts che realizza un AND logico.

Modello di McCulloch & Pitts che realizza un AND logico.


NOT

Ecco una possibile scelta dei valori dei pesi e della soglia per realizzare un NOT logico:

w_1=-1
T=-0.5

In questo caso se il valori di input è x_1=0 otteniamo:

h=\sum_{i=1}w_ix_i=0

y=\theta(h+0.5)=\theta(0.5)=1

Mentre se il valore di input è x_1=1 otteniamo:

h=\sum_{i=1}w_ix_i=-1

y=\theta(h+0.5)=\theta(-0.5)=0

Modello di McCulloch & Pitts che realizza un NOT logico.

Modello di McCulloch & Pitts che realizza un NOT logico.


Alcune considerazioni …

Nelle precedenti slide abbiamo visto come ottenere le funzioni logiche OR, AND e NOT scegliendo opportunamente il numero di linee di ingresso, i pesi e la soglia del neurone artificiale di McCulloch & Pitts. Facciamo allora una serie di considerazione o precisazioni:

  • Possiamo utilizzare l’espressione “parametri del modello” per indicare l’insieme degli elementi che possiamo modificare per ottenere un comportamento desiderato.
  • Nelle slide precedenti abbiamo, quindi, scelto gli opportuni parametri del modello per ottenere le tre funzioni logiche elementari, sottolineo che, in generale, non esiste una unica scelta dei parametri per ottenere il comportamento desiderato. Ad esempio, nei tre casi precedenti esistono infinite “gruppi” di parametri per cui si ottengono gli stessi comportamenti (come esercizio si provi a cercare altre scelte dei parametri per ottenere sempre un OR, un AND o un NOT).

Due domande possono subito essere poste:

  1. Quale è l’insieme delle funzioni che possono essere realizzate variando i parametri del modello?
  2. Se voglio realizzare una specifica funzione come faccio a scegliere il giusto gruppo di parametri?

Per ora tali domande saranno lasciate in sospeso, per essere ripresa più avanti nel corso, ma è utile subito sottolineare che l’intero corso “ruoterà” proprio intorno a tali problematiche.

Implementazione in C del Modello di McCulloch & Pitts

Vediamo ora come è possibile “simulare” in C il modello di McCulloch & Pitts. A tale scopo è necessario:

  • Scegliere delle opportune strutture dati.
  • Sceglie le opportune operazioni da compiere sulle strutture dati.
  • Parametrizzare opportunamente le strutture dati e le operazioni su di esse, in modo da poter simulare non un singolo neurone artificiale (cioè con dei parametri fissati), ma qualunque neurone artificiale di McCulloch & Pitts.

Strutture Dati

Ecco un esempio in C delle possibile strutture dati che possono essere utilizzate:

Mostra codice

Strutture Dati (segue)

Ecco un esempio in C delle principali funzioni dati che possono essere utilizzate:

  • Funzione per generare un nuovo nodo definendo il numero di linee di ingresso e la soglia del nodo:
    struct node *newNode(int numInConn, float Th);
  • Funzione per scrivere il valore del peso su una linea di ingresso del nodo:
    void setWeightConn(struct node *n, int pos, float w);
  • Funzione per scrivere il valore di input su una linea di ingresso del nodo:
    void setInputConn(struct node *n, int pos, float in);
  • Funzione per calcolare l’input del nodo:
    void computeInput(struct node *n);
  • Funzione per calcolare l’output del nodo:
    void computeOutput(struct node *n);

Fissare i parametri del neurone artificiale simulato

Una possibile implentazione in C delle funzioni per fissare i parametri del neurone artificiale di McCulloch & Pitts:

Mostra codice

Input e Output del neurone artificiale simulato

Una possibile implentazione in C delle funzioni per calcolare l’input e l’output del neurone artificiale di McCulloch & Pitts:

void computeInput(struct node *n) {
int i;
n->input=0;
for (i=0;inumInConn;++i)
n->input +=n->inConn[i].input*n->inConn[i].weight;
}

void computeOutput(struct node *n) {
if (n->input > n->T) n->output=SPIKE; else n->output=NOSPIKE;
}

Una possibile simulazione del neurone artificiale

Una possibile programma in C per simulare il comportamento del neurone artificiale di McCulloch & Pitts, sulla base delle strutture dati e funzioni precedentemente definite:

Mostra codice

Una possibile simulazione del neurone artificiale (segue)

Abbiamo descritto un possibile programma in C per simulare un neurone artificiale di McCulloch & Pitts. Naturalmente è possibile fare di meglio. Ad esempio:

  • Permettere che la lettura dei parametri avvenga da file.
  • Permettere che la lettura degli input sulle linee di ingresso avvenga anch’essa da file.
  • Dare la possibilità di inserire più volte degli input sulle linee di ingresso e, così, ottenere più output.

Allora al termine di questa lezione, si propone di scrivere il proprio simulatore di neuroni artificiali di McCulloch & Pitts, con le caratteristiche sopra riportate!

  • Contenuti protetti da Creative Commons
  • Feed RSS
  • Condividi su FriendFeed
  • Condividi su Facebook
  • Segnala su Twitter
  • Condividi su LinkedIn
Progetto "Campus Virtuale" dell'Università degli Studi di Napoli Federico II, realizzato con il cofinanziamento dell'Unione europea. Asse V - Società dell'informazione - Obiettivo Operativo 5.1 e-Government ed e-Inclusion