• Non ci sono risultati.

Sviluppi futuri

Nel documento Università degli Studi di Padova (pagine 79-83)

Considerazioni finali

6.3 Sviluppi futuri

è fortemente influenzato dall’esperienza pregressa che possiede il progettista di tali meccanismi. Perciò spesso si è proceduto ad implementare soluzioni con un’architettura di prova per determinare se potesse funzionare finché non si è individuato il design più adatto. Di conseguenza si è speso più tempo per eseguire tali prove.

6.3 Sviluppi futuri

I miglioramenti apportati al modulo di intelligenza artificiale rappresentano solo una parte di tutte le potenziali modifiche. Durante i precedenti stage ci si è occupato molto di rendere Geister un gioco disponibile ad un gran numero di utenti. L’evoluzione di Geister è passata da una fase dove era necessario sia sviluppare un’interfaccia grafica che il modulo di intelligenza artificiale, ad una reingegnerizzazione del software fino allo sviluppo di un’architettura client-server e di algoritmi di intelligenza artificiale migliori. Tuttavia, la parte che richiede ancora molto lavoro riguarda il modulo di intelligenza artificiale.

Geister è un gioco dove la capacità di bluffare può rivelarsi essenziale per vincere le partite contro i giocatori più forti. Saper muovere i propri pezzi in modo tale da salvare tutti i fantasmi buoni e mangiare quelli dell’avversario non è l’unico aspetto che l’intelligenza artificiale deve saper soddisfare. Durante i test è emerso che un comportamento troppo prevedibile da parte del computer può fornire un vantaggio notevole al contendente umano. Umanizzare quindi l’intelligenza artificiale è necessa-riamente il primo futuro passo da compiere. Il computer necessita assolutamente di dare un comportamento non banale ai propri pezzi per riequilibrare la situazione a notevole vantaggio dell’essere umano.

L’intelligenza artificiale non deve semplicemente comportarsi come un essere umano, ma deve anche apprendere come imparare. Infatti, non potendo avere un controllo sulle partite disputate e sui giocatori avversari, non è possibile determinare a priori se dal particolare incontro l’intelligenza artificiale debba apprendere qualcosa di nuovo.

Di conseguenza deve poter essere autonoma e determinare in modo indipendente se si necessita di applicare il rinforzo del comportamento assunto. Potrebbe essere quindi necessario paragonare le mosse effettuate dall’avversario con quelle dell’intelligenza artificiale e, se sono troppo distanti dalla previsione significa che l’opponente ha giocato una mossa che è particolarmente dannosa per se stesso e di conseguenza l’intelligenza artificiale non necessita di apprendere se la partita è vinta poiché implica che l’avversario non è alla pari.

Glossario

Artificial general intelligence La artificial general intelligence è l’intelligenza d una (ipotetica) macchina che può eseguire con successo qualsiasi compito che un umano può fare. Ciò è il l’obbiettivo principale della ricerca nel campo dell’intelligenza artificiale e un importate argomento per gli scrittori di science fiction e futuristi. Artificial general intelligence è anche denominata “strong AI”,

“full AI” o come l’abilità di eseguire “generiche azioni intelligenti”. 1

Artificial neural network In machine learning e campi correlativ, le artificial neu-ral networks sono modelli computazionali ispirati al sistema nervoso centrale degli animali che è capace di apprendimento automatico così come di pattern re-cognition. Artificial neural networks sono generalmente presentate come sistemi di “neuroni” interconnessi che possono computare valori da input. 37

Backpropagation In machine learning, l’algoritmo backpropagation apprende quali debbano essere i pesi di una artificial neural network multi-livello costituita da un numero fisso di unità e interconnessioni. Utilizza il vettore di massima discesa per minimizzare il quadrato dell’errore tra i valori di output e quelli target per essi. 37

Branching factor Il branching factor è letteralmente il fattore di diramazione in un albero ossia il numero di nodi figli generati da un singolo nodo. Nel corso della tesi lo si riferisce in particolar modo al game-tree di un board game e in tal caso corrisponde al numero di mosse considerate legali di un tavolo. 5

Bytecode Java bytecode è il set di istruzioni della JVM. Ogni bytecode è composto da uno, o in certi casi due, byte che rappresentano l’istruzione, seguito da zero o più byte per il passaggio di parametri. 9

Dead code In programmazione, il dead code è una sezione nel codice sorgente di un programma che eseguita ma il cui risultato non è utilizzato in nessun’altra istruzione. L’esecuzione di dead code spreca tempo e memoria. 10

Elo Il sistema di punteggio Elo è un metodo per calcolare il livello di abilità relativo dei giocatori nei giochi competitor-versus-competitor come gli scacchi. Prende il nome dal suo creatore Arpad Elo, un professore di fisica americano nato in Ungheria. 4

Euristica In computer science, artificial intelligence, e mathematical optimization, un’euristica è una tecnica disegnata per risolvere problemi più velocemente quan-do i metodi classici sono troppo lenti, o per trovare una soluzione approssimata quando i metodi classici falliscono nel trovare una qualsiasi soluzione esatta.

Ciò viene raggiunto bilanciando l’ottimalità, la completezza, l’accuratezza o precisione per la velocità. 6

Glossario

Hidden units In una artificial neural network rappresentano le unità nascoste il cui input è rappresentato dall’output di altre unità e al contempo il loro output è l’input di altre. Il numero di tali unità non è semplice da determinare come quello delle input units o output units e di conseguenza sono necessari algoritmi più complessi per determinare i pesi di tali unità. 40

Input units In una artificial neural network rappresentano le unità che forniscono l’input da valutare. Tali unità vengono utilizzate dalle hidden units e output units che attribuiranno dei pesi a ciascun input secondo l’algoritmo scelto di conseguenza non ricevono alcun input da altre unità. 40

Java Virtual Machine (JVM) Java Virtual Machine (JVM ) è un calcolatore astratto che può eseguire Java bytecode. È il componente che si occupa dell’ese-cuzione del codice della piattaforma Java. 9

Learning rate η Il learning rate determina in quale misura le informazioni, appena acquisite, sovrascriveranno le vecchie informazioni. Un fattore di 0 implica che l’agente non apprenderà nulla, mentre un fattore di 1 renderebbe l’agente capace di considerare solo le informazioni più recenti. 39

Output units In una artificial neural network rappresentano le unità che forniscono l’output e che quindi stanno nel livello più esterno. Grazie a tali unità, oltre ad ottenere il valore calcolato dalla rete, è possibile indicare quale sia l’erro-re che è stato commesso nella valutazione e per merito di algoritmi quale il backpropagation, si può propagare tale informazione alle unità collegate. 40 Sigmoid units Il branching factor è letteralmente il fattore di diramazione in un

albero ossia il numero di nodi figli generati da un singolo nodo. Nel corso della tesi lo si riferisce in particolar modo al game-tree di un board game e in tal caso corrisponde al numero di mosse considerate legali di un tavolo. 38

Unreachable code In programmazione, l’unreachable code è una parte del codice sorgente che non verrà mai eseguita perché non esiste nessun percorso di flusso di controllo al codice dal resto del programma. 10

Zero-sum game Gli zero-sum game sono giochi dove il guadagno di utilità dei partecipanti è esattamente bilanciato dalla perdita di utilità di altri partecipanti implicando che la somma tra perdita e guadagno sia pari a zero. 4

70

Bibliografia

Nel documento Università degli Studi di Padova (pagine 79-83)

Documenti correlati