20Q.net

20Q.net è un gioco, ma è soprattutto un esperimento con un'Intelligenza Artificiale.
Pensato un 'qualcosa', 20Q.net -Twenty Questions-
proverà ad indovinare l'oggetto che avete in mente con non più di 20 domande!
20Q.net è un gioco contro un'Intelligenza Artificiale che progredisce in scala,
nel senso che man mano che si gioca, vi si inseriscono nuove informazioni che vanno a
perfezionarlo. Tutto quel che 20Q.net conosce, e tutte le domande che pone, si può
dire che provengano dai giochi effettuati in dieci anni di sperimentazione.
Il programma è molto semplice ma il relativo comportamento è complesso.
20Q.net prevede un insieme di programmi scritti in C, e si compone di tre elementi
integrati: il motore del gioco, l'applicazione per immettere gli input
dall'utente nel database che raccoglie le informazioni,
e dall'interfaccia internet CGI/HTTP.
Fondamentalmente, il database manager è una matrice in cui gli oggetti sono indicizzati
e posti in relazione a delle domande. Ogni elemento nella matrice è la risposta,
positiva o negativa, relativa ad una domanda riguardante l'oggetto corrispondente.
Inoltre, il peso della risposta è indicizzato e corrisponde ad un determinato
oggetto. Le risposte sconosciute, infine, hanno peso zero.
Ogni volta che un giocatore risponde ad una domanda, questa contiene tre informazioni:
- lo stato corrente nel gioco
- l'indice della domanda attuale
- la risposta del giocatore
Nel generare la pagina seguente, il gioco determina quali oggetti siano più probabili,
confrontando le risposte ottenute con il database manager. Se un elemento nel
database è sconosciuto, l'algoritmo ignora quella determinata risposta per quell'oggetto.
Il programma è in grado di determinare il numero di sì e di no per ogni domanda relativa
ad un determinato oggetto; incluse le risposte sconosciute. Il programma sceglie infine la
domanda che ha il miglior rapporto di si e di no come risposte ottenute precedentemente
(una divergenza di 50/50 sarebbe ideale).
Il programma inoltre esamina gli oggetti che sono simili all'oggetto in questione e
prospetta le sue conclusioni.
Il gioco mette a confronto le probabilità riguardanti gli oggetti e la domanda, e
decide se tentare di indovinare l'oggetto o porre un altro quesito. Queste informazioni
sono usate poi per generare una nuova pagina, con i nuovi collegamenti, che riflettono
il nuovo stato del gioco.
Alla fine del gioco, quando il programma riconosce l'oggetto aggiorna
il database.
Se il database non contiene ancora una certa risposta, viene stabilito
il valore per quella risposta , e se, invece, la risposta è già
presente, il peso per quella risposta è soggetta ad un incremento.
Se, d'altra parte, la risposta contraddice una relazione già esistente,
nel database il peso viene diviso per due.
Effettuando una gran quantità di calcoli semplici, il gioco è in grado di
tollerare sia le conoscenze mancanti, sia gli input contraddittori.
Questa gioco in un Intelligenza Artificiale è il lavoro dello sviluppatore
Robin Burgener di Ottawa. Burgener ha iniziato a sviluppare il software nel 1988
per soddisfare la sua curiosità riguardante i sistemi di autoapprendimento
progressivo. 'La logica del programma sembra ragionevolmente semplice. Si parte con
la costruzione di un albero. Se il programma fallisce, pone una domanda per
differenziare l'ultimo oggetto dal nuovo oggetto. Ma, se un giocatore risponde
ad una domanda da una differente prospettiva, il gioco sarà destinato a fallire;
l'input del giocatore è conforme alla natura umana e non può essere 100 per cento
coerente.' (...per fortuna!) 'In parole povere, il programma determina gli oggetti
più probabili ed allora pone le
domande che potrebbero eliminare la maggior parte di oggetti. Per limitare la confusione
le risposte nel database hanno un peso riguardante le probabilità di successo, e in
genere sono risposte sconosciute.'
Le persone che giocando ogni giorno, aggiungono dozzine di nuovi oggetti e domande
al programma. Il programma attualmente vince il 40 per cento del tempo. Giocando, i
giocatori insegnano al programma, il quale va guadagnando più conoscenza.
Alla base del sistema vi è dunque una grande, e sempre crescente, quantità di dati, ma,
da un'altra prospettiva, ogni domanda può essere considerata un input di una rete
neurale, mentre gli oggetti rappresentano gli output della rete.