Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Determining which inputs to weigh in an evolutionary algorithm

I once wrote a Tetris AI that played Tetris quite well. The algorithm I used (described in this paper) is a two-step process.

In the first step, the programmer decides to track inputs that are "interesting" to the problem. In Tetris we might be interested in tracking how many gaps there are in a row because minimizing gaps could help place future pieces more easily. Another might be the average column height because it may be a bad idea to take risks if you're about to lose.

The second step is determining weights associated with each input. This is the part where I used a genetic algorithm. Any learning algorithm will do here, as long as the weights are adjusted over time based on the results. The idea is to let the computer decide how the input relates to the solution.

Using these inputs and their weights we can determine the value of taking any action. For example, if putting the straight line shape all the way in the right column will eliminate the gaps of 4 different rows, then this action could get a very high score if its weight is high. Likewise, laying it flat on top might actually cause gaps and so that action gets a low score.

I've always wondered if there's a way to apply a learning algorithm to the first step, where we find "interesting" potential inputs. It seems possible to write an algorithm where the computer first learns what inputs might be useful, then applies learning to weigh those inputs. Has anything been done like this before? Is it already being used in any AI applications?

like image 234
Kai Avatar asked Oct 28 '09 18:10

Kai


People also ask

What are the three main steps involved in evolutionary algorithms?

Key Elements of Evolutionary Algorithms. The key elements of an EA are the problem representation, the choice of stochastic variation operators, and the population selection and replacement strategy.

What are the basic variations of the evolutionary algorithm?

The main classes of EA in contemporary usage are (in order of popularity) genetic algorithms (GAs), evolution strategies (ESs), differential evolution (DE) and estimation of distribution algorithms (EDAs).

What is the difference between evolutionary algorithm and genetic algorithm?

Evolutionary algorithms use only mutation as the reproduction strategy while genetic algorithms use both crossover and mutation for reproduction. Its as simple as that and is found in most of the evolutionary systems reported in the literature.


1 Answers

In neural networks, you can select 'interesting' potential inputs by finding the ones that have the strongest correlation, positive or negative, with the classifications you're training for. I imagine you can do similarly in other contexts.

like image 148
chaos Avatar answered Jan 02 '23 13:01

chaos