Corso

Chi è alle prime armi con le reti neurali artificiali (ANN) tende a porsi alcune domande. Tra queste: qual è il numero di livelli nascosti da usare? Quanti neuroni nascosti in ciascun livello nascosto? A cosa servono i livelli/neuroni nascosti? Aumentare il numero di livelli/neuroni nascosti produce sempre risultati migliori? Sono lieto di dire che possiamo rispondere a queste domande. Chiariamo: rispondere potrebbe essere molto complesso se il problema da risolvere è complicato. Alla fine di questo articolo, avrai almeno un’idea di come si risponde a queste domande e potrai metterti alla prova con esempi semplici.

Introduzione
Le ANN sono ispirate alla rete neurale biologica. Per semplicità, in informatica sono rappresentate come un insieme di livelli. Questi livelli rientrano in tre categorie: input, nascosti e output.
Stabilire il numero di livelli di input e output e i relativi neuroni è la parte più facile. Ogni rete ha un solo livello di input e uno di output. Il numero di neuroni nel livello di input è pari al numero di variabili di input nei dati elaborati. Il numero di neuroni nel livello di output è pari al numero di output associati a ciascun input. La sfida sta nel determinare il numero di livelli nascosti e dei loro neuroni.
Ecco alcune linee guida per stabilire il numero di livelli nascosti e di neuroni per ciascun livello nascosto in un problema di classificazione:
- In base ai dati, traccia una frontiera decisionale attesa per separare le classi.
- Esprimi la frontiera decisionale come un insieme di linee. Nota che la combinazione di tali linee deve restituire la frontiera decisionale.
- Il numero di linee selezionate rappresenta il numero di neuroni nascosti nel primo livello nascosto.
- Per collegare le linee create dal livello precedente, si aggiunge un nuovo livello nascosto. Nota che si aggiunge un nuovo livello nascosto ogni volta che devi creare connessioni tra le linee del livello nascosto precedente.
- Il numero di neuroni nascosti in ciascun nuovo livello nascosto è pari al numero di connessioni da realizzare.
Per chiarire, applichiamo le linee guida precedenti a una serie di esempi.
Esempio Uno
Partiamo da un semplice esempio di problema di classificazione con due classi, come mostrato nella figura seguente. Ogni campione ha due input e un output che rappresenta l’etichetta di classe. È molto simile al problema XOR.

La prima domanda da porsi è se siano necessari o meno dei livelli nascosti. Una regola da seguire per stabilire se i livelli nascosti siano necessari è la seguente:
Nelle reti neurali artificiali, i livelli nascosti sono necessari se e solo se i dati devono essere separati in modo non lineare.
Osservando la figura successiva, sembra che le classi debbano essere separate in modo non lineare. Una singola linea non basta. Di conseguenza, dobbiamo usare livelli nascosti per ottenere la migliore frontiera decisionale. In tal caso, potremmo anche non usarli, ma questo influirebbe sull’accuratezza della classificazione. Quindi è meglio usare livelli nascosti.
Sapere che servono livelli nascosti ci porta a due domande importanti:
-
Qual è il numero richiesto di livelli nascosti?
-
Quanti neuroni nascosti in ciascun livello nascosto?
Seguendo la procedura precedente, il primo passo è disegnare la frontiera decisionale che separa le due classi. Esistono più frontiere possibili che separano correttamente i dati, come mostrato nella figura sotto. Quella che useremo per la discussione è nella parte destra della figura (b).

