Explore Courses Blog Tutorials Interview Questions
0 votes
in AI and Deep Learning by (50.2k points)

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 apply to learn to weigh those inputs. Has anything been done like this before? Is it already being used in any AI applications?

1 Answer

0 votes
by (108k points)

In neural network, you can select 'exciting' potential inputs by determining the ones that have the most powerful correlation, positive or negative, with the classifications you're training for. I imagine you can do similarly in other contexts. Here powerful correlation means: Say you're training a neural net to classify patterns as "the letter A" or "not the letter A". You have a bunch of training cases where you have some data and you know whether or not it's an A. You can slice and dice that data any number of ways, each one of which is a potential input. The best potential inputs are the ones that show a strong numeric correlation with the A-or-not-A state. If a potential input doesn't vary, it's useless. If it varies randomly, it's useless. If it varies in coordination with the A-or-not-Aness of the pattern, it's gold.

Browse Categories