Algorithm
Basically does Vector Similarity Search
What does the hippocampus do? Here’s an attempt to approximate the algorithm:
Input: Some vector $i_t$
Output: Some vector $o_t$, in the same space as $i_t$
Storage Requirements: A list of Variational Vectors. This can be a top-k list.
Algorithm:
Loop:
- At each timestep, get input
- Record an element-wise Running Average and a Running Variance of the inputs. These can be exponentially-smoothed averages, which can be computed efficiently.
- If the overall running variance drops below some threshold $\tau_r$, move to the retrieval step
- If the overall running variance drops below some threshold $\tau_r$, move to the storage step
- Else either of those, go to sampling
Retrieval:
- Search the stored vector for the closest vector. Distance will be a probability, because they’re variational vectors.
- If the distance falls under some threshold $\tau_c$, go to sampling with this closest vector
Storage:
- Add the running average vector to the storage
- Keep only the top k vectors, sorted by minimum variance