A matrix is just numbers in a grid with two indices. Every interpretation is really two choices: what the row and column mean, and whether you multiply by it or take it apart. Below, one grid — re-skinned five times. The entries never change. Only what they mean does.
The default grid was chosen to be all five things at once — it is symmetric, doubly stochastic, and positive-definite simultaneously, so every reading is legitimate. Switch lenses to watch the row and column labels change meaning; hover a cell to read that single entry in the current frame. Then scrub any cell (drag up or down) and watch which of the three properties survive your edit.
Every reading above is generated by a single split — the row index versus the column index — wearing different clothes. That is why the transpose always means something: it swaps the two readings. And why one array can be all of these at once.
| Columns | Rows |
|---|---|
| vectors | covectors |
| generators — build the output | constraints — test the output |
| variables | equations |
| states you move from | states you move to |
| column space (what’s reachable) | row space (what’s being probed) |
The habit worth keeping: when you meet a matrix in the wild, ask what i means, what j means, and whether you are about to multiply by it or dismantle it. The answer picks the lens for you. The attention matrix is the tell — QKᵀ is a relation, softmax turns each row into a transition, and applying it to V makes it an operator. One array, three readings, in a single line of a single layer.