Costruzione di architetture in grado di gestire i dati del mondo

'Costruzione di architetture per gestire dati globali'

Perceiver e Perceiver IO funzionano come strumenti multiuso per l’IA

La maggior parte delle architetture utilizzate dai sistemi di intelligenza artificiale oggi sono specializzate. Una rete residua 2D può essere una buona scelta per elaborare immagini, ma al massimo è una soluzione approssimativa per altri tipi di dati – come i segnali Lidar utilizzati nelle auto a guida autonoma o le torsioni utilizzate nella robotica. Inoltre, le architetture standard sono spesso progettate con un solo compito in mente, spingendo gli ingegneri a piegarsi all’indietro per ridisegnare, distorto o altrimenti modificare i loro input e output nella speranza che un’architettura standard possa imparare a gestire correttamente il loro problema. Affrontare più tipi di dati, come i suoni e le immagini che compongono i video, è ancora più complicato e di solito richiede sistemi complessi e sintonizzati manualmente costruiti da molte parti diverse, anche per compiti semplici. Come parte della missione di DeepMind di risolvere l’intelligenza per avanzare nella scienza e nell’umanità, vogliamo costruire sistemi in grado di risolvere problemi che utilizzano molti tipi di input e output, quindi abbiamo iniziato ad esplorare un’architettura più generale e versatile che può gestire tutti i tipi di dati.

Figura 1. L'architettura Perceiver IO mappa gli array di input in array di output mediante un piccolo array latente, che consente di scalare in modo armonioso anche per input e output molto grandi. Perceiver IO utilizza un meccanismo di attenzione globale che generalizza su molti diversi tipi di dati.

In un articolo presentato a ICML 2021 (la Conferenza internazionale sul machine learning) e pubblicato come preprint su arXiv, abbiamo presentato il Perceiver, un’architettura generale che può elaborare dati, inclusi immagini, nuvole di punti, audio, video e le loro combinazioni. Sebbene il Perceiver potesse gestire molte varietà di dati di input, era limitato a compiti con output semplici, come la classificazione. Un nuovo preprint su arXiv descrive il Perceiver IO, una versione più generale dell’architettura Perceiver. Perceiver IO può produrre una vasta gamma di output da molti input diversi, rendendolo applicabile a domini del mondo reale come il linguaggio, la visione e la comprensione multimodale, nonché a giochi impegnativi come StarCraft II. Per aiutare la comunità di ricerca e di apprendimento automatico in generale, abbiamo ora reso disponibile il codice sorgente.

Figura 2. Perceiver IO elabora il linguaggio scegliendo prima a quale caratteri prestare attenzione. Il modello impara a utilizzare diverse strategie: alcune parti della rete prestano attenzione a luoghi specifici nell'input, mentre altre prestano attenzione a caratteri specifici come i segni di punteggiatura.

I Perceiver si basano sul Transformer, un’architettura che utilizza un’operazione chiamata “attenzione” per mappare gli input in output. Confrontando tutti gli elementi dell’input, i Transformer elaborano gli input in base alle loro relazioni reciproche e al compito. L’attenzione è semplice e ampiamente applicabile, ma i Transformer utilizzano l’attenzione in un modo che può diventare rapidamente costoso all’aumentare del numero di input. Ciò significa che i Transformer funzionano bene per input con al massimo alcuni migliaia di elementi, ma forme comuni di dati come immagini, video e libri possono facilmente contenere milioni di elementi. Con il Perceiver originale, abbiamo risolto un problema importante per un’architettura generalista: scalare l’operazione di attenzione del Transformer a input molto grandi senza introdurre ipotesi specifiche del dominio. Il Perceiver fa ciò utilizzando l’attenzione per codificare prima gli input in un piccolo array latente. Questo array latente può quindi essere elaborato ulteriormente a un costo indipendente dalle dimensioni dell’input, consentendo alle esigenze di memoria e di calcolo del Perceiver di crescere in modo armonioso all’aumentare delle dimensioni dell’input, anche per modelli particolarmente complessi.

Figura 3. Perceiver IO produce risultati all’avanguardia nella sfida dell’estimazione del flusso ottico, o tracciamento del movimento di tutti i pixel in un’immagine. Il colore di ogni pixel mostra la direzione e la velocità del movimento stimato da Perceiver IO, come indicato nella legenda sopra.

Questa “crescita armoniosa” consente al Perceiver di raggiungere un livello di generalità senza precedenti: è competitivo con modelli specifici del dominio su benchmark basati su immagini, nuvole di punti 3D e audio e immagini insieme. Tuttavia, poiché il Perceiver originale produceva solo un output per input, non era così versatile come necessario per i ricercatori. Perceiver IO risolve questo problema utilizzando l’attenzione non solo per codificare in un array latente, ma anche per decodificarlo, il che conferisce alla rete una grande flessibilità. Perceiver IO ora può scalare a input e output grandi e diversificati e può persino gestire contemporaneamente molteplici compiti o tipi di dati. Ciò apre la porta a tutte le applicazioni, come la comprensione del significato di un testo da ciascuno dei suoi caratteri, il tracciamento del movimento di tutti i punti in un’immagine, l’elaborazione del suono, delle immagini e delle etichette che compongono un video e persino il gioco, il tutto utilizzando un’unica architettura più semplice rispetto alle alternative.

Perceiver IO Originale Perceiver IO Originale Perceiver IO Figura 4. Perceiver IO può imparare a comprendere molti tipi di dati contemporaneamente. Qui mostriamo come il modello ricostruisce sia le immagini che l’audio dei video in ingresso.

Nei nostri esperimenti, abbiamo visto che Perceiver IO funziona in una vasta gamma di domini di benchmark, come il linguaggio, la visione, i dati multimodali e i giochi, fornendo un modo pronto all’uso per gestire molti tipi di dati. Speriamo che il nostro ultimo preprint e il codice disponibile su Github aiutino i ricercatori e gli operatori a risolvere problemi senza dover investire tempo e sforzi per costruire soluzioni personalizzate utilizzando sistemi specializzati. Continuando a imparare dall’esplorazione di nuovi tipi di dati, non vediamo l’ora di migliorare ulteriormente questa architettura ad uso generale e renderla più veloce e semplice per risolvere problemi in tutta la scienza e l’apprendimento automatico.