Cosa sono le GAN (generative adversarial networks)?

Le GAN (Generative adversarial networks) sono un tipo di architettura di deep learning che utilizza due reti neurali in competizione per generare nuovi dati. Queste due reti, il generatore e il discriminatore, si addestrano l'una contro l'altra, contribuendo a produrre un output più accurato. Le GAN possono essere utili in vari campi, tra cui la visione artificiale, la robotica, la generazione di immagini, la sintesi video e l'elaborazione del linguaggio naturale.

Come funzionano le GAN?

Il modo migliore per capire come funzionano le GAN è attraverso un'analogia: una competizione tra un falsario d'arte (il generatore) e un critico d'arte (il discriminatore).

  • Il falsario (generatore): l'obiettivo del falsario è creare dipinti indistinguibili dai veri capolavori. Inizialmente, i suoi tentativi sono grossolani e ovviamente falsi. Inizia creando un'immagine casuale (come se si gettasse della vernice su una tela).
  • Il critico (discriminatore): il compito del critico è distinguere i dipinti reali dai falsi. All'inizio è facile. Il critico esamina sia l'opera d'arte originale che il lavoro del falsario e fornisce un feedback, dicendo essenzialmente al falsario: "Questo è un falso".
  • Il ciclo di feedback: il falsario usa questo feedback per migliorare. Apprende cosa rende un vero dipinto realistico e adatta la sua tecnica. Anche il critico migliora, imparando a individuare imperfezioni più sottili man mano che i falsi migliorano.

Questo "gioco" avversario continua, con entrambe le reti che diventano progressivamente più intelligenti. Alla fine, il falsario diventa così abile che il critico non riesce più a distinguere in modo affidabile l'originale dal falso. A questo punto, la GAN è addestrata e può generare nuovi dati altamente realistici.

CNN e GAN a confronto

Sia le convolutional neural networks (CNN) che le generative adversarial networks (GAN) sono architetture di deep learning, ma hanno punti di forza e applicazioni distinti. Le CNN vengono spesso utilizzate per attività di classificazione delle immagini e rilevamento degli oggetti, mentre le GAN sono generalmente progettate per generare nuove istanze di dati.

Funzionalità

CNN

GAN

Utilizzo dati

Set di dati per lo più etichettati

Set di dati etichettati o non etichettati

Output

Classificazione, estrazione di caratteristiche

Istanze di dati nuove e diversificate

Tipo di modello

I modelli

Generativa

Attività principali

Classificazione delle immagini, riconoscimento degli oggetti

Generazione di immagini, aumento dei dati, creazione di dati sintetici

Funzionalità

CNN

GAN

Utilizzo dati

Set di dati per lo più etichettati

Set di dati etichettati o non etichettati

Output

Classificazione, estrazione di caratteristiche

Istanze di dati nuove e diversificate

Tipo di modello

I modelli

Generativa

Attività principali

Classificazione delle immagini, riconoscimento degli oggetti

Generazione di immagini, aumento dei dati, creazione di dati sintetici

È importante notare che le CNN vengono spesso utilizzate all'interno delle architetture GAN, più comunemente come rete discriminante. Il compito del discriminatore di distinguere le immagini reali da quelle false è un problema di classificazione delle immagini, per il quale le CNN, con le loro forti capacità di estrazione delle caratteristiche, sono in genere adatte.

Tipi comuni di GAN

