FSRS란? 단어마다 복습 날짜를 계산하는 간격 반복 알고리즘
간격 반복 앱을 쓰면 "이 단어는 2일 뒤, 저 단어는 46일 뒤"처럼 단어마다 복습 날짜가 달라요. 이 날짜를 정하는 계산 방법을 간격 반복 알고리즘이라고 해요. 그중 요즘 가장 많이 쓰이는 게 FSRS예요. 어떻게 계산하는지 수식 없이 풀어 볼게요.
세 줄 요약
- FSRS는 단어마다 기억이 얼마나 단단한지(안정도)와 얼마나 어려운지(난이도)를 기록하고, 지금 기억할 확률을 계산해요.
- 기억할 확률이 목표치(보통 90%)까지 떨어질 때를 다음 복습 날짜로 잡아요. 그래서 맞힐수록 간격이 빠르게 길어져요.
- 고정 간격표보다 정확하지만, 상위권 알고리즘끼리의 차이는 작아요. 중요한 건 꾸준히 복습하는 것이에요.
간격 반복 알고리즘의 짧은 역사
- 라이트너 상자(1970년대): 카드를 상자 여러 칸에 넣고, 맞히면 다음 칸(더 긴 간격)으로, 틀리면 첫 칸으로 보내는 방식이에요. 종이 카드로도 할 수 있어 지금도 많이 써요.
- SM-2(1987): 폴란드의 워즈니악(Woźniak)이 만든 슈퍼메모(SuperMemo)의 계산식이에요. 카드마다 '쉬움 정도'를 두고 이전 간격에 곱해 다음 간격을 정해요. 안키가 오랫동안 이 방식을 썼어요.
- 데이터 기반 모델(2010년대~): 수많은 학습 기록으로 "이 사람이 이 단어를 언제 잊을지"를 예측하는 모델이 나왔어요. 듀오링고의 HLR(Settles & Meeder, 2016)이 대표적이고, 회사 설명에 따르면 라이트너 방식보다 예측 오차가 절반 정도였어요.
- FSRS(2022~): 중국 단어 앱 모모(MaiMemo)의 2억 2천만 건 학습 기록으로 만든 기억 모델(Ye 외, 2022)이 바탕이에요. 오픈소스로 공개됐고, 안키도 2023년 23.10 버전부터 FSRS를 쓸 수 있게 했어요.
FSRS가 단어마다 기억하는 세 가지
FSRS는 단어(카드)마다 세 가지 값을 다뤄요.
| 값 | 뜻 | 쉽게 말하면 |
|---|---|---|
| 안정도(Stability) | 기억할 확률이 90%로 떨어지기까지 걸리는 날 수 | 이 기억이 얼마나 단단한가 |
| 난이도(Difficulty) | 1~10 사이 값. 클수록 잘 안 외워지는 단어 | 이 단어가 나한테 얼마나 어려운가 |
| 기억할 확률(Retrievability) | 지금 이 순간 떠올릴 수 있을 확률 | 지금 물어보면 맞힐까 |
기억할 확률은 마지막 복습 뒤로 시간이 지날수록 떨어져요. 안정도가 큰 단어일수록 천천히 떨어지고요. 망각곡선을 단어마다 따로 그리는 셈이에요.
복습할 때마다 일어나는 일
- 맞히면 안정도가 커져요. 이때 잊을락 말락 할 때 맞힐수록 더 많이 커져요. 어렵게 떠올린 기억이 더 단단해진다는 연구 결과(Pyc & Rawson, 2009)와 같은 방향이에요.
- 틀리면 안정도가 크게 줄고 난이도가 올라가요. 다음 복습이 가까워지고, 그 뒤로도 간격이 천천히 늘어나요.
- 그다음 복습 날짜는 기억할 확률이 목표치(예: 90%)까지 떨어지는 날로 잡아요.
실제로 계산해 보면
잊기전에 앱과 같은 설정(ts-fsrs 5.4.2 기본값, 목표 기억률 90%)으로 새 단어 하나를 계산해 봤어요. 표의 숫자는 각 복습 뒤에 잡힌 다음 복습까지의 날 수예요.
| 복습 | 계속 맞힐 때 | 3번째에 한 번 틀렸을 때 | 첫 문제에 틀렸을 때 |
|---|---|---|---|
| 1번째 | 맞힘 → 2일 | 맞힘 → 2일 | 틀림 → 1일 |
| 2번째 | 맞힘 → 11일 | 맞힘 → 11일 | 맞힘 → 2일 |
| 3번째 | 맞힘 → 46일 | 틀림 → 2일 | 맞힘 → 7일 |
| 4번째 | 맞힘 → 163일 | 맞힘 → 5일 | 맞힘 → 19일 |
| 5번째 | 맞힘 → 498일 | 맞힘 → 12일 | 맞힘 → 48일 |
| 6번째 | 맞힘 → 28일 | 맞힘 → 111일 | |
| 7번째 | 맞힘 → 60일 |
몇 가지가 보여요.
- 계속 맞히면 간격이 3~5배씩 늘어나요. 다섯 번만 맞히면 다음 복습이 1년 넘게 뒤예요.
- 한 번 틀리면 다시 짧은 간격에서 시작하고, 난이도가 올라가서 그 뒤로도 간격이 2배 남짓씩 천천히 늘어요. 헷갈리는 단어를 자주 보여 주는 이유예요.
- 처음에 틀린 단어도 그 뒤로 계속 맞히면 결국 긴 간격으로 가요.
같은 날 안에서 다시 묻는 짧은 학습 단계는 표에서 뺐어요. 계산은 FSRS 기본 매개변수 그대로이고, 사람마다 기록이 쌓인 뒤 매개변수를 맞추면 숫자가 달라져요.
목표 기억률 90%는 무엇을 뜻할까
목표 기억률은 "복습할 때 이 정도 확률로 맞히게 하자"는 기준이에요.
- 높이면(예: 95%) 잊기 전에 더 일찍 보여 줘서 덜 틀리지만, 복습이 훨씬 많아져요.
- 낮추면(예: 80%) 복습은 줄지만 더 많이 틀리고, 틀린 단어를 다시 익히느라 시간이 들어요.
90%는 FSRS와 안키의 기본값이에요. 복습 양과 기억의 균형이 좋은 지점으로 많이 써요.
FSRS가 가장 좋은 알고리즘일까
공개된 비교 자료(SRS Benchmark: 안키 사용자 약 1만 명, 복습 약 3억 5천만 건)를 보면 FSRS는 예측 정확도에서 상위권이에요. 로그 손실(낮을수록 좋음)이 FSRS-6 0.346, FSRS-7 0.340, 듀오링고 방식(HLR) 0.469였어요.
다만 같은 자료에서 "최근 정답률을 평균 내는" 단순한 방법도 0.337로 비슷했어요. 이 방법은 다음 복습 날짜를 계산하지는 못하지만, 상위권 알고리즘끼리의 차이는 크지 않다는 걸 보여 줘요. 어떤 알고리즘을 쓰느냐보다 매일 복습하느냐가 훨씬 중요해요. 하루 분량을 정하는 법은 영단어 하루 몇 개 외워야 할까에 정리했어요.
잊기전에는 이렇게 만들었어요
잊기전에는 FSRS의 공개 구현인 ts-fsrs를 기본 설정 그대로(목표 기억률 90%) 써요. 채점은 맞았는지 틀렸는지만 봐요. "쉬웠어요/어려웠어요"를 스스로 고르게 하지 않는 건, 사람들이 자기 기억을 잘 예측하지 못한다는 연구(Karpicke & Roediger, 2008; Kornell, 2009) 때문이에요. 답하는 데 걸린 시간도 채점에 쓰지 않아요. 모든 복습 기록은 기기 안에 남겨 두었어요.
참고문헌
- Woźniak, P. A. (1990). Optimization of learning (석사 논문, SM-2 알고리즘 설명). https://super-memory.com/english/ol/sm2.htm
- Settles, B., & Meeder, B. (2016). A trainable spaced repetition model for language learning. Proceedings of ACL 2016, 1848–1858. https://aclanthology.org/P16-1174
- Ye, J., Su, J., & Cao, Y. (2022). A stochastic shortest path algorithm for optimizing spaced repetition scheduling. KDD '22, 4381–4390. https://doi.org/10.1145/3534678.3539081
- Open Spaced Repetition. SRS Benchmark. https://github.com/open-spaced-repetition/srs-benchmark
- Open Spaced Repetition. ts-fsrs. https://github.com/open-spaced-repetition/ts-fsrs
- Pyc, M. A., & Rawson, K. A. (2009). Testing the retrieval effort hypothesis. Journal of Memory and Language, 60(4), 437–447. https://doi.org/10.1016/j.jml.2009.01.004
- Karpicke, J. D., & Roediger, H. L. (2008). The critical importance of retrieval for learning. Science, 319(5865), 966–968. https://doi.org/10.1126/science.1152408
- Kornell, N. (2009). Optimising learning using flashcards: Spacing is more effective than cramming. Applied Cognitive Psychology, 23(9), 1297–1317. https://doi.org/10.1002/acp.1537

