Lý Do Thực Sự Bạn Cứ Quên Từ Vựng (Không Phải Thứ Bạn Đang Nghĩ)
Thứ Hai tuần trước, bạn học 30 từ. Ôn lại thứ Ba. Cảm thấy ổn.
Thứ Sáu — còn lại 8 từ. Có thể ít hơn.
Đây là sự thật ngược đời thay đổi mọi thứ: bạn không có vấn đề về bộ nhớ. Bạn có một scheduling bug.
Từ vựng không biến mất vì não bạn yếu. Nó biến mất vì não bạn đang làm đúng thứ nó được thiết kế để làm — chạy garbage collector trên thông tin mà nó chưa có lý do để giữ lại.
Hermann Ebbinghaus đã tìm ra điều này năm 1885. Phát hiện của ông đã được tái tạo trong hàng trăm nghiên cứu kể từ đó. Và nó giải thích chính xác tại sao mọi phương pháp học từ vựng bạn đã thử đều thất bại — và cách fix thực sự trông như thế nào.
Đây là đường cong quên lãng Ebbinghaus, được giải thích theo cách developer thực sự suy nghĩ.
Đường cong quên lãng Ebbinghaus là gì? Đường cong quên lãng Ebbinghaus mô tả tốc độ não bộ xóa thông tin theo hàm mũ sau khi học. Phat hiện bởi Hermann Ebbinghaus năm 1885 và được tái tạo trong hàng trăm nghiên cứu: trong 24 giờ đầu, não xóa 67% những gì bạn vừa học. Giải pháp: lần ôn tiếp theo phải được lên lịch đúng trước ngưỡng quên — cụ thể qua thuật toán SM-2. (Cập nhật: Tháng 7, 2026)
Forgetting Curve Thực Sự Nói Gì
Năm 1885, Hermann Ebbinghaus tự tra tấn bản thân qua nhiều năm bằng cách ghi nhớ và kiểm tra hàng nghìn chuỗi âm tiết vô nghĩa. Ông vừa là nhà nghiên cứu, vừa là đối tượng thí nghiệm. Phát hiện của ông — sau này được đặt tên là Ebbinghaus Forgetting Curve — vẫn là một trong những kết quả được tái tạo nhiều nhất trong toàn bộ khoa học nhận thức:
| Thời gian sau khi học | Còn nhớ được (không ôn tập) |
|---|---|
| 20 phút | ~58% |
| 1 giờ | ~44% |
| 24 giờ | ~33% |
| 1 tuần | ~25% |
| 1 tháng | ~21% |
Trong 24 giờ, hai phần ba những gì bạn học đã biến mất. Trong một tuần, ba phần tư.
Đây không phải lỗi thiết kế. Não bạn tiêu thụ khoảng 20% năng lượng cơ thể trong khi chỉ chiếm 2% trọng lượng. Garbage collection tích cực là feature, không phải bug.
Phát hiện thứ hai của Ebbinghaus mới là điều thay đổi tất cả: mỗi lần bạn recall thành công một ký ức trước khi nó mất hoàn toàn, forgetting curve reset — nhưng ở độ dốc nông hơn. Bộ nhớ dần trở nên đề kháng phân rã với mỗi lần retrieval thành công.
Tức là: không phải học nhiều hơn mới nhớ được. Mà là lên lịch ôn đúng thời điểm.
Code Analogy: Bộ Nhớ Như Distributed Cache Với Garbage Collector
Hãy nghĩ về long-term memory của bạn như một distributed cache với aggressive garbage collector chạy theo lịch bạn không thể quan sát trực tiếp.
interface MemoryEntry {
item: string;
ttl: number; // Time To Live — ngày trước khi GC prune
strength: number; // Kháng cự với garbage collection
lastReviewed: Date;
}
function onSuccessfulRecall(entry: MemoryEntry): void {
// Mỗi recall reset TTL và tăng resistance to pruning
entry.ttl = entry.ttl * entry.strength;
entry.strength = entry.strength * 1.3; // Tương đương ease factor SM-2
entry.lastReviewed = new Date();
}
function onFailedRecall(entry: MemoryEntry): void {
// Recall thất bại: về TTL 1 ngày, strength floor tại 1.3
entry.ttl = 1;
entry.strength = Math.max(entry.strength * 0.75, 1.3);
}
Không có reinforcement, GC chạy và xóa entry. Mỗi lần bạn recall thành công trước khi GC fires, bạn extend TTL và tăng strength — interval review tiếp theo dài hơn.
Đây là core mechanic của spaced repetition: lên lịch review vào moment cuối cùng có thể trước khi GC fires.
Không phải ngay sau khi học (quá sớm — recall dễ dàng và hầu như không tăng cường bộ nhớ). Không phải sau khi đã quên (quá muộn — GC đã chạy). Chính xác ở điểm inflection.
Tại Sao Hầu Hết Phương Pháp Học Là Scheduling Bug
Đây là bug trong hầu hết cách học từ vựng, được viết như code:
// ❌ Điều hầu hết app và thói quen học làm
function scheduleNextReview(word, daysSinceStudied) {
return "tomorrow"; // Fixed interval, bỏ qua memory state hoàn toàn
}
// ❌ Điều cramming (nhồi nhét) làm
function crammingSchedule(wordList) {
// Ôn tất cả trong một session bất kể recall cá nhân
return wordList.map(word => reviewNow(word));
// Kết quả: retention tốt ngắn hạn, gần như 0 sau 1 tuần
}
Bug: fixed-interval review đối xử với tất cả từ vựng như nhau, bất kể bạn biết mỗi từ tốt đến đâu. Bạn ôn những từ đã master quá thường xuyên (lãng phí thời gian) và những từ cứ quên lại không đủ thường xuyên (chúng biến mất).
// ✅ Điều spaced repetition làm
function scheduleNextReview(word, recallPerformance, currentEaseFactor) {
if (recallPerformance < 0.6) {
return 1; // Recall thất bại: ôn ngay ngày mai
}
// Recall thành công: interval tăng trưởng exponential theo ease factor
const nextInterval = Math.round(word.lastInterval * currentEaseFactor);
return nextInterval;
}
// Từ nhất quán được đánh giá "Good" với ease factor mặc định 2.5:
// Ngày 1 → Ngày 2 → Ngày 7 → Ngày 18 → Ngày 45 → Ngày 112 → Ngày 280...
// Từ nhất quán bị fail (ease factor giảm xuống floor 1.3):
// Ngày 1 → Ngày 1 → Ngày 1 → Ngày 1... (hàng ngày cho đến khi recall được đúng)
Spaced repetition là patch cho scheduling bug. Lịch ôn cá nhân hóa, theo từng từ, dựa trên recall performance thực tế — không phải lịch cố định.
Thuật Toán SM-2: Scheduler Triển Khai Giải Pháp
Spaced repetition hiện đại sử dụng SM-2 (SuperMemo 2), được phát triển bởi Piotr Woźniak năm 1987. Thuật toán này là nền tảng của Anki, SuperMemo, và Wordrop.
Mỗi từ trong vocabulary list của bạn có hai giá trị:
| Thuộc tính | Ý nghĩa | Giá trị khởi đầu |
|---|---|---|
| Interval (I) | Ngày đến lần review tiếp theo | 1 ngày |
| Ease Factor (EF) | Interval tăng nhanh như thế nào | 2.5 |
Sau mỗi review, bạn đánh giá recall:
| Đánh giá | Ý nghĩa | Interval mới | EF thay đổi |
|---|---|---|---|
| Again (0) | Quên hoàn toàn | Reset về 1 ngày | −0.20 (floor: 1.3) |
| Hard (1) | Recall khó khăn | ×1.2 | −0.15 |
| Good (3) | Recall đúng | ×EF | Không đổi |
| Easy (5) | Recall ngay lập tức | ×EF | +0.10 |
Từ nhất quán đánh giá "Good" với EF = 2.5:
Review 1: Ngày 1
Review 2: Ngày 3 (interval × 1)
Review 3: Ngày 8 (3 × 2.5 ≈ 7.5)
Review 4: Ngày 21 (8 × 2.5)
Review 5: Ngày 53 (21 × 2.5)
Review 6: Ngày 132 (53 × 2.5)
Review 7: Ngày 330 (132 × 2.5) ← bộ nhớ gần như vĩnh cửu
Từ nhất quán bị fail (EF giảm xuống floor 1.3):
Review 1: Ngày 1 → Again → Ngày 1
Review 2: Ngày 1 → Again → Ngày 1
... ← ở lại hàng ngày cho đến khi recall được chính xác
Design insight quan trọng: SM-2 không để bạn "tốt nghiệp" một từ bạn chưa thực sự học. Nó trung thực về per-word recall theo cách không có fixed-interval system nào có thể.
Phần Ngược Đời: Vật Lộn Để Nhớ Chính Là Cơ Chế
Đây là điều làm nhiều developer ngạc nhiên khi lần đầu tiếp cận spaced repetition:
Recall càng khó, bộ nhớ tạo ra càng mạnh.
Các nhà khoa học nhận thức gọi đây là desirable difficulty effect — hiệu ứng "độ khó mong muốn" (Bjork, 1994). Khi recall dễ dàng — bạn vừa ôn từ này hôm qua — não hầu như không tăng cường memory trace vì không có gì khó khăn trong quá trình đó.
Khi recall tốn công — bạn không thấy từ này trong ba tuần và phải thực sự tìm kiếm — sự vật lộn đó tốn kém, và bộ nhớ tăng cường đáng kể.
# Model đơn giản hóa về memory strengthening từ retrieval effort
def memory_strengthening(recall_effort: float) -> float:
"""
recall_effort: 0.0 (effortless) đến 1.0 (maximum struggle)
returns: memory_strength_gained (phi tuyến — struggle hiệu quả không cân xứng)
"""
return 0.3 + (0.7 * recall_effort ** 0.5)
# Recall dễ — ôn từ hôm qua
easy = memory_strengthening(0.1) # → 0.52 (tăng cường tối thiểu)
# Recall tốn công — không thấy từ 3 tuần
hard = memory_strengthening(0.8) # → 0.93 (tăng cường gần tối đa)
Hàm ý thực tế: khi một từ cảm thấy khó để nhớ lại, đó không phải thất bại — đó là cơ chế đang hoạt động. Sự vật lộn chính là thứ xây dựng bộ nhớ bền vững. Bỏ qua từ khó hoặc đánh giá chúng "Easy" để cảm thấy productive sẽ phá vỡ toàn bộ hệ thống.
Tại Sao Điều Này Đặc Biệt Quan Trọng Với Từ Vựng Kỹ Thuật
Developer học tiếng Anh hoặc tiếng Nhật cho công việc đối mặt với một phiên bản đặc biệt của vấn đề này.
Từ vựng kỹ thuật — idempotent, throughput, deprecate, regression, graceful degradation — có xu hướng xuất hiện theo cụm: trong tuần review code, trong API docs bạn đang đọc, trong sprint meeting. Bạn gặp một từ liên tục trong một tuần, rồi nó biến mất khỏi context trong một tháng.
Không có review được lập lịch đúng theo forgetting curve, từ vựng kỹ thuật đó decay theo pattern y hệt mọi thứ khác:
Đọc "idempotent" trong docs → hiểu →
không thấy 3 tuần →
gặp lại trong PR review → blank →
tra lại → cảm thấy chán nản
Vòng lặp này không liên quan đến thông minh. Nó liên quan đến việc thiếu một review được lập lịch trước khi GC fired.
Fix: đối xử với từ vựng kỹ thuật giống như bạn đối xử với code dependencies. Bạn không chờ đến khi library bị break mới check — bạn maintain nó chủ động. Logic tương tự áp dụng cho vocabulary.
Lịch Ôn Tối Ưu (Dựa Trên Forgetting Curve)
Nếu bạn thiết kế lịch ôn thủ công — không dùng algorithm — đây là điều nghiên cứu nói nó nên trông như thế nào cho từ học từ đầu:
| Lần ôn | Thời điểm | Retention dự kiến tại thời điểm ôn | Ghi chú |
|---|---|---|---|
| Ôn 1 | Ngày 1 | ~58% | Cửa sổ quan trọng — không bỏ qua |
| Ôn 2 | Ngày 3–4 | ~40% | Recall tốn công → tăng cường mạnh |
| Ôn 3 | Ngày 10–14 | ~35% | Bắt đầu cảm thấy tự nhiên hơn |
| Ôn 4 | Ngày 30–35 | ~30% | Tiến gần long-term stability |
| Ôn 5 | Ngày 90+ | ~25% | Gần như vĩnh cửu tại điểm này |
Chú ý: mỗi interval dài hơn khi ease factor tích lũy. Sau 5–7 lần review thành công trong 3–6 tháng, từ đó persist một cách đáng tin cậy với chỉ cần củng cố thỉnh thoảng.
Đây là hiệu ứng compound. Giống như lãi suất kép — hành động nhỏ, nhất quán vào đúng thời điểm tạo ra kết quả tốt hơn theo cấp số nhân so với nỗ lực lớn, không đều đặn.
Nguyên Tắc Kỹ Thuật: Chạy Review Trước Khi GC Fires
Một câu tóm tắt tất cả những điều trên:
Ôn ngay trước ngưỡng quên lãng — không phải ngay sau khi học, không phải lâu sau khi đã quên, mà chính xác tại điểm của desirable difficulty tối đa.
Hệ thống spaced repetition được tune tốt duy trì 85–95% vocabulary retention chỉ với 10–20 phút review hàng ngày. Phương pháp học truyền thống với 10× thời gian đó tạo ra 20–40% retention.
Sự khác biệt không phải nỗ lực. Là lập lịch.
Não bạn có garbage collector. Forgetting curve mô tả lịch của nó. Spaced repetition là caching strategy chạy review trước khi GC fires — để từ vựng ở trong bộ nhớ thay vì bị pruned.
Để hiểu cách tích hợp spaced repetition vào workflow hàng ngày mà không cần thêm thời gian học riêng, xem: Cách developer học 1.000 từ mà không cần một buổi học nào →
Xem spaced repetition trong thực tế với Wordrop →
Câu Hỏi Thường Gặp
Forgetting Curve Ebbinghaus vẫn được coi là hợp lệ trong khoa học nhận thức hiện đại không?
Có. Pattern phân rã exponential đã được tái tạo trong hàng trăm nghiên cứu trên các loại tài liệu, ngôn ngữ, quần thể và thang thời gian khác nhau kể từ năm 1885. Tỷ lệ retention cụ thể thay đổi theo độ khó tài liệu và sự khác biệt cá nhân, nhưng hình dạng phân rã exponential và memory-strengthening effect của timed retrieval là một trong những phát hiện mạnh nhất trong tâm lý học nhận thức.
Tại sao não không giữ lại mọi thứ nó tiếp xúc?
Tiết kiệm năng lượng. Não tiêu thụ khoảng 20% năng lượng cơ thể trong khi chỉ chiếm 2% trọng lượng. Duy trì tất cả thông tin được encode sẽ không bền vững về mặt trao đổi chất. Garbage collection — quên lãng — là tối ưu hóa chủ động, không phải lỗi thiết kế.
Nếu tôi đã biết về forgetting curve, tại sao tôi vẫn quên từ?
Vì biết về forgetting curve không tự động tạo ra lịch review. Curve cho bạn biết điều gì xảy ra. Thuật toán spaced repetition cho bạn biết khi nào cần ôn. Không có automated scheduling, bạn vẫn phụ thuộc vào willpower để ôn đúng khoảng thời gian — điều này luôn thất bại dưới áp lực công việc thực tế.
SM-2 có phù hợp với việc học từ vựng tiếng Nhật không, hay chỉ tiếng Anh?
SM-2 là language-agnostic — nó schedule review dựa trên recall performance, bất kể ngôn ngữ nào. Tiếng Nhật thực ra là một trong những use case phổ biến nhất cho SRS vì memory load cao (kanji, vocabulary, reading) và forgetting curve đặc biệt dốc với những người không sống trong môi trường tiếng Nhật. Wordrop hỗ trợ cả tiếng Anh lẫn tiếng Nhật.
Tôi nên ôn bao nhiêu từ mỗi ngày để không quá tải?
5–10 từ mới mỗi ngày là sustainable cho hầu hết người học. Mức này tạo ra daily review queue khoảng 15–25 items tổng cộng (mới + scheduled reviews), mất 10–20 phút rải trong ngày. Thêm nhiều từ hơn bạn có thể ôn thực sự tạo ra backlog — và backlog đang tích lũy giết động lực. Nếu queue cảm thấy quá lớn, tạm dừng thêm từ mới và clear backlog trước.
