Se continui con le notizie tecnologiche, probabilmente hai trovato il concetto di reti neurali (conosciute anche come reti neurali).
Nel 2016, ad esempio, la rete neurale di AlphaGo di Google ha battuto uno dei migliori giocatori professionisti di Go nel mondo in una serie 4-1. YouTube ha anche annunciato che utilizzerà le reti neurali per comprendere meglio i suoi video YouTube utilizzerà le reti neurali per comprendere realmente i video YouTube utilizzerà le reti neurali per comprendere effettivamente i video La ricerca su YouTube può essere frustrante, perché YouTube non vede i video come una persona fa Di recente, Google presenta un brevetto che potrebbe cambiarlo. Leggi di più . Dozzine di altre storie possono venire in mente.
Ma cos'è esattamente una rete neurale? Come funziona? E perché è così popolare nell'apprendimento automatico?
Un computer come un cervello
I neuroscienziati moderni spesso discutono il cervello come un tipo di computer. Le reti neurali mirano a fare il contrario: costruire un computer che funzioni come un cervello.
Naturalmente, abbiamo solo una comprensione superficiale delle funzioni estremamente complesse del cervello, ma creando una simulazione semplificata di come il cervello elabora i dati, possiamo costruire un tipo di computer che funziona in modo molto diverso da uno standard.
I processori del computer elaborano i dati in modo seriale ("in ordine"). Eseguono molte operazioni su un insieme di dati, uno alla volta. L'elaborazione parallela ("elaborazione di più flussi contemporaneamente") accelera significativamente il computer utilizzando più processori in serie.
Nell'immagine sottostante, l'esempio di elaborazione parallela richiede cinque diversi processori:
Una rete neurale artificiale (così chiamata per distinguerla dalle reti neurali reali nel cervello) ha una struttura fondamentalmente diversa. È altamente interconnesso. Ciò gli consente di elaborare i dati molto rapidamente, imparare da quei dati e aggiornare la propria struttura interna per migliorare le prestazioni.
L'alto grado di interconnessione, tuttavia, ha alcuni effetti sbalorditivi. Ad esempio, le reti neurali sono molto brave a riconoscere i modelli oscuri nei dati.
La capacità di imparare
La capacità di una rete neurale di apprendere è la sua più grande forza. Con l'architettura di calcolo standard, un programmatore deve sviluppare un algoritmo che comunichi al computer cosa fare con i dati in arrivo per assicurarsi che il computer emetta la risposta corretta.
Una risposta input-output potrebbe essere semplice come "quando si preme il tasto A, si visualizza 'A' sullo schermo" o è complicato come eseguire statistiche complesse. Le reti neurali, d'altra parte, non hanno bisogno dello stesso tipo di algoritmi. Attraverso meccanismi di apprendimento, possono essenzialmente progettare i propri algoritmi 4 Algoritmi di apprendimento automatico che modellano la tua vita 4 Algoritmi di apprendimento automatico che modellano la tua vita Potresti non rendertene conto, ma l'apprendimento automatico è già tutto intorno a te e può esercitare un sorprendente grado di influenza sulla tua vita. Non mi credi? Potresti essere sorpreso. Ulteriori informazioni che garantiscono che funzionino correttamente.
È importante notare che poiché le reti neurali sono programmi software scritti su macchine che utilizzano hardware di elaborazione seriale standard, la tecnologia attuale impone ancora dei limiti. Realmente costruire una versione hardware di una rete neurale è un altro problema interamente.
Dai neuroni ai nodi
Ora che abbiamo gettato le basi per il funzionamento delle reti neurali, possiamo iniziare a esaminare alcuni dettagli specifici. La struttura di base di una rete neurale artificiale si presenta così:
Ciascuno dei cerchi è chiamato "nodo" e simula un singolo neurone. Sulla sinistra ci sono i nodi di input, nel mezzo ci sono i nodi nascosti e sulla destra i nodi di output.
In termini molto semplici, i nodi di input accettano valori di input, che possono essere un binario 1 o 0, parte di un valore di colore RGB, lo stato di un pezzo degli scacchi o qualsiasi altra cosa. Questi nodi rappresentano l'informazione che scorre nella rete.
Ogni nodo di input è connesso a un numero di nodi nascosti (a volte a ogni nodo nascosto, a volte a un sottoinsieme). I nodi di input prendono le informazioni che ricevono e lo passano al livello nascosto.
Ad esempio, un nodo di input potrebbe inviare un segnale ("fuoco", nel linguaggio delle neuroscienze) se riceve un 1 e rimanere inattivo se riceve uno zero. Ogni nodo nascosto ha una soglia: se tutti i suoi input sommati raggiungono un certo valore, si attiva.
Da sinapsi a connessioni
Ad ogni connessione, l'equivalente di una sinapsi anatomica, viene assegnato anche un peso specifico, che consente alla rete di porre un'enfasi maggiore sull'azione di un nodo specifico. Ecco un esempio:
Come puoi vedere, il peso della connessione B è superiore a quello della connessione A e C. Diciamo che il nodo nascosto 4 si attiva solo se riceve un input totale di 2 o superiore. Ciò significa che se 1 o 3 sparano da soli, 4 non verrà attivato, ma 1 e 3 insieme attiveranno il nodo. Il nodo 2 potrebbe anche attivare il nodo da solo attraverso la connessione B.
Prendiamo il tempo come esempio pratico. Supponiamo che tu progetta una semplice rete neurale per determinare se debba esserci un avviso di tempesta invernale.
Usando le connessioni e i pesi sopra indicati, il nodo 4 potrebbe sparare solo se la temperatura è inferiore a 0 F e i venti sono superiori a 30 MPH, oppure si spara se c'è più del 70% di possibilità di neve. La temperatura verrebbe immessa nel nodo 1, i venti nel nodo 3 e la probabilità di nevicare nel nodo 2. Ora il nodo 4 può tenerne conto al momento di determinare quale segnale inviare al livello di uscita.
Better Than Simple Logic
Naturalmente, questa funzione potrebbe essere semplicemente eseguita con semplici porte logiche AND / OR. Ma reti neurali più complesse, come quella sottostante, sono capaci di operazioni significativamente più complesse.
I nodi del livello di output funzionano allo stesso modo dei livelli nascosti: i nodi di output sommano l'input dal livello nascosto e, se raggiungono un determinato valore, i nodi di output vengono attivati e inviano segnali specifici. Alla fine del processo, il livello di output invierà un set di segnali che indica il risultato dell'input.
Mentre la rete mostrata sopra è semplice, le reti neurali profonde possono avere molti livelli nascosti e centinaia di nodi.
Correzione dell'errore
Il processo, finora, è relativamente semplice. Ma dove le reti neurali brillano davvero è nell'apprendimento. La maggior parte delle reti neurali utilizza un processo chiamato backpropagation, che invia segnali all'indietro attraverso la rete.
Prima che i programmatori distribuiscano una rete neurale, la eseguono attraverso una fase di addestramento in cui riceve una serie di input con risultati noti. Ad esempio, un programmatore potrebbe insegnare a una rete neurale a riconoscere le immagini Usa il tuo smartphone per identificare qualsiasi cosa con CamFind Usa il tuo smartphone per identificare qualsiasi cosa con CamFind Questa app è in grado di identificare praticamente qualsiasi oggetto tu passi. Non è solo bello, ma ha anche un sacco di usi pratici! Leggi di più . L'input potrebbe essere un'immagine di una macchina e l'uscita corretta sarebbe la parola "auto".
Il programmatore fornisce l'immagine come input e guarda cosa esce dai nodi di output. Se la rete risponde con "aeroplano", il programmatore dice al computer che è errato.
La rete quindi apporta modifiche alle proprie connessioni, alterando i pesi dei diversi collegamenti tra i nodi. Questa azione è guidata da uno specifico algoritmo di apprendimento aggiunto alla rete. La rete continua a regolare i pesi di connessione finché non fornisce l'output corretto.
Questa è una semplificazione, ma le reti neurali possono apprendere operazioni altamente complesse usando principi simili.
Miglioramento continuo
Anche dopo l'allenamento, l'backpropagation continua - ed è qui che le reti neurali diventano davvero interessanti. Continuano ad apprendere man mano che vengono utilizzati, integrando nuove informazioni e apportando modifiche ai pesi delle diverse connessioni, diventando sempre più efficaci ed efficienti nell'attività per cui sono stati progettati.
Questo potrebbe essere semplice come il riconoscimento delle immagini o complesso come giocare a Go.
In questo modo, le reti neurali cambiano e migliorano continuamente. E questo può avere effetti sorprendenti, dando vita a reti che danno la priorità a cose che un programmatore non avrebbe mai pensato di dare priorità.
Oltre al processo sopra descritto, che si chiama apprendimento supervisionato, c'è anche un altro metodo: apprendimento senza supervisione .
In questa situazione, le reti neurali prendono un input e provano a ricrearlo esattamente nel loro output, usando backpropagation per aggiornare le loro connessioni. Può sembrare un esercizio infruttuoso, ma in questo modo le reti imparano a estrarre utili funzioni e a generalizzare quelle funzioni per migliorare i loro modelli.
Problemi di profondità
Il backpropagation è un modo molto efficace per insegnare le reti neurali ... quando sono solo pochi strati profondi. Man mano che aumenta il numero di strati nascosti, l'efficacia di backpropagation diminuisce. Questo è un problema per reti profonde. Usando backpropagation, spesso non sono più efficaci delle reti semplici.
Gli scienziati hanno escogitato una serie di soluzioni a questo problema, le cui specifiche sono piuttosto complicate e vanno oltre lo scopo di questo articolo introduttivo. Quello che molte di queste soluzioni tentano di fare, in termini semplici, è quello di diminuire la complessità della rete addestrandola a "comprimere" i dati.
Per fare ciò, la rete impara ad estrarre un numero minore di caratteristiche identificative dell'input, diventando eventualmente più efficiente nei suoi calcoli. In effetti, la rete sta facendo generalizzazioni e astrazioni, molto nello stesso modo in cui gli umani imparano.
Dopo questo apprendimento, la rete può sfoltire nodi e connessioni che ritiene meno importanti. Ciò rende la rete più efficiente e l'apprendimento diventa più facile.
Applicazioni di rete neurali
Pertanto, le reti neurali simulano il modo in cui il cervello impara utilizzando più livelli di nodi (input, hidden e output) e sono in grado di apprendere sia in situazioni supervisionate che senza supervisione. Le reti complesse sono in grado di creare astrazioni e generalizzare, rendendole più efficienti e meglio in grado di apprendere.
Per cosa possiamo usare questi sistemi affascinanti?
In teoria, possiamo usare le reti neurali per quasi tutto. E probabilmente li hai usati senza rendertene conto. Sono molto comuni nel riconoscimento vocale e visivo, ad esempio, perché possono imparare a selezionare tratti specifici che i suoni o le immagini hanno in comune.
Quindi quando chiedi a Siri 8 cose che probabilmente non hai realizzato Siri potrebbe fare 8 cose che probabilmente non hai realizzato Siri potrebbe fare Siri è diventato uno dei tratti distintivi dell'iPhone, ma per molte persone non è sempre il più utile. Mentre alcuni di questi sono dovuti ai limiti del riconoscimento vocale, la stranezza nell'usare ... Leggi di più dove si trova la stazione di servizio più vicina, il tuo iPhone sta mettendo il tuo discorso attraverso una rete neurale per capire cosa stai dicendo. Potrebbe esserci un'altra rete neurale che impara a predire il tipo di cose che è probabile che tu chieda.
Le auto a guida autonoma potrebbero utilizzare le reti neurali per elaborare i dati visivi, seguendo le regole della strada ed evitando le collisioni. I robot di tutti i tipi possono beneficiare di reti neurali che li aiutano a imparare a completare in modo efficiente le attività. I computer possono imparare a giocare a classici come scacchi, Go e Atari . Se hai mai parlato con un chatbot, c'è la possibilità che stia usando una rete neurale per offrire risposte appropriate.
la ricerca su Internet può trarre grandi vantaggi dalle reti neurali, poiché il modello di elaborazione parallela ad alta efficienza può generare rapidamente molti dati. Una rete neurale potrebbe anche apprendere le tue abitudini per personalizzare i risultati della ricerca o prevedere ciò che cercherai nel prossimo futuro. Questo modello di predizione sarebbe ovviamente molto prezioso per i professionisti del marketing (e per chiunque altro debba prevedere un comportamento umano complesso).
Riconoscimento delle immagini, riconoscimento ottico dei caratteri I 5 migliori strumenti OCR per estrarre il testo dalle immagini I 5 migliori strumenti OCR per estrarre il testo dalle immagini Quando hai una risma di carta, come fai a convertire tutto il testo stampato in qualcosa che sarà un programma digitale in grado di riconoscere e indicizzare? Tieni un buon software OCR vicino. Ulteriori informazioni, previsioni di borsa, ricerca di percorsi, elaborazione di big data, analisi dei costi medici, previsioni di vendita, IA di videogiochi ... le possibilità sono quasi infinite. La capacità delle reti neurali di apprendere modelli, effettuare generalizzazioni e prevedere con successo il comportamento li rende preziosi in innumerevoli situazioni.
Il futuro delle reti neurali
Le reti neurali sono passate da modelli molto semplici a simulazioni di apprendimento estremamente complesse. Sono nei nostri telefoni, i nostri tablet e gestiscono molti dei servizi Web che utilizziamo. Ci sono molti altri sistemi di apprendimento automatico là fuori.
Ma le reti neurali, a causa della loro somiglianza (in modo molto semplificato) con il cervello umano, sono tra le più affascinanti. Mentre continuiamo a sviluppare e perfezionare i modelli, non si sa di cosa saranno capaci.
Conosci qualche interessante utilizzo delle reti neurali? Hai esperienza con loro da solo? Cosa trovi più interessante di questa tecnologia? Condividi i tuoi pensieri nei commenti qui sotto!