Where to start with teaching an AI to play SNES games? - machine-learning

I have had an infatuation with a certain concept regarding machine learning that Sethbling proved with his Mar.io program: https://youtu.be/qv6UVOQ0F44
I have a decent amount of logical programming experience in a number of different languages and have read around a lot about machine learning and neural networking.
What I'm looking for is a good set of references that could teach me how to apply neural networks in code, rather than just as a mathematical teaching like most of what I have seen thus far.
Thanks in advance!

Sentdex (https://www.youtube.com/user/sentdex) has incredible tutorials on Youtube and walks through teaching a model to play GTA.
It may seem daunting at first, but the rewards of overcoming such a challenging task will be worth it.

You might want to check out the JavaScript library Neataptic to check out how they implemented neural networks in Agar.IO for example.
You might also want to check out the NeuroEvolution of Augmenting Topologies paper for a basic understanding of neuro-evolution.

Related

How do I make script to teach machine how to play game like this? (Youtube)

https://www.youtube.com/channel/UCXe-BTXAnQ9VaQQZnlC608A
This guy made machine learning script and teach machine
how to play Super Mario and complete each level.
There's FAQ document in the description of every his video
that he's using LUA to make this script but I don't even know where
to start and can't find any tutorial on youtube how to make something like this
My goal is make machine learning script for other games and see
the machine learning how to play and complete various levels
Could you please guide me where I can start and what I should learn to make script like this?
and I prefer programming language easier to learn if there is other option.
Consider the following:
Are you a beginner programmer? If so, diving into machine learning will prove to be frustrating. You need a solid foundation first in programming principles.
The next level would be to use a machine learning library. The core ML algorithms are then already written and optimized and you just need to learn how to integrate them into your own programs. Don't be fooled though - to do this well still requires a solid understanding of ML principles. There are existing libraries for Lua and Python. That is a good place to start.
I would consider looking at Andrew Ng's introductory material (book and videos) on ML. Warning! He knows what he is talking about and does offer up quite a bit of advanced material as well. Don't start with that.
There are excellent, advanced books on the subject that explain the mathematical principles behind the apparent magic of ML. If you already did all of the above and are still sticking with it, then this would be the way to go next. You could work on your own implementation of ML and apply that to any domain.
I'm gonna guess that you are at the first bullet point still. Be patient. Learn to program well. Get exposure to ML ideas. Plan on that video game ML application some years from now.

Knowledge from Past Experiences in Q-Learning

I had been going through numerous articles of Reinforcement Learning - more specifically Q-Learning. The area where I'm stuck is how does it learns from past experiences? I came across a concept called experience-replay where it actually learns from past experiences. But then the article would include neural nets. I'm a bit confused on this. Now, do we really need some neural nets to implement this experience-replay?
Some reinforcement learning algorithms, such as Q-learning, learn from experiences (understanting a experience as a tuple <state, action, next_state, reward>). If the experiences are collected previously or not, doesn't matter too much, in the sense that the learning principle is the same. So, you can collect the experiences and use them more than once, i.e., experience replay.
Experience replay can have several benefits such as speed up the learning process. Another benefit, which plays and important role when combining RL + neural networks, is that it stabilizes the learning process. Basically, during the learning process, when you train the network to learn some Q-values, it can "forget" the Q-values learnt in the past. In this case, if you store past experiencies and uses a set of them, you are forcing the network to learn all (the past and the new) Q-values.
This Stackoverflow response maybe it is useful to better understand why the neural network can forget the previous Q-values.

Machine Learning, GA + BP or GA with huge NN?

Sorry for the poor title,
I'm currently studying ML and I want to focus on a problem using the toolset I have acquired, which exludes reinforcement learning.
I want to create a NN that takes a simple 2D game level ( think of mario in the simplest case, simple fitness function, simple controls and easy feature selection) and outputs key sequence.
Since we don't know the correct key sequence(ks), I see 2 options,
1-) I find that out using genetic algorithm and use backprop or similar algorithms to associate levels with key sequences and predict a KS for a new level
2-) I build a huge NN and use genetic algorithm to solve whole internal structure of it.
What are the pros and cons of each approach? Why should I implement one instead of the other? Please remember that I'm fairly new to the topic and want to solve this problem with what I've learned until now, basics really.
What you are suggesting is in essence reinforcement learning, e.g. trying out "semi random" combinations and then using rewards to learn the network. The first approach is classical reinforcement learning and the other one is reinforcement learning using a neural network.
If you want to solve the topic like this there are plenty of tutorials and github repos available to help you solve this problem, with a simple google search.

Machine Learning for repetitive form filling

I'm trying to use machine learning algorithms for repetitive form filling.
Here is a picture to illustrate that a little bit.
If you enter values in field A and B i would like to have a suggestion for field C.
For this case i really would like to implement a Machine learning algorithm so that the system stays really flexible and only makes suggestions by the knowledge that was build.
I've already started reading programming collective intelligence and Artificial intelligence a modern approach. I also started to play around with Weka a little bit and found a pretty good microsoft research paper on my problem too. But my main problem is that I can't really identify what algorithm group I should use. I'm primarily looking at Descision trees like C 4.5 but I'm not sure if this is the right way. Could you please give me any suggestions on my problem?
It looks like you're starting out... good luck.
Go for a Huffman tree / Genetic algorithm randomizer... for a quick solution.
Go for implementing everything you can think of, then using an external efficacy classifier to figure out what to use for the next iteration, and randomize something along the way.... for the more complex solution.
Decision trees are incredibly inflexible when it comes to this type of stuff. Try fuzzy logic algorithms.

Online machine learning for obstacle crossing or bypassing

I want to program a robot which will sense obstacles and learn whether to cross over them or bypass around them.
Since my project, must be realized in week and a half period, I must use an online learning algorithm (GA or such would take a lot time to test because robot needs to try to cross over the obstacle in order to determine is it possible to cross).
I'm really new to online learning so I don't really know which online learning algorithm to use.
It would be a great help if someone could recommend me a few algorithms that would be the best for my problem and some link with examples wouldn't hurt.
Thanks!
I think you could start with A* (A-Star)
It's simple and robust, and widely used.
There are some nice tutorials on the web like this http://www.raywenderlich.com/4946/introduction-to-a-pathfinding
Online algorithm is just the one that can collect new data and update a model incrementally without re-training with full dataset (i.e. it may be used in online service that works all the time). What you are probably looking for is reinforcement learning.
RL itself is not a method, but rather general approach to the problem. Many concrete methods may be used with it. Neural networks have been proved to do well in this field (useful course). See, for example, this paper.
However, to create real robot being able to bypass obstacles you will need much then just knowing about neural networks. You will need to set up sensors carefully, preprocess data from them, work out your model and collect a dataset. Not sure it's possible to even learn it all in a week and a half.

Resources