Since I live in Colorado and wasn't able to make it to the last hackathon, I 
held my own last night and came up with this little example.  It is the classic 
text based skiing game where you have to move the skier left or right to keep 
him on the ski slope without hitting the trees.

I have been very intrigued by the idea that motor control could be just another 
form of prediction.  So I thought that I could train a model on a perfect run 
of the game and then use the predictions that it generates to move the skier in 
a live game.

It starts by feeding the model 1000 lines of perfect skier positions in a 
ramdomly generated ski slope.  A slope line consists of 80 characters with two 
trees as boundaries and the skier (hopefully) in the middle.

              |              H               |                              
            Tree           Skier           Tree

The slope line is encoded as three integer values to pass into the model: the 
left tree position, the skier position, and the right tree position.

Given the current ski slope line, we ask the model to predict the next skier 
position.  If the position is greater than the current value, the skier is 
moved to the right one space.  If the position is less than the current value, 
the skier is moved to the left one space.  Otherwise, the skier position is 
left alone.

You can download the code and play for yourself at:
https://github.com/keithcom/nta_ski

Building and running this test app has raised a few more questions for me.

1. Is there a string encoder yet?  Originally, I wanted to just send the model 
the full ski slope line, but converted it to the int array to pass in scaler 
values.
2. The trained model seems to work for a little bit, but then stops as it keeps 
learning during the live run.  I would like the model to "see" the results of 
it's prediction (i.e. how it moved the skier to complete the feedback loop), 
but I also want to have some kind of error value so it knows that it's 
prediction was not optimal.  Does a mechanism like this exist in the current 
code?
3. Most of the model settings are just copied directly from the hotgym example. 
 Should I change some of the values to work better in this scenario? 
4. Any other comments or suggestions to improve the demonstration?

Thanks,

Matt


_______________________________________________
nupic mailing list
[email protected]
http://lists.numenta.org/mailman/listinfo/nupic_lists.numenta.org

Reply via email to