MultiScaleSSPs studies adaptive spatial resolution in Spatial Semantic Pointer (SSP) representations: instead of encoding an entire environment at one fixed length scale, can a VSA-based spatial memory learn to spend more of its representational capacity on regions/objects that need fine detail, and less on ones that don't -- and how much of a trained memory can be stripped away post-hoc while still decoding correctly?
An SSP encodes a continuous location as a high-dimensional vector whose similarity to other locations falls off with distance at a rate set by a single length scale. One length scale for a whole map is a compromise: fine enough to resolve small objects wastes precision on large, coarse regions; coarse enough for large regions can't tell nearby small objects apart. MultiScaleSSPs builds synthetic multi-room/multi-object environments and asks whether a per-region or per-object gain over the SSP's Fourier scale bands -- learned by decoding through a bundled VSA memory -- can beat a single shared scale, and which parts of the resulting representation (which Fourier components, which spatial sample points) are actually load-bearing for that decode, via post-hoc pruning.
This project builds on the Semantic Pointer (SP) / Spatial Semantic Pointer
(SSP) formalism (see Acknowledgements) and the vsagym Vector Symbolic
Architecture library. The core representation choices explored here:
- Ground-truth environments (
src/multiscalessps/envs/):RoomEnv(flat region/object labels) andBuildingEnv(rooms containing furniture, so a point's label is simultaneously coarse "which room" and fine "which piece of furniture").scripts/indoor_env.pyis the main testbed -- a six-room layout with ModelNet10 furniture footprints, each room themed to need a different scale profile (large sparse items vs. dense clutter vs. structured rows). - Scale modulation: each object/room is encoded with a learned
non-negative gain per hexagonal scale block of the SSP spectrum, fit by
decoding back through the bundled memory (
scripts/room_id_scale_modulation.pyand its quadrant/shape-world predecessors). Per-region gains are compared against a single shared profile and against learned kernel/window parameterizations of the same idea (scripts/room_method_select.py). - Component pruning (
scripts/vsa_bin_pruning.py,examples/learnable_points/vsa_pruning.py): once a room's memory is trained, how many of its Fourier bins (or spatial sample points, feeding each object's encoding before bundling) can be zeroed out while still decoding objects correctly? Random/magnitude/priority/learned-gate masking strategies are compared as compression curves against retained cosine similarity. - Real-world data loaders (
src/multiscalessps/data/): ModelNet10 (CAD meshes), Robot@Home2 (indoor robot laser scans + room annotations), and SceneNN/Semantic3D (labeled point clouds) are included for eventually grounding these adaptive-scale ideas beyond synthetic worlds.
Requires Python >= 3.10.
This project uses uv and depends on a local editable clone of
vsa-gym-wrapper (the vsagym package).
make setupmake setup clones vsa-gym-wrapper (only if it isn't already present) and then runs uv sync.
This creates .venv with multiscalessps and vsagym both installed in editable mode.
Run things with uv run python ... or activate the env with source .venv/bin/activate.
If you prefer to do it by hand:
git clone https://github.com/ctn-waterloo/vsa-gym-wrapper
uv syncAlternatively, with plain pip:
python3 -m venv .venv
source .venv/bin/activate
pip install -e ./vsa-gym-wrapper -e .-
Visualize a room environment (layout, dense sample data, and sampling behavior) and save the artifacts to a directory:
python scripts/visualize_room.py
-
Visualize the VSA baseline's decoded class maps and KL-vs-length-scale accuracy across a range of length scales, and save the artifacts to a directory:
python scripts/visualize_vsa_baseline.py
- Shay Snyder
- Nicole Dumont
- Sven Krausse
- Lorin Achey
- Matthias Kampa
The SP/SSP (Semantic Pointer / Spatial Semantic Pointer) representations in
src/multiscalessps/ssps/ are adapted from the formalism developed in:
Dumont, N. S.-Y. (2025). Symbols, Dynamics, and Maps: A Neurosymbolic Approach to Spatial Cognition (PhD Thesis). University of Waterloo, Waterloo, ON. https://hdl.handle.net/10012/21501
@phdthesis{dumont2025,
title = {Symbols, Dynamics, and Maps: A Neurosymbolic Approach to Spatial Cognition},
author = {Nicole Sandra-Yaffa Dumont},
type = {PhD Thesis},
school = {University of Waterloo},
address = {Waterloo, ON},
year = {2025},
url = {https://hdl.handle.net/10012/21501}
}This project was developed as part of the Telluride Neuromorphic Cognition Engineering Workshop 2026.