間隔重複演算法都在回答同一個實際問題:學習者什麼時候應該再看到每張卡片?Leitner 使用固定盒子,SM-2 更新易度因子和間隔,Anki 的舊排程器擴展了 SM-2,FSRS 則根據目標保留率建模難度、穩定性和可提取性。
這篇是寬口徑的演算法地圖。如果你專門在選 FSRS 還是 SM-2,請直接閱讀 FSRS vs SM-2 對比,那篇聚焦當前 Anki 設定、優化與遷移。
先說一句"間隔重複"在解什麼問題
直接進演算法之前,一段提醒。半個網際網路關於 FSRS-vs-SM-2 的討論裡,發言的人其實不太分得清兩者各自在解什麼。
Cepeda 等 (2008) 測試了不同保留週期下的複習間隔,發現合適的學習間隔取決於學習者需要保留材料多久。每個間隔重複演算法都在繼續回答:**給定一張看過的卡,下一次複習應該在什麼時候?**太早可能浪費精力,太晚則會提高回憶失敗的可能性。
下面四個演算法,本質上是對這個問題的四種押注。
Leitner (1972) — 紙盒演算法
Sebastian Leitner 在 So lernt man lernen (1972) 裡提出來的。是你德國表哥 1985 年用鞋盒在跑的那個東西。
機制:5 個實體盒子。新卡放 Box 1。答對升一格,答錯回 Box 1。Box 1 每天覆習,Box 2 每兩天,Box 3 每四天,往後大致按 2 倍遞增。每張卡除了"在哪個盒子裡"之外沒有別的狀態。
它做對的:這是在成功回憶後擴展複習間隔的簡單、可視化方式。學習者只用紙質卡片和盒子就能執行,不需要軟體或逐卡計算。
它做錯的:同一個盒子裡的卡被一視同仁。差點忘的卡和立即想起的卡升格幅度一樣。它不顯式估計卡片難度或當前回憶機率,節奏也是固定的,而不是根據複習歷史擬合。
200 張以下的卡組,Leitner 真的夠用。再往上,"沒有按卡定時"這件事就開始讓你做不必要的複習。
SM-2 (Wozniak, 1987) — 別人都在抄的那個
Piotr Wozniak 的 SM-2——他碩士論文的一部分,1987 年隨 SuperMemo 1.0 for DOS 上線——是過去近 40 年裡默默支撐半個間隔重複世界的那個演算法。
機制,用人話講:
- 每張卡有一個易度因子 (EF),預設 2.5。
- 每張卡有一個間隔——離下一次複習還有幾天。
- 每次複習後你給自己回憶質量打分,0-5 分(0 = 完全忘了,5 = 即刻完美回憶)。
- 評分 ≥ 3:下一個間隔 = 上一個間隔 × 當前 EF。EF 根據具體分數微調上下。
- 評分 < 3:卡片重置——間隔回到 1 天,EF 被懲罰。
就這些。SM-2 原始描述 比這一節還短。
它做對的:易度因子是按卡走的。你覺得簡單的卡 EF 漲得快,間隔迅速拉長;你覺得難的卡 EF 跌向 1.3 的下限,複習更頻繁。它把"不是所有卡都一樣"這件顯而易見的事編碼成一個你能直接推理的數字。整個演算法核心邏輯大概五行程式碼。我手寫實現過幾次,閉眼能寫。
它做錯的:公式是手工調出來的。Wozniak 1987 年根據自己的複習記錄加幾百個朋友的資料挑了那些常數。現代資料顯示曲線不太對——SM-2 傾向於過度複習已經很熟的卡(成熟卡的間隔漲得太慢),而且對"勉強答對"和"秒答"之間的區別反應不足。它也根本沒有"遺忘"本身的模型,就是悶頭乘 EF。
0-5 評分在實操裡也是個 UX 問題。大多數人沒法可靠區分 2 分和 3 分——而這恰好是卡片要麼繼續展開、要麼直接重置的懸崖。Anki 注意到了。
Anki 的舊 SM-2 排程器
Damien Elmes 建立 Anki 時從 SM-2 起步,加入了幾處務實改動。在 Anki 23.10 整合 FSRS 之前,這是 Anki 的主要排程器。當前 Anki 文件將 FSRS 作為現代排程器,同時保留基於 SM-2 的舊選項。
重要的幾處改動:
- 四個按鈕取代六個分。 Anki 把 Wozniak 的 0-5 折成 "Again / Hard / Good / Easy"。Again 是失敗(間隔重置,EF 懲罰)。Hard / Good / Easy 大致對應 SM-2 的 3、4、5。這是 UX 上的勝利——大多數人無法老實在 6 檔裡給自己評分,但能在 4 個按鈕裡挑一個"感覺對的"。
- 失敗處理可調。 SM-2 是二元的:失敗或不失敗。Anki 讓你配置失敗如何懲罰 EF(預設 −0.20)、失敗的卡要爬幾個"再學習"步驟(預設 10 分鐘然後重新畢業)、以及"困難卡"閾值(預設連續失敗 8 次)。
- 新卡畢業前的學習步驟。 新卡按 1m / 10m / 1d 三步走完才進入 SM-2 正式排程。SuperMemo 沒有這個,是 Anki 發明的,也基本上被證明是對的。
- EF 下限和"易度地獄"。 Anki 把 EF 卡在 1.3 以上,意味著你一直答錯的卡最終會停在一個固定的、令人髮指的高頻複習節奏,而不是一路衰減成天天見。這同時是經典抱怨 "leeches in ease hell" 的來源——長期卡組裡堆著一批 EF 卡在 1.3 附近、你其實永遠學不會的卡。
它做對的:四個熟悉的回答按鈕、學習步驟、可設定的失敗處理,以及多年的相容性工作。
它做錯的:跟 SM-2 錯的一樣。1987 年手調的常數、沒有真正的遺忘模型、過度複習成熟卡。當你跑了 18 個月、卡組到 3 萬張的時候,你能感覺到那個拖累。
FSRS (Open Spaced Repetition, 2022→) — 真的有遺忘模型那個
FSRS——Free Spaced Repetition Scheduler,最早作者是葉峻嶢(Jarrett Ye)——是第一個被廣泛部署、建立在顯式遺忘模型而不是手調倍數上的間隔重複演算法。Anki 23.10(2023 年 10 月)開始作為可選項上線,到 25.x 已經是新使用者的預設。原始碼和論文在 github.com/open-spaced-repetition/fsrs4anki。
核心模型叫 DSR——Difficulty / Stability / Retrievability,如果你想對 FSRS 有立場,值得理解這三個量:
- 穩定性 S — 你這張卡的可提取機率衰減到 90% 還需要多少天。S = 30 意思是:30 天后你有 90% 機率仍然記得。
- 可提取性 R — 此刻你能回憶起這張卡的機率,建模為
R = exp(-t/S),t是距離上次複習的天數。這是一條真實的指數遺忘曲線,不是憑空設定。 - 難度 D — 每張卡一個常數(0-10),調節穩定性在每次複習後的增長速度。
每次複習後,FSRS 用 17-21 個訓練得到的權重(FSRS-4.5、FSRS-5、FSRS-6 自 2023 年起都先後上線)更新 S 和 D。權重是用你自己的複習日誌做梯度下降擬合出來的。這是關鍵的部分:FSRS 是針對你個人遺忘曲線做了個性化,不是 Wozniak 的曲線。
FSRS 可以立即使用預設參數,也可以稍後根據複習歷史優化參數。公開的 SRS Benchmark 使用大型 Anki 複習資料集,按預測指標評估 FSRS 各版本、SM-2 與其他模型。它支持模型對比,但不支持對所有學習者承諾一個通用的複習次數或時間節省數字。
FSRS 的優勢是顯式的目標保留率控制,以及使用複習歷史擬合模型的能力。它的部署代價是更多狀態、會演進的公式、優化器工作流,以及與修改排程的外掛程式發生衝突的可能性。
橫向表格
| 演算法 | 年份 | 每張卡的狀態 | 排程輸入 | 留存目標 | 主要弱點 |
|---|---|---|---|---|---|
| Leitner | 1972 | 盒子編號 (1-5) | 對 / 錯 | 隱式(~85%) | 沒有按卡定時;同盒所有卡一視同仁 |
| SM-2 | 1987 | EF + 間隔 | 0-5 評分 | 隱式(~90%) | 手調常數;過度複習成熟卡 |
| Anki SM-2 | 2006-2023 | EF + 間隔 + 失敗次數 | Again/Hard/Good/Easy | 隱式(~90%) | 繼承 SM-2 缺陷;長期卡組的"易度地獄" |
| FSRS | 2022 → 持續迭代 | Difficulty + Stability + Retrievability | Again/Hard/Good/Easy | 顯式且可設定 | 實現和運行更復雜 |
| SuperMemo 18+ | 2019 → | 完整 DSR + 工作量模型 | 0-5 評分 | 可配置 | 閉源;無法遷移到其他工具 |
應該選哪種間隔重複演算法?
- 選 Leitner:用於紙質閃卡或教室活動,可視的五個盒子就是功能本身。
- 選 FSRS:你在使用當前版本的 Anki,並希望控制目標保留率、優化記憶模型。
- 選 SM-2:你的應用已可靠實現它,或者你更重視相容性、簡潔和可審計性。
- 只在需要時選 Anki 舊排程器:例如現有卡組、外掛程式或工作流依賴它。
排程器只是系統的一部分。卡片品質、如實評分和持續複習,仍然決定了演算法能否獲得有用的回饋。
SmartRecall 為什麼使用 SM-2
SmartRecall 目前使用 SM-2,不提供 FSRS 排程或參數優化。它的產品重點是將支援的 PDF 或貼上的學習材料轉換為可編輯閃卡,由使用者檢查和編輯後,再用 SM-2 安排複習。
如果 FSRS 是必需功能,選 Anki;如果減少手工製卡更重要,可以考慮 SmartRecall,但在學習前必須檢查 AI 生成的卡片。
今天該做什麼
如果你使用當前版本的 Anki,請按官方 FSRS 工作流開始,並有意識地設定目標保留率。如果你使用其他應用,請先確認它真正實現的排程器,不要把所有四按鈕介面都當成 Anki 或 FSRS。
如果你正在專門比較 FSRS 與 SM-2,繼續閱讀專題對比。如果製卡才是限制,可以查看 SmartRecall 的 PDF 轉閃卡工作流,並在加入學習計畫前檢查生成結果。

