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) 지금 이 순간 떠올릴 수 있을 확률 지금 물어보면 맞힐까

기억할 확률은 마지막 복습 뒤로 시간이 지날수록 떨어져요. 안정도가 큰 단어일수록 천천히 떨어지고요. 망각곡선을 단어마다 따로 그리는 셈이에요.

복습할 때마다 일어나는 일

  1. 맞히면 안정도가 커져요. 이때 잊을락 말락 할 때 맞힐수록 더 많이 커져요. 어렵게 떠올린 기억이 더 단단해진다는 연구 결과(Pyc & Rawson, 2009)와 같은 방향이에요.
  2. 틀리면 안정도가 크게 줄고 난이도가 올라가요. 다음 복습이 가까워지고, 그 뒤로도 간격이 천천히 늘어나요.
  3. 그다음 복습 날짜는 기억할 확률이 목표치(예: 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) 때문이에요. 답하는 데 걸린 시간도 채점에 쓰지 않아요. 모든 복습 기록은 기기 안에 남겨 두었어요.

참고문헌

다른 공부법 글

이 글과 이어지는 단어장

읽은 방법 그대로,
앱에서 매일 조금씩.

App Store에서 받기