FWPRec Experiments
All experiments
MovieLens-1M · Amazon · KuaiRand-1K · Amazon-Qwen · MIND-large · seeds 42, 43 · four RTX cards

How does the notepad compare to the field?

Every model in this project is our own rewrite of someone else's, so a comparison is only worth anything if all of them get the same deal. We gave nineteen models one identical training budget, ran each twice with different random starts, and scored them the same way on three very different datasets: movie ratings, Amazon game purchases, and short-video watch logs. Nothing was tuned for our own method. The point was not to win — the notepad's case rests on being cheap and inspectable — but to find out honestly where it sits among models people actually publish.

Takeaway

On ID vectors the notepad is mid-table everywhere. On shared frozen content vectors its published configuration leads Amazon outright — but a configuration ladder shows where that comes from: given the identical one-variable swap the baselines received, the notepad scores 0.085, below even its own ID row; the content anchor lifts it to 0.130; the tuned write constants more than double it to 0.284. The lead is real but belongs to the tuned configuration, and the baselines were not given an equivalent tuning pass. On MIND-large the content-anchored notepad sits upper-mid-table. The one claim that survives every column untouched: rank-16 matches full memory everywhere.

Part 1 · Learned ID vectors

Every model learns its item table from interaction IDs alone — the like-for-like protocol of the original campaign. Columns are comparable down their own length only.

MovieLens-1M

Ranked by nDCG@10 on the held-out test set. All runs finished.

HSTU
0.6419
Mamba4Rec
0.6336
LRURec
0.6310
SASRec
0.6259
BSARec
0.6235
TiSASRec
0.6224
DuoRec
0.6211
GRU4Rec
0.6179
#ModelHR@1HR@10nDCG@10nDCG@20
1HSTU0.45360.83590.64190.6596
2Mamba4Rec0.44940.82400.63360.6524
3LRURec0.44120.82470.63100.6494
4SASRec0.43720.82190.62590.6448
5BSARec0.43250.82120.62350.6421
6TiSASRec0.43150.82150.62240.6414
7DuoRec0.42850.81980.62110.6401
8GRU4Rec0.42860.81610.61790.6353
9FWPRec (dense)0.41360.82690.61480.6332
10FWPRec (rank-16)0.40810.82480.61200.6316
11LinRec0.38530.79820.58590.6060
12FPMC0.34000.77970.54700.5724
13SeqRules0.35350.74390.54000.5661
14BERT4Rec0.31320.68580.49180.5169
15BPRMF0.16960.66820.39130.4315
16ItemKNN0.13690.57800.32820.3743
17Popularity0.08920.43630.23860.2851
—NRMSn/an/an/an/a
—LSTURn/an/an/an/a

Amazon Video Games

Ranked by nDCG@10 on the held-out test set. All runs finished.

BSARec
0.1412
BERT4Rec
0.1411
SASRec
0.1383
TiSASRec
0.1379
GRU4Rec
0.1364
HSTU
0.1362
LRURec
0.1353
Mamba4Rec
0.1329
#ModelHR@1HR@10nDCG@10nDCG@20
1BSARec0.07950.21590.14120.1538
2BERT4Rec0.07710.21910.14110.1549
3SASRec0.07470.21620.13830.1508
4TiSASRec0.07390.21570.13790.1509
5GRU4Rec0.07630.20920.13640.1487
6HSTU0.07450.21150.13620.1497
7LRURec0.07400.20930.13530.1482
8Mamba4Rec0.07230.20700.13290.1455
9FPMC0.04570.20440.11230.1403
10SeqRules0.05620.18010.10970.1326
11FWPRec (dense)0.05480.16990.10610.1184
12FWPRec (rank-16)0.05420.16980.10560.1179
13DuoRec0.04600.16680.09890.1132
14ItemKNN0.04650.16070.09530.1184
15BPRMF0.04150.14690.08750.1002
16Popularity0.03000.13540.07450.0882
17LinRec0.02940.13520.07440.0876
—NRMSn/an/an/an/a
—LSTURn/an/an/an/a

KuaiRand-1K

Ranked by nDCG@10 on the held-out test set. All runs finished.

BPRMF
0.4077
SASRec
0.3901
TiSASRec
0.3878
Mamba4Rec
0.3654
GRU4Rec
0.3586
LinRec
0.3547
FWPRec (rank-16)
0.3531
FWPRec (dense)
0.3527
#ModelHR@1HR@10nDCG@10nDCG@20
1BPRMF0.09820.83290.40770.4453
2SASRec0.09800.77220.39010.4217
3TiSASRec0.09600.77190.38780.4198
4Mamba4Rec0.07600.76220.36540.4004
5GRU4Rec0.07230.75320.35860.3924
6LinRec0.10080.69930.35470.4007
7FWPRec (rank-16)0.09120.72310.35310.4090
8FWPRec (dense)0.09140.72180.35270.4087
9HSTU0.06650.74980.35090.3881
10DuoRec0.07410.72940.34730.3898
11BSARec0.06170.73900.34090.3809
12LRURec0.05110.70950.31600.3624
13SeqRules0.02050.20040.09140.1414
14Popularity0.00920.09310.04260.0668
—ItemKNNn/an/an/an/a
—FPMCn/an/an/an/a
—BERT4Recn/an/an/an/a
—NRMSn/an/an/an/a
—LSTURn/an/an/an/a

Does the ranking hold at other list lengths?

Hit rate on MovieLens-1M at four cutoffs. Reading only the ten-item column would overstate the notepad: it places second there, but ninth when only the single top pick counts.

