Usare l’unità per aiutare a risolvere l’intelligenza

 | Intelligenza-Artificiale

Una vasta gamma di ambienti

Nel perseguimento dell’intelligenza generale artificiale (AGI), cerchiamo di creare agenti in grado di raggiungere obiettivi in ​​un’ampia gamma di ambienti. Man mano che i nostri agenti padroneggiano gli ambienti che creiamo, dobbiamo creare continuamente nuovi ambienti che sondano le capacità cognitive non ancora testate.

I giochi hanno sempre rappresentato una sfida per la ricerca sull’intelligenza artificiale (AI), i più famosi giochi da tavolo come backgammon, scacchi e Go. Anche videogiochi come Space Invaders, Quake III Arena, Dota 2 e StarCraft II sono diventati più recentemente popolari per la ricerca sull’intelligenza artificiale. I giochi sono ideali perché hanno una chiara misura del successo, consentendo di rivedere empiricamente i progressi e di confrontarli direttamente con gli esseri umani.

Man mano che la ricerca AGI progredisce, cresce anche l’interesse della comunità di ricerca per giochi più complessi. Allo stesso tempo, gli sforzi ingegneristici necessari per trasformare i singoli videogiochi in ambienti di ricerca diventano difficili da gestire. I motori di gioco generici diventano sempre più il modo più scalabile per creare un’ampia gamma di ambienti interattivi.

Motori di gioco generici

Molte ricerche AGI sono già state effettuate su motori di gioco come Progetto Malmöbasato su Minecraft; ViZDoombasato su Doom; E Laboratorio DeepMindbasato su Quake III Arena. È possibile creare script di questi motori per creare rapidamente nuovi ambienti e, poiché molti sono stati scritti per hardware meno recenti, sono in grado di funzionare in modo estremamente veloce su hardware moderno, eliminando l’ambiente come collo di bottiglia delle prestazioni.

Ma a questi motori di gioco mancano alcune funzionalità importanti. DeepMind Lab, ad esempio, è eccellente per apprendere la navigazione, ma scarso per apprendere nozioni di buon senso come il modo in cui gli oggetti si muovono e interagiscono tra loro.

Unità

In DeepMind utilizziamo Unity, un motore di gioco flessibile e ricco di funzionalità. La simulazione fisica realistica di Unity consente agli agenti di sperimentare un ambiente più strettamente legato al mondo reale. La moderna pipeline di rendering fornisce indizi visivi più sottili come luci e ombre realistiche. Gli script Unity sono scritti in C#, che è facile da leggere e, a differenza dei motori su misura, fornisce l’accesso a tutte le funzionalità del motore di gioco. Il supporto multipiattaforma ci consente di gestire ambienti domestici sui nostri laptop o su larga scala nei data center di Google. Infine, man mano che il motore Unity continua ad evolversi, possiamo essere a prova di futuro senza spendere molto del nostro tempo di progettazione.

Unity include un kit di strumenti di machine learning pronto all’uso chiamato Agenti ML che si concentra sulla semplificazione del processo di rendere disponibile un gioco esistente come ambiente di apprendimento. DeepMind si concentra sulla costruzione di un’ampia varietà di ambienti eterogenei gestiti su larga scala e come tali utilizziamo invece dm_env_rpc (vedi sotto).

Catture di schermate degli ambienti Unity creati su DeepMind

Differenze dai giochi convenzionali

I videogiochi tradizionali si riproducono in tempo reale: un secondo sullo schermo equivale a un secondo in una simulazione. Ma per i ricercatori sull’intelligenza artificiale, un gioco è solo un flusso di dati. Spesso i giochi possono essere elaborati molto più rapidamente che in tempo reale e non ci sono problemi se la velocità del gioco varia notevolmente da un momento all’altro.

Inoltre, molti algoritmi di apprendimento per rinforzo si adattano a più istanze. Cioè, un’intelligenza artificiale può giocare a migliaia di giochi contemporaneamente e imparare da essi tutti in una volta.

Per questo motivo ottimizziamo il throughput anziché la latenza. Cioè, aggiorniamo i nostri giochi tutte le volte che possiamo e non ci preoccupiamo di generare tali aggiornamenti a una velocità costante. Eseguiamo più giochi su un singolo computer, con un gioco per core del processore. Gli stalli causati da funzionalità come la raccolta dei rifiuti – un mal di testa comune per i produttori di giochi tradizionali – non sono un problema per noi finché il gioco generalmente gira velocemente.

Containerizzazione e dm_env_rpc

I giochi riproducono immagini, testo e suoni affinché il giocatore possa vederli e ascoltarli e ricevono anche comandi di input da un controller di gioco di qualche tipo. La struttura di questi dati è importante per i ricercatori sull’intelligenza artificiale. Ad esempio, il testo viene normalmente presentato separatamente invece di essere disegnato sullo schermo. Poiché la flessibilità in questo formato dati è così importante, abbiamo creato una nuova libreria open source chiamata dm_env_rpcche funziona come confine tra ambienti e agenti.

Utilizzando dm_env_rpc, possiamo containerizzare i nostri ambienti e rilasciarli pubblicamente. Containerizzazione significa utilizzare tecnologie simili Docker per impacchettare i binari dell’ambiente precompilato. La containerizzazione consente di verificare in modo indipendente la nostra ricerca. È un modo più affidabile e conveniente per riprodurre gli esperimenti rispetto all’open source, che può essere confuso dalle differenze del compilatore o del sistema operativo. Per maggiori dettagli su come containerizziamo un ambiente, consulta il nostro lavoro su dm_memorytasks.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *