Una volta scrissi un AI di Tetris che suonava Tetris piuttosto bene. L'algoritmo che ho usato (described in this paper) è un processo in due fasi.Determinare quali ingressi pesare in un algoritmo evolutivo
Nel primo passaggio, il programmatore decide di tracciare gli input che sono "interessanti" per il problema. In Tetris potremmo essere interessati a tenere traccia di quante lacune ci sono in fila perché ridurre al minimo le lacune potrebbe aiutare a collocare i pezzi futuri più facilmente. Un'altra potrebbe essere l'altezza media delle colonne, perché potrebbe essere una cattiva idea correre dei rischi se stai per perdere.
Il secondo passaggio consiste nel determinare i pesi associati a ciascun input. Questa è la parte in cui ho usato un algoritmo genetico. Qualsiasi algoritmo di apprendimento verrà utilizzato qui, a condizione che i pesi siano adeguati nel tempo in base ai risultati. L'idea è di lasciare che il computer decida in che modo l'input si riferisce alla soluzione.
Utilizzando questi input e i relativi pesi, è possibile determinare il valore dell'azione. Ad esempio, se posizionando la linea retta completamente nella colonna di destra si eliminano gli spazi vuoti di 4 righe diverse, questa azione potrebbe ottenere un punteggio molto alto se il suo peso è elevato. Allo stesso modo, posizionandolo in cima potrebbe effettivamente causare spazi vuoti e quindi l'azione ottiene un punteggio basso.
Mi sono sempre chiesto se c'è un modo per applicare un algoritmo di apprendimento al primo passaggio, in cui troviamo input potenziali "interessanti". Sembra possibile scrivere un algoritmo in cui il computer impara prima quali input potrebbero essere utili, quindi applica l'apprendimento per pesare tali input. Qualcosa è stato fatto prima? È già in uso in qualsiasi applicazione AI?
+1 Sto cercando di iniziare in questo campo. Ho un paio di programmi dimostrativi per animali domestici ma non ancora nulla di grosso. Interessato a vedere che tipo di risposte si torna su questo. –