部落格 / Spaced Repetition
FSRS vs SM-2:Anki 排程演算法該用哪個?
重點
用 FSRS。SM-2 用同一條 1987 年的公式排程所有人;FSRS 則把記憶模型擬合到你自己的複習紀錄,還能直接指定目標記憶保持率。以數億筆真實複習資料跑的基準測試中,FSRS 一致地更準確預測回憶 — 實務上就是「同樣的記憶效果,更少的複習量」。桌面版 Anki 的 FSRS 是選項;Guru 在 iPhone 上開箱即用 FSRS。
SM-2 從哪來
SM-2 是 Piotr Woźniak 在 1987 年為 SuperMemo 發表的演算法,傳統 Anki 的排程器承襲自它。核心很簡單:每張卡帶一個「ease 係數」(初始約 2.5),答對則下次間隔=上次間隔 × ease;答「困難」或答錯則 ease 下降。
它是有效的 — 幾十年的 Anki 使用者就是證明。但機制上有已知的失效模式:
- Ease 地獄。 每次失誤都壓低 ease,而且恢復很慢。曾經卡住的卡片會永遠困在短間隔,用你不需要的複習塞爆每日佇列。
- 一刀切。 公式常數是 1987 年手工調的,對每個人、每種卡片都一樣。你真實的遺忘曲線從未被納入。
- 沒有保持率旋鈕。 你無法告訴 SM-2「這副牌我想記住 90%」。你只能調間接的參數(間隔係數等)然後祈禱。
FSRS 的不同之處
FSRS(Free Spaced Repetition Scheduler,由 Jarrett Ye 與協作者開發的開源專案)用一個記憶模型取代固定公式。每張卡以三個量追蹤(DSR 模型):
- Difficulty(難度) — 這張卡對你有多難
- Stability(穩定性) — 記憶目前能維持多久
- Retrievability(可提取性) — 此刻你能想起它的機率
參數不是手調常數:最佳化器會擬合你自己的複習歷史。而且不用間接旋鈕,你直接設定真正在乎的東西 — 目標保持率(例如 0.90)— FSRS 就把每張卡排在「回憶機率即將跌破該值」的時刻。
兩個實務結果:
- 少掉無效複習。 你記得牢的卡會被推得比 SM-2 敢推的更遠;真正難的卡更早回來。在以數億筆真實 Anki 複習資料執行的開源 srs-benchmark 中,FSRS 系列一致比 SM-2 更準確地預測回憶 — 這個預測精度正是省下來的複習量。
- 沒有 ease 地獄。 失誤只會合理更新穩定性與難度,不會永久懲罰卡片。
誠實的但書
- FSRS 的品質取決於它擬合的歷史。複習量極少時會從族群層級的預設參數開始(依然夠用 — 那是用海量資料擬合的)。
- 若你常手動覆蓋間隔,或把「困難」當「答錯」用,模型學到的是噪音。誠實評分。
- SM-2 並沒有「壞掉」。如果你的節奏穩定、負擔也可接受,切換是最佳化,不是急救。
不丟進度地切換
桌面版 Anki(23.10 以上):牌組選項 → 啟用 FSRS → 設定目標保持率(0.85–0.95 是合理區間;越高複習越多)→ 按「最佳化」用你的歷史擬合參數。卡片、紀錄、媒體都不動,改變的只有未來的排程。
iPhone 上:Guru 原生就是 FSRS — 匯入的牌組(保留排程的 .apkg)從既有狀態接續,AI 新生成的牌組(直接來自你的 PDF)從第一張卡就用 FSRS 排程。沒有需要尋找的開關。
目標保持率怎麼選
- 0.90 — 預設建議;負擔與效果的平衡點。
- 0.95 — 幾週內要考試、錯不起的時候。每日佇列會明顯變大。
- 0.85 — 語言、常識這類長期累積型,總量比單張卡重要。
FSRS 的意義在於:這個取捨終於變成明示的 — 你選保持率,演算法用最小的複習成本去維持它。