Tuesday, May 5, 2009

Programming and Neural Networks

My Fundamentals of Programming class has changed in an interesting direction. The former professor has stepped aside and the head of the Biomedical Engineering department has taken over. This is exciting for several reasons: first, he's promised to post all of the lab assignments online so that those who are ahead of the curve can do them all at once and be done with the class. Second, he's one of the professors that Dr. Bickle recommended to me as good contacts for learning more about cognitive science, and he studies reinforcement learning. Third, (and related) he mentioned a project he worked on where they made a program that learned to play tic-tac-toe by playing against humans. It started out making random moves, but eventually learned the game well-enough to play against humans to a draw every time.

I sent him the following questions:
"On the tic-tac-toe game you mentioned, was the learning done with artificial neural networks? Could it be done with just nine input nodes and nine output nodes (mapped to the game board) and some larger number of hidden nodes? I imagine that using such a setup and reinforcement learning (with back-propagation(?)), the program would come to store every possible game state and would play a human player to a draw by recalling the stored "best" move from memory for each situation. Did the program you mentioned take this approach?"

I think that this is within my reach in terms of programming abilities. It would be fun to try to make it work, maybe with my minesweeper game.

If you have MATLAB, you can play the game by downloading the M File here. Even if you don't have MATLAB, you can download it and admire the code in a text editor. I'm trying to figure out how to compile it to make it run as a standalone program, but it seems unlikely that anyone would want to download an EXE from my blog anyway.

No comments: