I'm training a Deep Q-learning model on a snake game and I would like some ideas on how to improve the model and maybe also efficiency of training it.
The game is currently set to a 12x12 grid, a blue snake with a green head and a red apple. The network is fed with 3x12x12 input parameters (RGB, width, height) and gets a positive reward when an apple is eaten and a negative reward when it collides with something.
It does learn, but plateaus around 12-13 apples per round (on average) after 3 million steps:
What I have tried: Giving a partly reward on the steps before a "real" reward. For example:
Step Action Reward
N Go straight 100
N-1 Go straight 50
N-2 Go straight 33
N-3 Go left 25
That was just an idea but it does not seem to work as I hoped.
What else can I try? What I don't want to do is tinker with the game, I just want the visual input and nothing else.