Intelligenza Artificiale in 30 Minuti per esempi pratici

Una passeggiata di salute.

Ok ok, calma, facciamo un passo indietro e andiamo per gradi.

In maniera semplificata, le Reti neurali Ricorrenti, o RNN per gli amici, sono fatte schematicamente così:Partiamo dal concetto semplice di neurone artificiale (che trovate sempre qui: https://bit.

ly/2lYfENH) e ora aggiungiamoci il fatto che ogni cella è influenzata nel suo stato, sia dal suo input, che dello suo stesso stato, o ‘peso’, che da quello del neurone precedente della rete.

Nelle LSTM la specialità, e anche la pesantezza, sta nei remember e forget ‘gate’, che possiamo considerare, con un po’ di generalizzazione, come altri ‘pesi’, che permettono alla rete di comprendere e ‘ricordare’ sequenze molto, ma molto meglio di una semplice RNN.

Per capire come imparano, immaginate di fare una strada di montagna, piena di curve e dossi, per centinaia e centinaia di volte, guidando a caso e ricominciando ogni volta che finite in un fosso o contro un muro.

Visto che siete immortali come le reti neurali, prima o poi imparerete la sequenza di curve e dossi ed al prossimo giro vi aspetterete la prossima curva in maniera istintiva, a prescindere anche da dove iniziate il percorso.

Allo stesso modo le reti LSTM è come se imparassero cosa ‘va dopo’ ogni input dopo averlo visto più e più volte.

Per farlo, hanno una mini-rete neurale in ogni cella, come abbiamo visto nel loro schema in alto, e per questo può sembrare molto complicato, ma se si considera il numero generale di ‘neuroni’, in realtà non sono molto più complesse delle CNN, sono semplicemente organizzate con una struttura diversa per permetterle di avere ‘memoria’ di quello che viene prima e quello che viene dopo.

La cosa immediata e più diretta delle LSTM è che, se le facciamo ‘leggere’ un sacco di frasi o testi, imparerà a riconoscere frasi o testi simili e/o a catalogarle, ma la caratteristica si fa interessante quando proviamo a dare in input soltanto un pezzo di frase… la nostra rete, avendo imparato quello che può venire prima e dopo, sara’ in grado facilmente di completare la frase o il testo in maniera completamente nuova!Un esempio diventato famoso di utilizzo di reti LSTM è il generatore di frasi che riesce realisticamente a scrivere su Twitter come farebbe Donald Trump.

Potete esercitarvi, se volete, a creare il vostro TwitterBot personale usando uno dei miei esempi disponibili su github.

cosimoiaia/KERAS-TwitterBot-LSTMUna semplice implementazione di una rete LSTM in Keras per generare Tweets – cosimoiaia/KERAS-TwitterBot-LSTMgithub.

comCome vedete siamo passati facilmente dal riconoscere ‘cose’ a generare ‘cose’, questo perché, come la mente umana, le reti neurali si prestano molto sia all'immaginazione che alla creazione.

Per proseguire sulla strada della generazione dobbiamo semplicemente aggiungere un semplice singolo concetto nelle nostra borsa di conoscenze.

I Lego.

Si, esatto, i Lego.

Mettere insieme modelli di reti neurali, uguali e diversi tra loro, come fossero blocchi lego, per farli interagire e generare contenuti da questo punto in poi è la chiave per sbloccare un potere illimitato.

Ad Esempio:Come fare per creare il piu’ intelligente chatbot del mondo?Semplice, prendiamo due LSTM che imparano da conversazioni, mettiamole insieme facendole rispondere l’una all’altra e così facendo creiamo una rete chiamata Seq2Seq, il cuore di ogni Chatbot intelligente e di cui potete avere una spiegazione più in dettaglio leggendo la mia serie di articoli che partono da qui:https://medium.

com/@cosimo.

iaia/chatbots-chatbots-chatbots-parte-1-d6fd628a52a3e di cui potete sempre trovare il codice sul mio github.

Ma le combinazioni possono essere diverse e pressoché infinite, l’immaginazione è davvero l’unico limite (insieme alla potenza di calcolo).

