FWPRec Experiments
All experiments
Ablation study · 7 variants · 6 datasets · seeds 42/43/44 · updated 2026-09-25 06:18 UTC

Taking the notepad apart

We removed or swapped one piece of the locked notepad model at a time — dislike memory, the separate pads for likes and dislikes, the fixed writing anchor, the anchor-based note format, the independent writer networks, and the full-size pad — and reran the exact main-table protocol each time: same data, splits, seeds and settings, with the untouched model as the baseline. Every bar below is a three-seed test mean.

Takeaway

The signed dual memory is the load-bearing part. Remove the dislike pad — or merge both signs into one pad — and KuaiRand, the dataset with real dislike buttons, drops by 0.082 nDCG@10; the news datasets lose a smaller but consistent amount without dislikes. Every other change costs at most ~0.006 anywhere: the moving write state is a wash, the writer architecture barely matters, and the rank-16 compressed pad matches the full pad on all six datasets — the notepad can be shrunk but its two signed halves cannot be merged.

How much each change costs · Δ nDCG@10 vs the full notepad

Bars hang below the line when a change hurts and rise above it when it helps. Each dataset is scaled to its own largest change — printed under every group — because KuaiRand's −0.082 would otherwise flatten the five datasets whose changes are ten times smaller. Compare bar heights within a group, and read the printed scale when comparing across groups. Hover any bar for its exact delta.

Likes only — no dislike memoryOne shared pad for both signsNotes written against a moving stateNotes built without the anchor baseOne shared writer networkRank-16 compressed padimproved over full
Pos-only1-padEvolvingRaw k/cSharedRank-16
MIND-large
largest |Δ| 0.006
Pos-only1-padEvolvingRaw k/cSharedRank-16
EB-NeRD
largest |Δ| 0.010
Pos-only1-padEvolvingRaw k/cSharedRank-16
Amazon Video Games
largest |Δ| 0.004
Pos-only1-padEvolvingRaw k/cSharedRank-16
MovieLens-1M
largest |Δ| 0.006
Pos-only1-padEvolvingRaw k/cSharedRank-16
KuaiRand-Pure (IDs)
largest |Δ| 0.082
Pos-only1-padEvolvingRaw k/cSharedRank-16
KuaiRec
largest |Δ| 0.008

Combination ablations · several pieces changed at once

Removing one piece at a time understates the memory: the pieces cover for each other. These runs change several at once (same protocol, three seeds, per-dataset scaling as above). The headline: on MovieLens-1M no single removal cost more than 0.002, yet removing the whole memory costs 0.132 — the components are individually replaceable but jointly essential. A crude single Hebbian pad recovers almost all of that value everywhere except KuaiRand, whose real dislike signals need the full signed machinery; and on Amazon the memory adds almost nothing at all.

AnchorCrude padPos+rawUnlearnedLeanEvolv+1pad
MIND-large
largest |Δ| 0.034
AnchorCrude padPos+rawUnlearnedLeanEvolv+1pad
EB-NeRD
largest |Δ| 0.027
AnchorCrude padPos+rawUnlearnedLeanEvolv+1pad
Amazon Video Games
largest |Δ| 0.014
AnchorCrude padPos+rawUnlearnedLeanEvolv+1pad
MovieLens-1M
largest |Δ| 0.132
AnchorCrude padPos+rawUnlearnedLeanEvolv+1pad
KuaiRand-Pure (IDs)
largest |Δ| 0.089
AnchorCrude padPos+rawUnlearnedLeanEvolv+1pad
KuaiRec
largest |Δ| 0.045
Combination removed / changedMIND-largeEB-NeRDAmazon Video GamesMovieLens-1MKuaiRand-Pure (IDs)KuaiRec
Anchor only — the whole memory removed-0.028-0.027-0.002-0.132-0.089-0.045
One crude pad — single memory, no delta rule-0.000+0.004-0.001-0.009-0.008+0.006
Likes only + notes without the anchor base-0.006-0.010-0.004-0.002-0.084-0.008
Dual pads but nothing learned in the writes-0.034-0.024+0.014-0.087-0.053-0.029
Lean stack — rank-16 + shared writer + raw notes-0.003-0.007-0.000-0.002-0.039-0.002
Moving write state + one shared pad-0.002-0.001-0.003+0.007-0.065+0.004

