Any memory solution must have the following properties:

  1. Memory must be learned. I.e. agent has to be able to say “I should have written something different to memory”
  2. Agent must be able to efficiently read memory when calculating its actions. Ideally, all memory will be accessible in a small number of steps, and a significant amount of memory should be accessible in a single step.