Una CNN associata ad una LSTM, per fare un altro esempio, è la soluzione usata per generare ‘captions’, le descrizioni di immagini e video; una rete neurale che descrive in linguaggio parlato ciò che vede in una immagine o in un video, una tecnologia con utilizzi davvero straordinari.

cosimoiaia/KERAS-Show-and-TellUna implementazione semplice e basilare di Show-and-Tell in Keras, una rete per generare Captions di immagini – cosimoiaia/KERAS-Show-and-Tellgithub.

comMa possiamo fare di più, possiamo raggiungere livelli over 9000.

Arrivano le GANs.

Le Generative Adversarial Network.

Reti neurali che fanno a botte tra loro come Super-Saiyan per generare contenuti così realistici da ingannare qualsiasi essere umano.

Prendiamo una rete neurale per la visione, una CNN, e, come abbiamo visto prima, se le facciamo vedere un sacco di fiori, sappiamo quindi che imparerà a riconoscere i fiori.

Ora prendiamo un’altra rete neurale per la visione, sempre una CNN, ma non le insegniamo a vedere niente, invece le chiediamo di ‘immaginare’ a caso e di far giudicare quello che ha immaginato all'altra CNN, e, sopratutto, le chiediamo di ‘imparare’ in base a quello che l’altra rete giudica.

Quello che succede è che la nostra nuova rete combinata, imparando e combattendo tra l’immaginazione casuale e il concetto, imparato per esempi, di fiore, creerà fiori realistici mai visti all'uomo.

L’esempio più eclatante di GAN è quello di deepfake, la rete usata per inserire i volti di persone famose in video in cui non sono mai apparsi:Ed è anche la stessa tecnica utilizzata per ringiovanire gli attori negli ultimi film della Marvel.

Qui trovate un esempio pratico:cosimoiaia/Keras-DeepFakeImplementazione basilare di DeepFake, la rete usata per sostituire volti in immagini e video …github.

comMa c’è chi dice che l’IA prima o poi prenderà il sopravvento e rimpiazzerà la razza umana… È davvero possibile e come?La cattiva notizia è che è molto, molto possibile, forse quasi probabile.

La buona è che….

è relativamente facile costruire un’IA del genere, sia per soppiantarci che per proteggerci.

Sfruttando gli esempi che abbiamo visto fin’ora e il nostro meccanismo simil-Lego, possiamo mettere insieme un IA che riesce a vedere l’ambiente in cui si trova con, ad esempio, una CNN e accoppiandola con una RNN/LSTM che associa a ciò che vede una sequenza di azioni, volte ad un risultato o ad una serie di risultati specifici, possiamo costruire quello che si chiama un Agente IA.

Le IA che sono all’interno delle auto a guida automatica, così come la maggior parte delle IA contenute nei dispositivi predisposti ad ‘adattarsi’ ad abitudini umane, come termostati ed elettrodomestici smart possono essere considerati in ultima istanza degli Agenti IA, seppur molto basilari.

Un esempio pratico di questo tipo di Agente può essere costruito usando anche un ambiente virtuale come quello messo a disposizione da OpenAI e del quale trovate una implementazione molto basilare qui:cosimoiaia/OpenAI-SimpleCartPoleUn semplicissimo Agente IA per Gym di OpenAI.

Contribute to cosimoiaia/OpenAI-SimpleCartPole development by creating an…github.

comCome abbiamo visto quindi non c’è limite a quello che si può ottenere con l’IA e il machine learning, tutto ciò che ora rappresenta il limite allo sviluppo e alla diffusione è semplicemente la potenza di calcolo a disposizione.

Con l’avvento di GPU sempre più potenti e la messa a disposizione di Google delle loro TPU per il training, tuttavia, l’IA e il Machine learning sono davvero diventati alla portata di tutti.

Se volete saperne di più e se questo articolo vi è piaciuto, condividetelo, commentate, datemi qualche clap qui su Medium, seguitemi, e date un’occhiata anche agli altri miei articoli che esporranno in maniera più dettagliata e approfondita gli esempi visti qui, ma sopratutto rimboccatevi le maniche in prima persona per contribuire voi stessi a costruire davvero un futuro migliore, dove tutti potranno trarre beneficio dalle nostre Intelligenze Artificiali!.

. More details

Leave a Reply