The same numbers as a table

Negative numbers mean the change hurt. Red marks a drop of 0.02 or more. Every variant reuses its dataset's already-selected learning rate, forgetting rate and dislike weight, so only the named component changes.

Change to the notepadMIND-largeEB-NeRDAmazon Video GamesMovieLens-1MKuaiRand-Pure (IDs)KuaiRec
Likes only — no dislike memory-0.006-0.010-0.001-0.002-0.082-0.008
One shared pad for both signs-0.000-0.000+0.001-0.000-0.082-0.005
Notes written against a moving state-0.001-0.000-0.004+0.006-0.004+0.008
Notes built without the anchor base-0.004-0.006-0.000-0.002-0.014-0.001
One shared writer network-0.001-0.001+0.002-0.002-0.002-0.001
Rank-16 compressed pad-0.004-0.003-0.000-0.000-0.010-0.000

MIND-large · nDCG@10 by variant

Full notepad (locked model)
0.4043
Likes only — no dislike memory
0.3982 (-0.006)
One shared pad for both signs
0.4039 (-0.000)
Notes written against a moving state
0.4030 (-0.001)
Notes built without the anchor base
0.4005 (-0.004)
One shared writer network
0.4033 (-0.001)
Rank-16 compressed pad
0.4006 (-0.004)

EB-NeRD · nDCG@10 by variant

Full notepad (locked model)
0.4821
Likes only — no dislike memory
0.4722 (-0.010)
One shared pad for both signs
0.4820 (-0.000)
Notes written against a moving state
0.4820 (-0.000)
Notes built without the anchor base
0.4759 (-0.006)
One shared writer network
0.4815 (-0.001)
Rank-16 compressed pad
0.4794 (-0.003)

Amazon Video Games · nDCG@10 by variant

Full notepad (locked model)
0.2496
Likes only — no dislike memory
0.2488 (-0.001)
One shared pad for both signs
0.2506 (+0.001)
Notes written against a moving state
0.2452 (-0.004)
Notes built without the anchor base
0.2492 (-0.000)
One shared writer network
0.2515 (+0.002)
Rank-16 compressed pad
0.2495 (-0.000)

MovieLens-1M · nDCG@10 by variant

Full notepad (locked model)
0.2421
Likes only — no dislike memory
0.2401 (-0.002)
One shared pad for both signs
0.2419 (-0.000)
Notes written against a moving state
0.2477 (+0.006)
Notes built without the anchor base
0.2403 (-0.002)
One shared writer network
0.2401 (-0.002)
Rank-16 compressed pad
0.2420 (-0.000)

KuaiRand-Pure (IDs) · nDCG@10 by variant

Full notepad (locked model)
0.4858
Likes only — no dislike memory
0.4035 (-0.082)
One shared pad for both signs
0.4041 (-0.082)
Notes written against a moving state
0.4813 (-0.004)
Notes built without the anchor base
0.4723 (-0.014)
One shared writer network
0.4842 (-0.002)
Rank-16 compressed pad
0.4761 (-0.010)

KuaiRec · nDCG@10 by variant

Full notepad (locked model)
0.0814
Likes only — no dislike memory
0.0730 (-0.008)
One shared pad for both signs
0.0766 (-0.005)
Notes written against a moving state
0.0893 (+0.008)
Notes built without the anchor base
0.0805 (-0.001)
One shared writer network
0.0802 (-0.001)
Rank-16 compressed pad
0.0812 (-0.000)

Fine print

Variants follow the list promised in the paper's appendix. "Full" is pinned bit-identical to the locked model by test and reproduced its main-table numbers live. The rank-16 pad stores at most 16 note-pairs per memory (the write window holds 20 events), so it is exact until capacity and matched the dense pad within 0.010 everywhere. KuaiRand uses learned ID vectors (it has no item text); all other datasets use the shared frozen content vectors.

Paper figures

Publication versions of this page's charts, as PDF. Each series or cell is encoded twice (colour plus pattern, marker or printed value), so they read in greyscale and under colour-vision deficiency. Click a preview to open the PDF.

Leave-one-out heatmap (paper figure)
Leave-one-out heatmap — Change in nDCG@10 vs the full model; colour scaled per dataset, raw value printed. PDF
Combination heatmap (paper figure)
Combination heatmap — Same encoding, for the six combinations. PDF