FSRS vs SM-2: vì sao thuật toán spaced repetition mới quan trọng cho mọi người học ngôn ngữ
So sánh kỹ thuật-nhưng-dễ-đọc giữa FSRS và SM-2 — hai thuật toán spaced repetition chính — và vì sao FSRS giảm 20-30% số lần review với cùng tỷ lệ ghi nhớ. Kèm hướng dẫn migrate thực tế.
Nếu bạn đã dùng Anki, SuperMemo, hoặc bất kỳ flashcard app nào hơn vài tháng, có lẽ bạn đã nghe SM-2 và FSRS. Đa số user có cảm nhận mơ hồ "FSRS mới hơn và tốt hơn" mà không hiểu vì sao hoặc cái gì thay đổi.
Bài này sửa điều đó. Đây là giải thích kỹ thuật-nhưng-dễ-đọc về hai thuật toán SRS chính, vì sao FSRS là cải tiến thực (không phải hype), và cái gì thay đổi cho bạn trong thực tế.
Bạn không cần background toán — mục đích là intuition, không phải derivation.
Vấn đề cả hai thuật toán cố giải
Thuật toán spaced repetition trả lời một câu hỏi: cho một thẻ vừa review, khi nào nên show lại?
Quá sớm → lãng phí thời gian (vẫn nhớ). Quá muộn → đã quên và phải học lại từ đầu.
Interval "hoàn hảo" nằm ngay rìa của quên — khi truy xuất cần nỗ lực nhưng vẫn thành công. Đây là cái cognitive science gọi là desirable difficulty (Robert Bjork). Mỗi lần truy xuất thành công có nỗ lực củng cố trí nhớ mạnh hơn truy xuất dễ.
Cả SM-2 và FSRS đều cố dự đoán interval này. Khác biệt drastically ở cách dự đoán.
SM-2 — Piotr Wozniak, 1987
SM-2 (SuperMemo 2) là thuật toán SRS đầu tiên được deploy rộng rãi. Nó power SuperMemo nhiều năm và là default của Anki hơn một thập kỷ.
Cách SM-2 hoạt động
Mỗi thẻ có hai biến state:
- Số lần repetition (
n): bao nhiêu lần review thành công liên tiếp - Easiness factor (
EF): số bắt đầu từ 2.5, điều chỉnh theo rating của bạn
Sau mỗi review, bạn rate khả năng nhớ trên thang 0-5. SM-2 update state như sau:
Nếu rating < 3 (tức là quên):
n = 0
Show lại hôm nay.
Nếu rating >= 3 (tức là nhớ):
if n == 0: interval = 1 ngày
if n == 1: interval = 6 ngày
if n >= 2: interval = previous_interval × EF
EF = EF + (0.1 - (5 - rating) × (0.08 + (5 - rating) × 0.02))
EF clamp >= 1.3
n = n + 1
Đó là toàn bộ thuật toán.
Cái SM-2 làm đúng
- Đơn giản. Vài dòng toán, dễ debug, dễ giải thích.
- Không cần training data. Hoạt động từ thẻ #1.
- Adapt phần nào — EF tăng cho thẻ dễ (interval dài hơn) và giảm cho thẻ khó (interval ngắn hơn).
Cái SM-2 làm sai
- EF giả định độ khó của thẻ là cố định. Trong thực tế, trí nhớ về một thẻ cụ thể thay đổi khi bạn gặp nó trong các context khác nhau, với các neighbour khác nhau. SM-2 không có model về memory state.
- Không có concept về retrievability. SM-2 không model "xác suất bạn nhớ thẻ này ngay bây giờ là bao nhiêu?" Nó chỉ nhân interval với một factor.
- Xử lý quên thảm họa. Nếu fail thẻ sau interval dài, SM-2 reset
nvề 0 và bắt đầu lại từ ngày 1. Nhưng bạn không thực sự bắt đầu từ zero — có residual memory. SM-2 lãng phí thời gian học lại. - Không personalise giữa users. Mỗi user nhận cùng formula dù memory characteristics khác biệt rộng. User quên nhanh và user quên chậm nên có schedule rất khác — SM-2 chỉ adjust ở per-card level.
Các giới hạn này không quan trọng lắm năm 1987. Quan trọng nhiều bây giờ khi có data.
FSRS — Jarrett Ye, 2022 đến nay
FSRS (Free Spaced Repetition Scheduler) là approach căn bản khác. Thay vì formula hand-tuned, là một mô hình toán học nhỏ về trí nhớ với parameters học từ data.
Mô hình DSR
FSRS biểu diễn mỗi thẻ với 3 biến (mô hình DSR):
- D — Difficulty: thẻ này khó thế nào với user này. Update dựa trên hiệu suất theo thời gian.
- S — Stability: trí nhớ về thẻ này hiện kéo dài bao lâu. S càng dài, interval tiếp theo càng dài.
- R — Retrievability: xác suất bạn nhớ thẻ này nếu review NGAY BÂY GIỜ. Tính từ S và thời gian đã trôi.
Công thức retrievability đại khái là:
R = (1 + t / (9 × S))^(-1)
Với t là số ngày kể từ review trước và S là stability hiện tại. Số 9 là hằng số tuning.
Nghĩa là: khi thời gian trôi, R giảm mượt từ 1 về 0. Bạn có thể chọn target retrievability (ví dụ 0.9 = "tôi muốn review khi tôi nhớ với xác suất 90%") và FSRS tính chính xác interval đáp ứng.
Cái gì thay đổi vs SM-2
Sau mỗi review, FSRS không chỉ nhân với ease factor. Nó update D và S dùng các công thức tính:
- Bạn rate Again, Hard, Good, hay Easy
- D và S trước đó của thẻ
- Lỗi dự đoán (hệ thống dự đoán recall của bạn lệch bao nhiêu)
Các parameter trong các công thức đó (~17 cái) được học từ hàng triệu phiên review thực thay vì chọn bằng tay. Default parameters tốt cho đa số user, và Anki's FSRS có thể re-train trên review history cá nhân của bạn để tune thêm.
Vì sao điều này quan trọng trong thực tế
Nghiên cứu công bố (Ye 2022, validate bởi Anki community 2023-2024) cho thấy FSRS đem lại:
- Giảm 20-30% số lần review để duy trì cùng tỷ lệ ghi nhớ.
- Retention nhất quán hơn — ít thẻ "fall off cliff" vì bạn rate sai.
- Xử lý lapse tốt hơn — khi quên thẻ sau interval dài, FSRS không reset về ngày 1; nó rút ngắn interval tiếp theo dựa trên residual memory.
- Personalisation — bạn có thể re-train parameters trên data của riêng mình sau vài trăm review.
Với learner điển hình review 100 thẻ/ngày trên SM-2, chuyển sang FSRS nghĩa là khoảng 70-80 thẻ/ngày cho cùng retention — tiết kiệm thời gian có ý nghĩa, compound qua nhiều năm.
Implication thực tế
Nếu bạn mới với spaced repetition
Dùng tool default FSRS. Bạn sẽ tiết kiệm thời gian và có retention tốt hơn mà không cần biết chi tiết thuật toán. Mnemo default FSRS v5; Anki có FSRS như opt-in setting.
Nếu bạn là Anki user hiện tại
Mở Anki desktop → Preferences → Scheduling → enable "FSRS". Sau vài trăm review, chạy "Optimize" để tune parameters trên data của bạn. Bạn sẽ thấy review load giảm trong 2-3 tuần.
Nếu bạn dùng Quizlet, Memrise, hoặc consumer app khác
Các app này không chạy FSRS hay gì gần. "Learn" mode trong Quizlet dùng SM-2-ish đơn giản hóa không có per-card stability tracking. Nếu mục tiêu là retention dài hạn thay vì recognition ngắn hạn, bạn sẽ get nhiều hơn từ tool FSRS-native.
Hiểu lầm phổ biến
"FSRS chỉ là SM-2 với nhiều parameter hơn." Sai. Mental model khác — FSRS explicit model memory state (D, S, R) trong khi SM-2 chỉ track ease và count. DSR model đến từ research tâm lý học; SM-2 là heuristic hand-tune.
"FSRS chỉ work sau khi có nhiều data." Sai. Default parameters work tốt từ thẻ #1. Personal optimisation kick-in sau ~1,000 review nhưng là incremental, không foundational.
"FSRS sẽ cho phép tôi skip ngày review không hậu quả." Sai. FSRS chính xác hơn SM-2 nhưng không thể fight đường cong quên. Skip một tuần và bạn vẫn có thẻ đã quên — FSRS chỉ xử lý recovery uyển chuyển hơn chút.
"Nếu FSRS tốt thế, sao SuperMemo/Anki không làm sớm hơn?" SuperMemo tiếp tục evolve (SM-15, SM-18 — proprietary). FSRS là thuật toán đầu tiên ở mức tinh vi tương đương mà open-source và miễn phí. Anki conservative về default cho đến khi cộng đồng FSRS chứng minh qua hàng triệu review.
Hạn chế của FSRS (thật thà)
- Không giúp nếu bạn không review. FSRS là scheduler, không phải habit-builder.
- Không giúp nếu bạn tạo thẻ tệ. Thẻ "từ = nghĩa" trần vẫn encode kém bất kể scheduler.
- Không thể dự đoán cái không đoán được. Thay đổi cuộc sống lớn, ốm, thiếu ngủ — đều ảnh hưởng trí nhớ. FSRS adapt nhưng có lag.
- Tối ưu cho recall trong review chuẩn. Không trực tiếp giúp với applied skills (viết, nói) — đó là practice riêng.
Dùng FSRS hôm nay ở đâu
- Mnemo — FSRS v5 mặc định, không cần config.
- Anki desktop/mobile — FSRS có sẵn từ 2024, opt-in qua Preferences.
- RemNote — FSRS có trong Pro tier.
- Open-source FSRS implementations — có trong Python, JavaScript, Rust nếu bạn build tool riêng. Xem
open-spaced-repetition/fsrs4ankitrên GitHub.
Cho đa số learner, lựa chọn giữa Mnemo và Anki+FSRS đến từ friction: bạn muốn FSRS preconfigured với UI hiện đại và Chrome extension built-in (Mnemo), hay muốn customisation tối đa và deck ecosystem lớn nhất (Anki)? Cả hai đều valid. Cả hai đều chạy cùng thuật toán hiện đại bây giờ.
Đọc tiếp: