Reti neurali Generative (GAN)
Le GAN, fanno parte dei modelli di reti neurali generativi.
Un algoritmo genetico è un esempio di algoritmo di “calcolo evolutivo”, una famiglia di algoritmi di AI ispirati all’evoluzione biologica. Questi metodi sono considerati come relativi all’area meta-heuristic optimization che significa che possono essere utili per trovare soddisfacenti soluzioni per problemi di ottimizzazione (massimizzazione o minimizzazione), ma non forniscono garanzie di trovare la soluzione ottimale globale.
Risolvere un problema utilizzando l’algoritmo genetico richiede di rappresentare la sua soluzione come una stringa di cromosomi (ad esempio una matrice di bit) e richiede anche di avere una funzione di fitness che può essere utilizzata per valutare le soluzioni (!). Un algoritmo genetico funziona mantenendo un pool di soluzioni candidate (di nome generazione). Iterativamente, la generazione si evolve per produrre la generazione successiva che ha soluzioni candidate con valori di fitness più elevati (migliori) rispetto alla generazione precedente. Questo processo viene ripetuto per un numero prestabilito di generazioni o fino a quando viene trovata una soluzione con valore di idoneità dell’obiettivo.
L’immagine sopra mostra un frame di un’animazione in cui un algoritmo genetico è stato utilizzato per apprendere la tecnica di locomozione di un modello 3D bipede dotato di coda, privo di braccia e dotato di collo prominente (diciamo “struzzo-morfo”). Nell’immagine potete vedere come le diverse generazioni migliorano la postura del modello (nell’animazione potrete invece apprezzare anche la modalità di locomozione pressoché “perfetta” nella generazione 999).
L’algoritmo crea una nuova generazione dalla generazione precedente in un modo ispirato alla biologia che consiste in 3 passaggi fondamentali:
- Selezione: viene valutata l’idoneità dei membri della generazione attuale, quindi viene selezionato il sottoinsieme con i migliori valori di fitness in modo da fungere da genitori per la generazione successiva. In breve, la sopravvivenza per il più adatto.
- Crossover: vengono unite coppie di genitori selezionati per generare una nuova soluzione figlio. Il crossover può avvenire in diverse forme, la forma più semplice è il crossover a un punto che divide la rappresentazione di stringa di ciascuna soluzione in due parti nella stessa posizione, quindi concatena la prima parte di una soluzione con la seconda parte della seconda per formare la rappresentazione della soluzione figlio.
- Mutazione: in biologia, la mutazione avviene con bassa probabilità quando un figlio può avere una caratteristica che non è stata ereditata dai genitori. Allo stesso modo, nella fase di mutazione dell’algoritmo genetico la soluzione della prole viene perturbata con una probabilità molto piccola.
Le GAN Generative Adversarial Net(work)s, sono un framework per la stima di modelli generativi attraverso un processo avversario, o antagonista, che prevede l’allenamento simultaneo di un modello Generativo (Generator, o G) e di uno Discriminatorio (Discriminator, D).
Le reti generative avversarie (GAN) sono architetture di reti neurali profonde, composte da due reti, che si contrappongono l’una all’altra (quindi il “contraddittorio”).
I GAN sono stati introdotti in un lavoro di Ian Goodfellow e altri ricercatori dell’Università di Montreal, tra cui Yoshua Bengio, nel 2014.
Riferendosi ai GAN, il direttore di ricerca di Facebook Yann LeCun, ha definito l’allenamento contraddittorio “l’idea più interessante degli ultimi 10 anni in ML “.
Il potenziale dei GAN è enorme, perché possono imparare a imitare qualsiasi distribuzione di dati. Cioè, i GAN possono essere istruiti a creare mondi stranamente simili ai nostri in qualsiasi dominio: immagini, musica, parlato, prosa. Sono robot “artisti” in un certo senso, e la loro produzione è impressionante.
Sopra “opere d’arte” create da algoritmi GAN.
Per capire il funzionamento delle GAN, sarebbe utile conoscere come funzionano gli algoritmi generativi, e per questo, confrontarli con algoritmi discriminatori è utile.
Gli algoritmi discriminanti cercano di classificare i dati di input; cioè, date le caratteristiche di un’istanza di dati, predicono un’etichetta o una categoria a cui appartengono quei dati.
Ad esempio, date tutte le parole in un messaggio di posta elettronica (l’istanza di dati), un algoritmo discriminante potrebbe prevedere se il messaggio è spam oppure se non è spam.
Spam è una delle etichette e l’insieme di parole raccolte dall’e-mail sono le caratteristiche che costituiscono i dati di input.
Quindi gli algoritmi discriminanti mappano le caratteristiche delle etichette. Sono interessati esplicitamente a quella correlazione.
Un modo per intuire come funzionano gli algoritmi generativi è pensare che facciano l’opposto. Anziché predire un’etichetta in base a determinate funzioni, tentano di prevedere le caratteristiche fornite da una determinata etichetta. La domanda a cui un algoritmo generativo cerca di rispondere è: supponendo che questa e-mail sia spam, quanto sono probabili queste caratteristiche?
Mentre i modelli discriminanti si preoccupano della relazione tra y e x, i modelli generativi si preoccupano di “come si ottiene x”.
Un altro modo di pensare al funzionamento dei GAN è distinguere il discriminativo dal generativo in questo modo:
- I modelli discriminatori imparano il confine tra le classi.
- I modelli generativi modellano la distribuzione delle singole classi.
Possiamo esemplificare la logica del GAN e immaginarlo come l’opposizione di un contraffattore e di un poliziotto in un gioco di guardie e ladri, in cui il contraffattore sta imparando a passare le note false e il poliziotto sta imparando a rilevarle. Entrambi sono dinamici; cioè anche il poliziotto è in addestramento, e ciascuna parte impara i metodi dell’altro in un’escalation costante.
Sopra un esempio di spartito musicale generato attraverso algoritmi GAN.
Sopra un altro esempio sull’utilizzo di GAN attraverso una tecnica per la sintesi di immagini umane combinando e sovrapponendo immagini e video esistenti su immagini o video di origine.
Un esempio che sta facendo scalpore in questo periodo è il famoso algoritmo DeppNude basato su architettura GAN
https://github.com/stacklikemind/deepnude_official
Humanativa sta sperimentando le reti neurali GAN per realizzare un sistema per la derivazione di pattern da password compromesse.
Tale soluzione avrà un duplice scopo: da un lato migliorare le attività di “password cracking” (recupero delle password da dati memorizzati o trasmessi da un sistema informatico in forma codificata) eseguite dai Penetration Tester (o “Ethical Hacker”) durante le attività di verifica, necessarie per informare il Cliente sui rischi relativi alle password scelte dai suoi utenti o dipendenti, dall’altro quello di offrire alle aziende una soluzione integrabile con i sistemi di autenticazione per valutare la robustezza delle password correntemente in uso, verificandone la distanza e la derivabilità dalle password attualmente compromesse.