Prelude to vector symbolic architectures
2026-10-09
Same three words. Opposite meaning.
Suppose we are given three word vectors.
The simplest sentence vector adds the word vectors.
Both sentences add up to (2,2,3,1).
Addition ignores order, so any three vectors give the same sum. The sum keeps which words occur but loses who did what to whom.
The words are the same, but cat is the SUBJECT of one sentence and the OBJECT of the other. These roles are the structure that the summation misses.
Instead of adding the word vectors, concatenate them in sentence order.
The two sentences now get different vectors. Word order is kept.
Position is not role.
A labeler tells us what to encode. We still need how to encode it in a vector.
From now on the roles are given, by a labeler or by hand, just like the word vectors.
Reserve one block of the vector for each role, and put the filler in its role’s block. Stack the blocks as rows.
Start with an empty table, one row per role.
Put each sentence’s SUBJECT in the SUBJECT row, cat on the left and dog on the right.
Both verbs are chased. Put its vector in the VERB row.
Put each sentence’s OBJECT in the OBJECT row.
SUBJECT to OBJECT and Kay from OBLIQUE to ANSWER, while the meaning stays Kay loves Jay. Each construction needs new slots and gives a different tableSUBJECT, OBJECT, OBLIQUE, INDIRECT OBJECT, COMPLEMENT, and more. Each new role means redesigning the vectorOBJECT slot of knows?A whole sentence, which is already a table. A slot made for one word vector cannot hold it.
Look at the SUBJECT row alone. A slot number is a one-hot vector, and placing a word in that slot is an outer product.
rSUBJECTfcat⊤=100(2100)=200100000000SUBJECTVERBOBJECT
So the whole table of Attempt 2 is a sum of outer products, one per role.
Now let a role be any vector, not only a slot number. This is role-filler binding (Smolensky, 1990) r⊗f=rf⊤ The filler is the word. The role vector says where it goes.
S=rSUBJECT⊗fcat+rVERB⊗fchased+rOBJECT⊗fdog
Question. Given only S, how do we read the SUBJECT back out?
To read the SUBJECT, multiply by the SUBJECT role rSUBJECT⊤S=1(rSUBJECT⊤rSUBJECT)fcat⊤+0(rSUBJECT⊤rVERB)fchased⊤+0(rSUBJECT⊤rOBJECT)fdog⊤=fcat⊤
SUBJECT rowRoles in R2 are rSUBJECT=(1,0) and rOBJECT=(0,1). Fillers are fcat=(1,2) and fdog=(3,0). Ignore the verb.
SUBJECT?SUBJECT is dogSUBJECT of cat chased dog?rSUBJECT⊤S=fcat⊤+0.6fdog⊤=(2,1,0,0)+0.6(0,1,2,0)=(2,1.6,1.2,0)
OBJECT leaks into the SUBJECTQuestion. A language has many roles and many words. Where can we get many vectors that are nearly perpendicular to each other?
Try the laziest answer first. Pick the vectors at random.
Random vectors work as roles. What about the fillers?
Question. Can we build meaningful word vectors out of random vectors too?
Random indexing (Kanerva and Sahlgren, late 1990s) does exactly that.
| context | cup | brew | morning | screen | battery |
|---|---|---|---|---|---|
| index vector | (1,1,0,0) | (0,1,0,1) | (1,0,−1,0) | (0,0,1,1) | (0,−1,1,0) |
Five contexts get squeezed into 4 numbers. In real use the vectors have d≈1000 or more and thousands of contexts.
Follow coffee as the corpus streams by.
| event | add | coffee’s vector |
|---|---|---|
| start | (0,0,0,0) | |
| coffee, cup | (1,1,0,0) | (1,1,0,0) |
| coffee, cup | (1,1,0,0) | (2,2,0,0) |
| coffee, brew | (0,1,0,1) | (2,3,0,1) |
| coffee, morning | (1,0,−1,0) | (3,3,−1,1) |
Write the tiny corpus as a table. A row is a word, a column is a context, and a cell counts how often the word appeared with that context.
P=coffeetealaptopcup210brew120morning100screen002battery001
The stream computes exactly count matrix P times index matrix R.
P(3×5)coffeetealaptopcup210brew120morn.100screen002batt.001×R(5×4)101001100−100−11101010
=PR(3×4)coffeetealaptop31033−1−103122
| pair | cosine of counts (5 numbers) | cosine after random indexing (d=4) |
|---|---|---|
| coffee, tea | 0.73 | 0.84 |
| coffee, laptop | 0.00 | -0.24 |
| tea, laptop | 0.00 | 0.07 |
Mary knows [that the cat chased the dog]
OBJECT of knows, so rOBJECT⊗Sinner is a cube with d3 numbersEach level of embedding multiplies the size by d, so two levels deep is 1012. Question. Can we keep the binding but stop squaring the size?
Read a=(1,2,0) as 1+2x and b=(1,0,1) as 1+x2, then multiply term by term.
Question. A word has 3 numbers. What can we do to get a vector of length 3?
Keep only 3 slots, and count the powers like hours on a 3-hour clock: 0, 1, 2, then back to 0. So x3 joins slot 0 and x4 joins slot 1.
HRR (Plate, 1995) binds with circular convolution. The result has n slots, and k names one of them. slot k of the result(a⊛b)k=i=0∑n−1row iaithe column that lands in slot kb(k−i)modn
Put b=(1,0,1) on a clock with 3 slots. Each entry ai of a=(1,2,0) says turn b clockwise by i slots and scale it by ai.
S=rSUBJECT⊛fcat+rVERB⊛fchased+rOBJECT⊛fdog
Binding with r turned the filler f forward. Unbinding must turn it back.
Now r=(1,2,0) and r∗=(1,0,2). Pair up their turns.
| from r | then from r∗ | weight | net turn |
|---|---|---|---|
| no turn (1) | no turn (1) | 1 × 1 = 1 | 0 |
| turn 1 (2) | back 1 (2) | 2 × 2 = 4 | 0 |
| turn 1 (2) | no turn (1) | 2 × 1 = 2 | 1 |
| no turn (1) | back 1 (2) | 1 × 2 = 2 | 2 |
To ask for the SUBJECT, bind the sentence with rSUBJECT∗.
Cosine between the recovered filler and the right one, for a single bound pair.
| d=64 | d=1024 | d=4096 | |
|---|---|---|---|
| random role vector | 0.732 | 0.709 | 0.708 |
| unitary role vector | 1.000 | 1.000 | 1.000 |
Adding bindings lowers the signal, adding dimensions lowers the noise, and capacity is where they meet.
| d | 64 | 256 | 1024 | 4096 | 16384 |
|---|---|---|---|---|---|
| bindings retrievable | 3 | 14 | 71 | 228 | 880 |
Use the clock picture with n=3. Let a=(1,0,2) and b=(0,1,1).
Can the representation tell cat chased dog from dog chased cat?
| operation | tells them apart? | size | unbinding | |
|---|---|---|---|---|
| adding words | a+b | no | n | none |
| gluing in order | (a,b) | by position only | grows with the sentence | by position |
| inner product | a⋅b | no | 1 | none |
| TPR | ab⊤ | yes | n2 and growing | exact |
| HRR | a⊛b | yes | n | approximate |
| reduces by | compares or composes with | |
|---|---|---|
| Distributional semantics | finding structure (SVD, SGNS, GloVe) | the inner product |
| VSA | random projection, which finds nothing | a folded outer product |
Brandeis Fall 2026 CS135 Recitation – Bohan Jiang