Sebbene tutte le GAN condividano la struttura generatore-discriminatore, sono state sviluppate diverse varianti per risolvere problemi specifici. Ecco alcuni dei tipi più importanti:

  • GAN condizionale (cGAN): cosa succede se vuoi controllare ciò che crea la GAN? Una cGAN consente di aggiungere una condizione. Invece di generare "un volto a caso", puoi chiedere di generare "una donna sorridente con i capelli biondi". Questo è fondamentale per le applicazioni da testo a immagine.
  • CycleGAN: cosa succede se vuoi tradurre un'immagine da uno stile all'altro senza avere coppie di immagini perfettamente corrispondenti per l'addestramento (ad esempio, trasformare la foto di un cavallo in una zebra)? CycleGAN è progettato per questa "traduzione da immagine a immagine non accoppiata", che lo ha reso famoso per il trasferimento di stile e la trasfigurazione di oggetti.
  • StyleGAN: questo tipo di GAN si concentra sulla creazione di immagini realistiche di altissima qualità (soprattutto volti) e offre all'utente un controllo granulare sullo "stile" dell'immagine, come età, capelli o espressione.
  • GAN a super risoluzione (SRGAN): questa GAN è specializzata nel prendere un'immagine sfocata a bassa risoluzione e nell'eseguire l'upscaling a una versione nitida ad alta risoluzione, aggiungendo dettagli realistici.

Sebbene il concetto fondamentale di utilizzare due reti contraddittorie rimanga coerente tra le varie versioni della generative adversarial network, i ricercatori hanno esplorato una varietà di modifiche architetturali e di addestramento per affrontare le limitazioni e migliorare le prestazioni per applicazioni specifiche.

A cosa servono le GAN?

Le GAN hanno aperto nuove possibilità in molti settori. Le loro applicazioni rientrano generalmente in queste aree chiave:

Creazione e manipolazione dei contenuti

Questa è l'applicazione più famosa delle GAN. Include la generazione di immagini realistiche di persone, luoghi e oggetti, la creazione di arte digitale e musica e l'abilitazione di potenti strumenti di editing delle immagini come il trasferimento di stile (che fa sembrare una foto un dipinto), la super-risoluzione (che rende più nitide le immagini sfocate) e la sintesi da testo a immagine.

Aumento dei dati e privacy

I dati di alta qualità sono il carburante del machine learning, ma possono essere rari, costosi o privati. Le GAN aiutano a risolvere questo problema generando dati sintetici. In ambito sanitario, le GAN possono creare scansioni mediche realistiche ma anonime per addestrare modelli diagnostici senza violare la privacy dei pazienti. Nel settore finanziario, possono generare dati di transazione sintetici per addestrare sistemi di rilevamento delle frodi migliori. Ciò aiuta a superare la scarsità di dati e a bilanciare i set di dati.

Simulazione e previsione

Le GAN possono apprendere i pattern in sistemi complessi per creare simulazioni realistiche. L'utilizzo permette di generare scenari diversi per l'addestramento di automobili a guida automatica, per prevedere i frame successivi in un video o persino per scoprire potenziali strutture molecolari nella scoperta di farmaci.

Rilevamento di anomalie e minacce

Addestrando una GAN su dati "normali", diventa molto brava a individuare qualsiasi cosa non si adatti al modello. Viene utilizzata per rilevare attività finanziarie fraudolente, identificare intrusioni di rete nella cybersicurezza e trovare difetti nella produzione.

Creazione con GAN su Google Cloud

Lo sviluppo e il deployment delle GAN richiedono una potenza di calcolo significativa e una piattaforma MLOps solida. Google Cloud offre gli strumenti per supportare l'intero workflow:

  • Per la creazione e la gestione dei modelli: Vertex AI è una piattaforma di machine learning gestita che semplifica il processo di creazione, addestramento e deployment di modelli complessi come le GAN. Fornisce un ambiente unificato per la gestione dei dati e degli esperimenti.
  • Per un addestramento ad alte prestazioni: l'addestramento delle GAN richiede un'elevata intensità di calcolo. I Cloud TPU sono acceleratori hardware personalizzati di Google progettati per accelerare notevolmente l'addestramento del deep learning, consentendoti di eseguire l'iterazione su architetture GAN complesse molto più velocemente.
  • Per un deployment scalabile: una volta addestrato il modello, Google Kubernetes Engine (GKE) fornisce un ambiente potente e scalabile per il deployment di GAN containerizzate come parte di un'applicazione più grande.

Fai il prossimo passo

Inizia a creare su Google Cloud con 300 $ di crediti gratuiti e oltre 20 prodotti Always Free.

Google Cloud