ModelHR@1HR@5HR@10HR@20
HSTU0.45360.75060.83590.9053
Mamba4Rec0.44940.74210.82400.8978
LRURec0.44120.74120.82470.8973
SASRec0.43720.73400.82190.8963
BSARec0.43250.73530.82120.8945
FWPRec (dense)0.41360.72930.82690.8991
FWPRec (rank-16)0.40810.72800.82480.9022
GRU4Rec0.42860.72810.81610.8845

Part 2 · Frozen content vectors

The same models, given identical frozen Qwen content vectors instead of learned IDs. Different information, so nothing in this part may be compared against Part 1 — except deliberately, in the paired exhibit below, where that comparison is the entire point.

What one change of representation does on Amazon

Identical split, candidates, seeds and training budget; the only change is swapping each model's learned ID table for the same frozen content vectors. The notepad moves from eleventh place to first.

ModelID vectorsContent vectorsΔ
FWPRec (dense)0.10610.2842+0.1781
FWPRec (rank-16)0.10560.2836+0.1780
FPMC0.11230.2562+0.1439
HSTU0.13620.1994+0.0632
LRURec0.13530.1967+0.0614
BSARec0.14120.1908+0.0496
Mamba4Rec0.13290.1836+0.0507
GRU4Rec0.13640.1635+0.0271
SASRec0.13830.1502+0.0119
TiSASRec0.13790.1445+0.0065
DuoRec0.09890.1387+0.0399
LinRec0.07440.1100+0.0356
BPRMF0.08750.0806-0.0069

Read the notepad's row with care: unlike every other row, its content-side number uses ten tuned constants from an earlier search — the baselines' deltas are representation alone, the notepad's is representation plus tuning. The ladder below separates the two; the notepad's symmetric-swap score is 0.0852.

Where the notepad's content number actually comes from

One knob-group at a time, from the identical swap the baselines received up to the published configuration. The anchor and the write mechanism contribute little; the tuned constants carry the result. Under strictly equal treatment the notepad scores 0.0852 — below its own ID-column row.

ConfigurationWhat it addsnDCG@10
Same one-variable swap the baselines gotthe symmetric row0.0846
+ content anchormean of the user's item vectors0.1305
+ sequential writesevolving write state0.1318
+ tuned constantswrite gains ×10, mixing weight, week/quarter time scales0.2842

Amazon Video Games — frozen Qwen content vectors

Ranked by nDCG@10 on the held-out test set. All runs finished.

FWPRec (dense)
0.2842
FWPRec (rank-16)
0.2836
FPMC
0.2562
HSTU
0.1994
LRURec
0.1967
BSARec
0.1908
Mamba4Rec
0.1836
GRU4Rec
0.1635
#ModelHR@1HR@10nDCG@10nDCG@20
1FWPRec (dense)—0.49820.2842—
2FWPRec (rank-16)—0.50000.2836—
3FPMC—0.42540.2562—
4HSTU—0.35480.1994—
5LRURec—0.35700.1967—
6BSARec—0.34060.1908—
7Mamba4Rec—0.32890.1836—
8GRU4Rec—0.29130.1635—
9SASRec—0.24800.1502—
10TiSASRec—0.23440.1445—
11DuoRec—0.22050.1387—
12LinRec—0.18210.1100—
13BPRMF—0.14470.0806—
—Popularityn/an/an/an/a
—ItemKNNn/an/an/an/a
—SeqRulesn/an/an/an/a
—BERT4Recn/an/an/an/a
—NRMSn/an/an/an/a
—LSTURn/an/an/an/a

MIND-large — frozen Qwen content vectors

Ranked by nDCG@10 on the held-out test set. All runs finished.

Mamba4Rec
0.4242
BSARec
0.4225
HSTU
0.4113
DuoRec
0.4105
LRURec
0.4090
NRMS
0.4067
FWPRec (dense)
0.4056
GRU4Rec
0.4036
#ModelHR@1HR@10nDCG@10nDCG@20
1Mamba4Rec—0.77100.4242—
2BSARec—0.77000.4225—
3HSTU—0.76260.4113—
4DuoRec—0.75440.4105—
5LRURec—0.76160.4090—
6NRMS—0.76070.4067—
7FWPRec (dense)—0.75270.4056—
8GRU4Rec—0.75570.4036—
9FWPRec (rank-16)—0.74960.4025—
10SASRec—0.74600.3964—
11TiSASRec—0.74440.3945—
12LSTUR—0.74730.3943—
13FPMC—0.71320.3782—
14BPRMF—0.69950.3600—
15LinRec—0.66320.3228—
16ItemKNN—0.62430.3028—
17SeqRules—0.60950.2960—
18Popularity—0.60110.2910—
—BERT4Recn/an/an/an/a

How it was run

177 of 177 runs finished so far. Each one records the code version, a checksum of the data it read, the exact settings, the GPU it used and how long it took, and each re-checks its own scores from its saved predictions before being counted.

Two seeds per model, reported as the mean; we do not quote a standard deviation from two numbers. The three datasets are scored against different-sized candidate lists, so a column is only comparable down its own length, never across. Rows marked n/a could not be run and say why in the record: NRMS and LSTUR need item text the three ID datasets do not carry (they do run natively on MIND-large), ItemKNN's memory grows with the square of a user's history, and FPMC's three embedding tables over 4.4 million videos exceed the cards we have. The frozen-Qwen columns are reported separately from the ID columns and never merged: same models, different information. A handful of MIND-large and KuaiRand control runs are still finishing.