Machine Learning: emuliamo un neurone in Python

Una delle prime forme di machine learning comparsa nella letteratura di settore, e anche una delle più semplici da implementare è il Perceptron (in italiano possiamo chiamarlo percettrone ma la forma inglese è la più diffusa). Si tratta di una sorta di schematizzazione del funzionamento di un neurone che prevede una serie di ingressi che vengono elaborati per dare in uscita un valore che ne rappresenta la somma pesata. Nello step successivo questo valore viene normalizzato secondo uno schema preciso.

Schematizziamo il concetto con una formula, la prima operazione è la seguente:

Il risultato finale sarà invece elaborato secondo questa funzione (a cui ci riferiremo con step function):

 

Passiamo immediatamente alla pratica per capire come tradurre questo concetto matematico in codice. Creiamo un perceptron in grado di “imparare” ad eseguire la funzione logica AND.  La scelta del linguaggio per queste applicazioni ricade molto spesso su python considerata la sua semplicità, leggibilità ed eleganza. Per prima cosa stabiliamo il set di dati in ingresso, che negli articoli teorici abbiamo sempre definito training data.

Ora c’è da definire la step function.

Serviranno anche alcuni valori di riferimento. Per prima cosa un vettore dei pesi scelti inizializzato con numeri casuali. Inoltre abbiamo bisogno anche di un tasso di apprendimento e del numero di interazioni necessarie al perceptron per “imparare” dai training data.

Adesso passiamo al ciclo di apprendimento.

Dopo le cento iterazioni il percettrone dovrebbe essere sufficientemente istruito per replicare in autonomia la funzione AND. Per testarne il funzionamento bastano poche righe di codice.

Mettendo tutto insieme hai un’algoritmo di machine learning già funzionante. Semplice vero?

Questo è il risultato finale:

Trovi il file sorgente nel nuovo repository :#/ promezio che ho creato su GitHub per riunire tutti i test relativi al machine learning che ritengo possano essere utili da studiare.