Una rete neurale profonda (Deep Neural Network, DNN) è una tecnica di apprendimento automatico che consente a un computer, addestrandolo, di svolgere compiti che sarebbero molto difficili da realizzare con le tecniche di programmazione convenzionali. Gli algoritmi delle reti neurali sono stati ispirati dal cervello umano e dalle sue funzioni: come la nostra mente umana, sono progettati per funzionare non solo seguendo un elenco predefinito di regole, ma prevedendo soluzioni e traendo conclusioni basate su iterazioni ed esperienze precedenti.
Che cos'è l'architettura delle reti neurali?
Una rete neurale è composta da più strati di nodi che ricevono input da altri strati e producono un output fino a raggiungere un risultato finale. Le reti neurali possono avere un numero qualsiasi di strati nascosti: più strati di nodi ci sono nella rete, maggiore è la complessità. Ecco le diverse architetture delle reti neurali:
- Le reti neurali tradizionali, di solito, sono composte da 2 o 3 strati nascosti;
- Rete di apprendimento profondo, che può avere fino a 150 strati nascosti;
Qual è la differenza tra reti neurali e reti neurali profonde?
Una rete neurale profonda è un sistema molto più complicato di un "semplice" sistema neurale. Una rete neurale è paragonabile a una partita a scacchi e si comporta secondo algoritmi: verranno suggerite tattiche diverse in base alle mosse e alle azioni dell'avversario. Questa rete neurale si limita agli input del programmatore:
- Come si muovono i pezzi degli scacchi;
- Le dimensioni della scacchiera;
- Strategie diverse per situazioni diverse;
Una rete neurale che va oltre i dati di input e può imparare dalle esperienze precedenti diventa una rete neurale profonda.
Sullo stesso computer si potrebbe, ad esempio, addestrare una rete neurale, poi giocare con essa contro altre persone e lasciare che impari mentre gioca. Da qui, se una rete neurale può imparare da diversi giocatori, potrebbe diventare difficile, o letteralmente impossibile, sconfiggere una rete neurale profonda, anche per i maestri di scacchi.
Le reti neurali profonde sono in grado di riconoscere i comandi vocali, identificare le voci, riconoscere i suoni e la grafica e fare molto di più di una rete neurale. Le reti di apprendimento profondo utilizzano i "Big Data" insieme agli algoritmi per risolvere un problema, e queste reti neurali profonde possono risolvere i problemi con un input umano limitato o nullo.
Come visualizzare il lavoro di una rete neurale profonda?
Il processo di una rete neurale profonda si comprende meglio con un esempio. Immaginate di avere centinaia di migliaia di immagini, alcune delle quali contengono cani, e di voler scrivere un programma per computer che riconosca i cani nelle immagini.
Avete due possibilità. Si può scrivere un programma per identificare esplicitamente i cani, oppure si può scrivere un programma che "impara" a identificare i cani.
Decidete incautamente di provare a fare la prima.
L'utilizzo di tecniche di programmazione convenzionali è lungo e difficile e i risultati non sono sempre accurati.
Per identificare le immagini di cani, si crea un programma software che utilizza istruzioni "se" e "allora" in cui la probabilità che si stia guardando un cane è programmata per aumentare ogni volta che si identifica un attributo canino come il pelo, le orecchie flosce e la coda. Tuttavia, questo tipo di sistema neurale è difficile a molti livelli:
Ad esempio, se un gruppo di pixel assomiglia a una coda, aumenta la probabilità che si stia guardando un cane. La rete neurale profonda deve identificare i gruppi di pixel che corrispondono agli attributi del cane. Anche se riuscite a farlo, ci sono problemi per il vostro algoritmo:
- Molti oggetti fotografati condividono alcuni degli attributi del cane, soprattutto le fotografie di animali simili. È necessario aggiungere delle regole;
- A volte gli attributi sono presenti ma oscurati. I vostri algoritmi non li rileveranno;
- A volte gli attributi sono importanti solo quando sono presenti altri attributi. Saranno necessarie altre regole decisionali;
La classificazione fallisce. Ci si rende conto che non è possibile identificare manualmente l'intero set di attributi, né tantomeno elaborare tutte le regole necessarie per gestire tutti questi casi speciali.
Saggiamente vi arrendete e decidete di provare il secondo approccio. Utilizzare una rete neurale o, meglio ancora, una rete neurale profonda.
Un modello di deep learning può far risparmiare tempo di codifica e offrire risultati migliori
La rete neurale è così chiamata perché esiste una somiglianza tra questo approccio di programmazione e il modo in cui funziona il cervello.
Proprio come il cervello, gli algoritmi delle reti neurali utilizzano una rete di neuroni o nodi. E come il cervello, questi neuroni sono funzioni discrete (o piccole macchine, se preferite) che ricevono input e generano output. Questi nodi sono disposti in strati, dove le uscite dei neuroni di uno strato diventano gli input per i neuroni dello strato successivo, finché i neuroni dello strato più esterno della rete non generano il risultato finale.
Ci sono quindi strati di neuroni con ogni singolo neurone che riceve input molto limitati e genera output molto limitati, proprio come nel cervello. Il primo strato (o strato di ingresso) di neuroni riceve gli input e l'ultimo strato di neuroni (o strato di uscita) della rete produce il risultato.
È corretto chiamare questo tipo di algoritmo "rete neurale"?
Il cervello umano è molto più complesso e potente di una rete neurale. Il nome dell'algoritmo "rete neurale profonda" è stato un colpo di mercato, ma potrebbe creare aspettative irrealistiche su ciò che è possibile ottenere con queste tecniche. Detto questo, ci sono persone che stanno cercando di reingegnerizzare il cervello, utilizzando una rete neurale molto complessa, nella speranza di poter replicare un'intelligenza generale simile a quella umana nello sviluppo dei bot. In che modo la rete neurale e le tecniche di apprendimento automatico possono aiutarci a risolvere il problema del riconoscimento dei cani?
Invece di definire manualmente gli attributi dei cani, un algoritmo di rete neurale profonda può identificare gli attributi importanti e gestire tutti i casi speciali senza bisogno di programmazione.
Come funziona una rete neurale profonda?
Lo fa nel modo seguente:
Ogni neurone dello strato di ingresso riceve in ingresso un'informazione dall'immagine e poi pesa in modo casuale (tra zero e uno) se quell'informazione suggerisce un cane o meno. Un peso basso (inferiore a 0,5) significa che è meno probabile che l'informazione sia associata a un cane, mentre un peso alto significa che è più probabile che l'informazione sia associata a un cane. Questo approccio di rete neurale multistrato è chiamato apprendimento profondo. Le reti neurali e l'apprendimento profondo sono tecniche molto potenti per ottenere la comprensione del computer.
Le reti neurali profonde sono composte da più strati di nodi che si comportano come i neuroni del nostro cervello.
Per continuare con le reti neurali profonde, i pesi di questi neuroni vengono poi immessi come input negli altri strati di neuroni che assegnano anch'essi in modo casuale i pesi e li trasmettono come input ad altri neuroni della rete. Questa procedura continua finché lo strato di neuroni in uscita non fornisce un verdetto binario. Se la media dei pesi assegnati è superiore a 0,5, si tratta di un cane, altrimenti no. Queste connessioni tra i neuroni e la loro attivazione su più livelli di nodi sono ciò che conferisce alle applicazioni delle reti neurali profonde la loro potenza.
Come fa una rete neurale profonda a sapere se produce la risposta giusta?
Le domande rilevanti a questo punto sono: la rete neurale profonda ha indovinato o meno e cosa succede se ha indovinato o meno? E come fa una rete neurale a sapere se ha indovinato o meno?
Un modo per saperlo è quello di intraprendere il compito di classificazione, estremamente dispendioso in termini di tempo, di etichettare tutte le fotografie "cane" o "non cane", a seconda che nella foto sia presente o meno un cane. La rete neurale guarderà semplicemente l'etichetta per vedere se ha identificato correttamente il cane o meno.
Naturalmente non ci interessa sapere se ha risposto correttamente alla domanda "Cane o no" su una singola foto di cane. Ci interessa sapere se la domanda è stata azzeccata per ogni foto, o almeno scoprire quale percentuale di volte è stata accurata nel valutare la presenza o meno di un cane nella foto.
In che modo le reti neurali profonde utilizzano l'addestramento per imparare?
Una rete neurale impara ad ogni iterazione dei dati per migliorare la propria precisione.
Per un determinato set di pesi di tutti i neuroni della rete, la rete neurale farà delle ipotesi per tutte le foto e poi determinerà quanto è stata accurata. Quale percentuale di volte ha ottenuto il risultato giusto, cioè ha detto che il cane era nella foto quando c'era, e quante volte ha ottenuto il risultato sbagliato, dicendo che il cane era nella foto quando non c'era o dicendo che il cane non era nella foto quando c'era. Questa indicazione sull'accuratezza dell'algoritmo di IA è un feedback essenziale per il modello della rete neurale.
Dopo aver esaminato tutte le foto una volta, può regolare in modo casuale (o in altro modo) alcuni dei pesi e quindi ripetere l'intero esercizio di indovinare cosa c'è nella foto. Se il risultato della seconda prova è migliore, lo manterrà invece di tornare al set di pesi precedente. Se il risultato della seconda prova è peggiore, si può tornare all'insieme di pesi precedente e poi provare diverse modifiche a tali pesi.
Il processo continuerà in questo modo finché la rete neurale non diventerà brava a identificare i cani nelle foto (si spera).
Quando l'algoritmo è in grado di identificare con precisione i cani, si dice che ha raggiunto la convergenza. È stato "addestrato" con successo a identificare i cani.
Quali sono i diversi tipi di reti neurali?
Reti neurali convoluzionali
Le reti neurali convoluzionali (CNN) sono un tipo di intelligenza artificiale progettata per elaborare, o imparare, da grandi insiemi di dati. Rete neurale convoluzionale è un termine di recente conio che descrive specificamente questo tipo di rete, o la tecnologia AI in generale.
Le CNN sono potenti strumenti di intelligenza artificiale per il riconoscimento delle immagini che utilizzano l'apprendimento profondo per eseguire non solo compiti generativi, ma anche descrittivi. Esempi di compiti generativi sono il ritaglio automatico, la scrittura di didascalie, la videografia, il ciclostile e la sovrapposizione di immagini. Una rete neurale convoluzionale contiene i cosiddetti strati convoluzionali. Ogni neurone di questi strati elabora solo le informazioni di una piccola parte del campo visivo. Gli ingressi di ciascun neurone sono allineati in modo simile a una somma di controllo per generare una mappa di caratteristiche.
Reti neurali artificiali
Una rete neurale artificiale (RNA) è una rete di molti perceptron a diverse profondità o strati che può essere intesa come una regressione logistica. La RNA è spesso chiamata rete neurale Feed Forward perché gli input vengono elaborati solo in direzione di avanzamento: uno strato riceve un input e invia un output in modo lineare.
Le reti neurali artificiali sono note anche come approssimatori di funzioni universali. Gli algoritmi di rete neurale pura, come le RNA e le funzioni di mappatura che possono essere implementate come deep learning, consentono ai computer di apprendere qualsiasi funzione. Uno dei motivi per cui l'approssimazione universale è importante è la funzione di attivazione. Le funzioni di attivazione introducono proprietà non lineari nella rete durante l'apprendimento di qualsiasi relazione complessa tra ingresso e uscita. Aiuta i diversi tipi di rete ad apprendere l'uno dall'altro.
Come migliora una rete neurale profonda nel tempo?
Un modo per immaginare ciò che l'algoritmo sta facendo è immaginare ogni neurone come una sorta di test di certezza. Invece di codificare tutte quelle affermazioni "se-allora" per identificare i cani, ogni neurone è calibrato per aggiungere o togliere dal giudizio finale che l'oggetto nella foto è un cane. È come se il giudizio (come cane o no) fosse suddiviso in un gran numero di giudizi collegati che contribuiscono in modo aggregato a un giudizio finale.
Naturalmente l'obiettivo primario è quello di raggiungere la convergenza, se possibile. È anche un obiettivo importante farlo in un tempo ragionevole, preferibilmente in tempi brevi.
Gli algoritmi di apprendimento profondo hanno un processo di apprendimento che li rende difficili da comprendere per gli esseri umani.
L'aspetto interessante è che la logica che consente alle reti neurali di identificare i cani nell'immagine non è comprensibile all'uomo. I modelli di apprendimento profondo hanno una logica nascosta, essenzialmente una scatola nera di strati nascosti di nodi che creano la propria rete profonda. Detto questo, ci sono stati alcuni tentativi di rappresentare visivamente la logica alla base delle reti neurali per il riconoscimento delle immagini. In altri casi, non è possibile vedere cosa fa l'algoritmo dietro le quinte e i metodi di apprendimento profondo rimangono nascosti.
Le reti neurali e l'apprendimento automatico sono oggi molto popolari, ma molti di questi algoritmi erano noti già 50 anni fa.
Perché le reti neurali profonde sono sempre più diffuse in vari settori?
Uno dei motivi principali per cui le reti neurali sono molto più popolari oggi rispetto a quando sono state inventate è che la potenza di elaborazione è più veloce e più economica di prima. La potenza di calcolo ha fatto la differenza nel raggiungere una rapida convergenza. L'altra ragione è che i dati sono ormai onnipresenti, il che aumenta il valore degli algoritmi che possono utilizzare i dati, come chatbots per le aziende.
Le reti neurali avanzate richiedono un'elevata potenza di elaborazione e una grande quantità di dati.
Le reti neurali per l'apprendimento profondo sono tecniche affamate di dati e processori che possono raggiungere risultati impossibili per i programmatori che utilizzano tecniche di programmazione. Sono ideali per alcuni problemi in cui sono disponibili dati onnipresenti ed è facile classificare o classificare i risultati preferibili.
Senza avere centinaia di migliaia o preferibilmente milioni di foto di cani, sarebbe impossibile addestrare l'algoritmo. Queste tecniche funzionano solo quando sono disponibili molti dati. Questo è abbastanza ovvio, poiché è improbabile che tutti i casi speciali siano rappresentati in un insieme di sole 1000 foto.
Le reti neurali possono essere utilizzate con dati strutturati o non strutturati.
Un problema dell'esempio precedente è che l'etichettatura di tutte le foto richiede molto lavoro manuale. È più facile per gli algoritmi utilizzare dati etichettati in modo strutturato. L'apprendimento automatico delle reti neurali che utilizza dati strutturati è chiamato apprendimento supervisionato.
Questo ci porta a una domanda centrale: è possibile evitare tutto questo lavoro di etichettatura? Sarebbe una buona cosa, perché non solo si potrebbe evitare un sacco di lavoro manuale, ma anche la maggior parte dei dati disponibili su Internet non è strutturata, cioè non è accuratamente etichettata o strutturata.
Le reti neurali possono lavorare con dati non strutturati?
Le reti neurali artificiali e l'apprendimento automatico che lavorano con dati non strutturati sono chiamati apprendimento non supervisionato. Naturalmente, questo è il Santo Graal dell'apprendimento automatico ed è più simile al modo in cui gli esseri umani imparano. Tuttavia, anche l'apprendimento non supervisionato da parte delle macchine richiede molti più dati per "imparare" rispetto agli esseri umani e le macchine non possono facilmente estrapolare esempi che non siano quelli su cui sono state addestrate.
Molti modelli di apprendimento profondo cercano di riprodurre i processi del cervello umano.
Alcuni ritengono che questi tipi di algoritmi possano essere sviluppati, forse reingegnerizzando il cervello, al punto che gli algoritmi comincino ad avvicinarsi a una "comprensione" di livello umano. Si pensa che sarà possibile utilizzare una sofisticata tecnologia di scansione del cervello per capire come funzionano effettivamente le reti neurali del cervello. Copiando questi disegni e modelli potremo replicare un'intelligenza di livello umano.
Sebbene le tecniche siano senza dubbio ingegnose e molto utili, soprattutto quando è disponibile un ampio set di dati, è difficile immaginare che algoritmi così semplici possano essere alla base di un'intelligenza umana altamente creativa.
Indice dei contenuti
Rimanete aggiornati sulle ultime novità in materia di agenti AI
Condividi questo articolo su: