Why can't my implementation of the Actor-Critic algorithm achieve good results in the 2048 game?
Interesting project. First thing I'd do is normalize your state by the maximum cell value. This way you can represent multiple situations at once (eg A grid of all 4s and 8s would look the same as a grid of all 16s and 32s).
Also making the reward = max_cell/2048 might do better as ActorCritic methods seem to do better with rewards within 0-1. 

Another reward setup is giving +1 per timestep. It's simple but it also means that maximizing the time to stay alive is the best, which is what I end up doing most of the time when I play anyway. 

Good luck!