Multi-Task Learning in Atari Video Games with Emergent Tangled Program Graphs
dl.acm.org
dl.acm.org
> Finally, while generally matching the skill level of controllers from neuro-evolution/deep learning, the genetic programming solutions evolved here are several orders of magnitude simpler, resulting in real-time operation at a fraction of the cost.
> Moreover, TPG solutions are particularly elegant, thus supporting real-time operation without specialized hardware
This is the key takeaway and yet another reminder to not make deep learning the hammer for all your fuzzy problems.
From figure 3 in the paper it seems like it outperforms DQN on all games but one. So, it has better end results as well.
Edit: There are other results linked in this thread that are better than the 2015 DQN results that the paper refers to.
EDIT: I have found GPs to be relatively slow-to-very-slow. But very likely that is because of the lack of interest and development compared to NNs
I've dabbled in GP and I really like it but those ASTs can get huge if they're not carefully pruned and might not add to the solution at all.
I don't think it's as simple as putting the length of the AST in the goal function (but it's something interesting to try).
Depending on compile speed vs running speed you might be better off interpreting your ASTs
I don't know what that would do to the learning process -- but at least it would be useful for end results.
I'm generally pretty suspicious of generic algorithms; why take a random walk when you can March along the gradient towards a solution?
It might be interesting to try using GA for neural architecture, though, and gradient descent to train the network... (Though it sounds expensive.)
Because your problem has no smooth/continuous gradient
Because your problem has a giant search space
Because your problem can do with a "close enough" solution
Try gradient descending a symbolic regression and we'll talk
There are two different speeds one could measure in regards to GP's.
The first is the speed at which one evolves solutions. This can, in fact, be frightfully slow and eat up all the hardware you can throw at it (depending on how large your populations are, how fast your fitness function is, etc).
The second is the speed of the evolved solution. This may be slow, but doesn't have to be. In fact, the speed of the solution could be part of what's being evolved. So you could explicitly evolve something fast, if you wanted (or it might just wind up being fast by chance).
One could also take an evolved solution, analyze it, and then optimize it or rewrite it using the insights you got from your analysis. That could be even faster.
[1] https://www.nature.com/nature/journal/v518/n7540/abs/nature1...
In fact, I'm not sure how much more compute efficient than something like A3C it would be. That can produce 4x the score of DQN in a comparable number of hours (and on a CPU).
[0] read as: I have only seen papers with 1 agent per game for A3C
Unfortunately, it requires Flash.
I'll also shamelessly hock here my GP framework for Python, in case you're interested in experimenting: https://github.com/hchasestevens/monkeys
Dijkstra and A* Pathfinding, Finite State Machines, Decision Trees, Hierarchical Task Networks (SHOP, etc)
Keep in mind that game ai algorithms are all about decision taking, there's little "intelligence" involved, unlike the broader aim of "general" ai.
His basic strategy is to have a scalable problem decomposition strategy.
So programs that process pixels and the teaming of those programs are grouped together. The groupings (teams) themselves are co-evolved with the programs, simultaneously.
This enables niching and specialization behavior.
This builds on earlier work on 'symbiotic bid-based genetic programming' from other people at Dalhousie, the same university Kelly is at.
The innovation of this paper is that teams can reference other teams.
This allows for the creation of hierarchical teams. (There are rules to prevent cycles and other edge cases.)
Everyone commenting here is probably going to just look at numerical game score and ignore the fact that the runtime performance of Kelly's tangled program graphs. They are 1000 times smaller than a deep neural network. That matters for things like running on mobile/embedded devices.
Ding ding ding. This is where the money is at, good yet cheap sensors that sense human level actions are needed for IoT to be impactful.
I am wondering, whether a similar approach is possible with current DL models and will it have any performance improvements over what is existing or whether it will be computationally even more expensive.