Seguendo le linee guida, il passo successivo è esprimere la frontiera decisionale come un insieme di linee.
L’idea di rappresentare la frontiera decisionale tramite un insieme di linee deriva dal fatto che qualsiasi ANN è costruita usando il percettrone a singolo livello come mattone di base. Il percettrone a singolo livello è un classificatore lineare che separa le classi usando una linea creata secondo la seguente equazione:
y=w1x1+w2x2+ ⋯ +wixi+b
Dove xi è l’input i-esimo, wi è il suo peso, b è il bias e y è l’output. Poiché ogni neurone nascosto aggiunto aumenta il numero di pesi, è consigliabile usare il minor numero di neuroni nascosti che svolga il compito. Usarne più del necessario aggiunge complessità.
Tornando al nostro esempio, dire che l’ANN è costruita usando più reti di percettroni equivale a dire che la rete è costruita con più linee.
In questo esempio, la frontiera decisionale è sostituita da un insieme di linee. Le linee partono dai punti in cui la curva di frontiera cambia direzione. In tali punti si collocano due linee, ciascuna in una direzione diversa.
Poiché c’è un solo punto in cui la curva di frontiera cambia direzione, evidenziato nella figura successiva da un cerchio grigio, saranno necessarie solo due linee. In altre parole, ci sono due reti di percettroni a singolo livello. Ogni percettrone produce una linea.

Sapere che bastano due linee per rappresentare la frontiera decisionale ci dice che il primo livello nascosto avrà due neuroni nascosti.
A questo punto, abbiamo un solo livello nascosto con due neuroni. Ogni neurone nascosto può essere visto come un classificatore lineare rappresentato da una linea, come nella figura precedente. Ci saranno due output, uno per ciascun classificatore (cioè neurone nascosto). Ma vogliamo costruire un unico classificatore con un solo output che rappresenti l’etichetta di classe, non due classificatori. Di conseguenza, gli output dei due neuroni nascosti devono essere fusi in un unico output. In altre parole, le due linee devono essere collegate da un altro neurone. Il risultato è mostrato nella figura successiva.
Fortunatamente, non dobbiamo aggiungere un altro livello nascosto con un solo neurone per svolgere quel compito. Il neurone del livello di output fa il lavoro. Tale neurone unirà le due linee generate in precedenza così che la rete produca un solo output.

Dopo aver stabilito il numero di livelli nascosti e dei loro neuroni, l’architettura della rete è ora completa, come mostrato nella figura seguente.

Esempio Due
Un altro esempio di classificazione è mostrato nella figura seguente. È simile al precedente: due classi, ogni campione con due input e un output. La differenza sta nella frontiera decisionale. In questo caso la frontiera è più complessa rispetto all’esempio precedente.

Secondo le linee guida, il primo passo è disegnare la frontiera decisionale. Quella usata nella nostra discussione è mostrata nella parte più a sinistra della figura successiva (a).
Il passo successivo è suddividere la frontiera decisionale in un insieme di linee, ognuna delle quali sarà modellata come un percettrone nell’ANN. Prima di tracciare le linee, i punti in cui la frontiera cambia direzione vanno marcati, come mostrato nella parte più a destra della figura successiva (b).

Quante linee servono? Ciascuno dei punti superiore e inferiore avrà due linee associate, per un totale di 4 linee. Il punto intermedio condividerà le sue due linee con gli altri punti. Le linee da creare sono mostrate nella figura sotto.
Poiché il primo livello nascosto avrà un numero di neuroni nascosti pari al numero di linee, il primo livello nascosto avrà 4 neuroni. In altre parole, ci sono 4 classificatori, ciascuno creato da un percettrone a singolo livello. Al momento, la rete genererà 4 output, uno per classificatore. Il passo successivo è collegare questi classificatori in modo che la rete generi un solo output. In altre parole, le linee devono essere collegate da altri livelli nascosti per generare un’unica curva.

La scelta del layout della rete spetta al progettista del modello. Un’architettura praticabile è costruire un secondo livello nascosto con due neuroni. Il primo neurone nascosto collegherà le prime due linee e l’ultimo collegherà le ultime due linee. Il risultato del secondo livello nascosto. Il risultato del secondo livello è mostrato nella figura sotto.

A questo punto, ci sono due curve separate. Quindi ci sono due output dalla rete. Il passo successivo è collegare queste curve per ottenere un solo output dall’intera rete. In questo caso, si può usare il neurone del livello di output per l’ultimo collegamento, invece di aggiungere un nuovo livello nascosto. Il risultato finale è mostrato nella figura seguente.

Completata la progettazione, l’architettura finale della rete è mostrata nella figura seguente.


