Get AI summaries of any video or article — Sign up free
Anki를 위한 새로운 알고리즘 | FSRS 적용하기 thumbnail

Anki를 위한 새로운 알고리즘 | FSRS 적용하기

코리안키·
4 min read

Based on 코리안키's video on YouTube. If you like this content, support the original creators by watching, liking and subscribing to their content.

TL;DR

FSRS 적용의 목표는 Anki의 다음 복습 간격을 기존 SM2 방식에서 FSRS 계산값으로 재조정하는 데 있다.

Briefing

FSRS를 Anki에 적용하면, 카드의 다음 복습 간격이 기존 스케줄링 방식 대신 FSRS가 계산한 값으로 재조정된다. 핵심은 “학습 주기를 크게 갈아엎지 않으면서도” 더 나은 장기 스케줄링을 노리는 데 있다. 다만 복습 간격이 약간 바뀌는 만큼, 진행 전 백업을 권장하고 학습 효과 향상 여부는 개인차가 있을 수 있다고 짚는다.

Anki가 기본으로 쓰는 스케줄러는 SM2 알고리즘이며, 이는 1987년에 만들어진 오래된 방식이다. FSRS는 이런 기존 알고리즘을 보완하려는 여러 시도 중 하나로, 사용자가 입력한 난이도와 카드의 상태를 바탕으로 다음 복습 시점을 계산하도록 설계됐다. 적용에는 조건이 붙는다. Anki 2.1.55 이상이 필요하고, 설정에서 V3 스케줄러가 켜져 있어야 카드별 데이터 지원이 가능하다. 또한 FSRS는 장기 스케줄링에만 영향을 주며, New/Learn 카드(색으로는 파란색/빨간색)는 FSRS의 직접 영향 범위가 아니라는 점도 강조된다. 그래서 개발자는 카드들을 빠르게 졸업시키는 쪽을 권한다. 기존 SM2 설명에서 언급됐던 “Ease Hell” 문제를 FSRS가 자동으로 방지해주기 때문에, 빠른 졸업 전략이 덜 위험해진다는 논리다.

실제 적용 절차는 크게 세 단계다. 먼저 FSRS의 코드를 Anki에 넣는다. FSRS 공식 GitHub의 Usage 섹션에서 Scheduler 코드를 복사해, Anki의 Deck 옵션에서 Custom Scheduling 영역에 붙여넣는다. 이때 w 값들은 개발자 환경에 최적화돼 있으므로, 개인 덱 데이터에 맞게 재최적화해야 한다. 이를 위해 GitHub의 Optimizer를 통해 “Open in Colab”을 실행하고, 구글 계정으로 로그인한 뒤 덱을 업로드한다. 덱은 Export 시 apkg보다 collection 패키지(.colpkg)를 사용하고, 미디어 파일은 불필요하니 체크를 해제한다. Colab에서 런타임을 실행하면 Result에 최적화된 w 값이 나오며, 그 줄 전체를 Anki Deck의 Custom Scheduling 값으로 교체한다. 동시에 requestRetention으로 목표 기억 성공률(예: 80~90% 범위)을 설정하고, Maximum Interval Easy Bonus/Hard Interval도 기존 설정값을 그대로 반영한다.

다음으로 FSRS 적용 후 “재조정”을 수행한다. Anki 애드온 페이지에서 FSRS helper를 설치하고, 추가로 Anki WebView Inspector도 설치한 뒤 Anki를 재시작한다. 상단 도구 탭의 Reschedule all cards를 누르면 카드 복습 주기가 FSRS 기준으로 다시 계산된다. 안드로이드 AnkiDroid에서는 복습 시 FSRS가 적용되지 않으므로, PC에서 재조정 버튼을 눌러 동기화하는 방식이 권장된다.

마지막으로 적용 여부를 검증한다. Deck을 선택해 Study Now를 실행한 뒤 Inspect로 개발자 도구를 열고, 실행 중 FSRS 코드가 실제로 동작하는지 확인한다. 이후부터는 복습할 때마다 FSRS가 다음 간격을 계산한다. 영상은 FSRS가 기억력의 “극적인” 향상을 보장하진 않지만, 오래된 Anki 알고리즘이 개선되고 있다는 점 자체가 의미 있다고 정리한다. True Retention 애드온을 함께 써서 기억 성공률을 확인하며 복습을 이어가라고 권한다.

Cornell Notes

FSRS는 Anki의 다음 복습 간격을 계산하는 스케줄러를 기존 SM2에서 FSRS로 바꾸는 방식이다. 적용 전제는 Anki 2.1.55 이상과 V3 스케줄러 활성화이며, New/Learn(파란색/빨간색)은 FSRS의 직접 영향 범위가 아니다. GitHub의 Scheduler 코드를 Anki Deck의 Custom Scheduling에 붙여넣고, Colab 기반 Optimizer로 덱 데이터를 업로드해 w 값을 개인화한 뒤 requestRetention(목표 성공률) 등을 설정한다. 이후 FSRS helper와 Reschedule all cards로 카드 복습 주기를 재조정하고, Inspect로 FSRS 코드가 실제로 실행되는지 확인한다. 안드로이드 AnkiDroid에서는 복습 중 FSRS가 적용되지 않으므로 PC에서 재조정하는 흐름이 필요하다.

FSRS를 쓰려면 Anki에서 어떤 조건을 먼저 맞춰야 하나?

Anki 2.1.55 버전 이상이 필요하다. 그보다 이전 버전은 카드별 데이터 지원이 되지 않는다. 또한 설정에서 V3 스케줄러가 켜져 있는지 확인해야 한다. 이 두 조건이 충족돼야 Deck 옵션에 FSRS 스케줄링 코드를 적용하고 카드별로 계산이 이뤄진다.

왜 w 값은 그대로 두면 안 되고, 반드시 최적화해야 하나?

FSRS 공식 Usage의 Scheduler 코드에는 w라는 파라미터가 포함되는데, 이 값들은 개발자 데이터에 최적화돼 있다. 그래서 자신의 Anki 덱 데이터에 맞게 Colab의 Optimizer로 덱을 업로드해 분석한 뒤, Result에 나온 w 값(해당 줄 전체)을 Anki Deck의 Custom Scheduling 값으로 교체해야 한다.

requestRetention은 무엇을 조절하며, 어떤 범위를 권장하나?

requestRetention은 목표 기억 성공률(기억이 유지될 확률)을 설정하는 값이다. 영상에서는 90%에서 80% 사이에서 원하는 값을 입력하라고 안내한다. 즉, 성공률 목표에 따라 복습 간격이 보수적/공격적으로 조정될 수 있다.

FSRS가 영향을 주는 카드 범위와, 빠른 졸업을 권하는 이유는 무엇인가?

FSRS는 장기적인 스케줄링에만 영향을 미친다. New 카드와 Learn 카드(파란색/빨간색)는 FSRS의 직접 영향이 없다고 설명된다. 또한 개발자는 Anki 기본값을 사용해 카드를 빨리 졸업시키라고 조언한다. 기존 SM2 설명에서 언급된 Ease Hell 문제는 FSRS가 자동으로 방지해주기 때문에, 빠른 졸업 전략이 상대적으로 안전해진다는 논리다.

FSRS 적용 후 실제로 복습 주기를 바꾸려면 어떤 단계를 거쳐야 하나?

FSRS helper 애드온을 설치하고, 추가로 Anki WebView Inspector도 설치한 뒤 Anki를 재시작한다. 재시작 후 상단 도구 탭에 Reschedule all cards 메뉴가 나타나며, 이를 누르면 카드의 복습 주기가 FSRS에 맞춰 재조정된다. 이 재조정이 있어야 기존에 계산돼 있던 복습 간격이 새 스케줄러 기준으로 바뀐다.

안드로이드 AnkiDroid에서는 왜 추가 조치가 필요하나?

안드로이드 버전 Anki(AnkiDroid)에서는 복습을 할 때 FSRS가 적용되지 않는다고 안내한다. 따라서 휴대폰에서 복습하더라도, PC에서 Reschedule all cards 같은 재조정 버튼을 눌러 일정이 FSRS 기준으로 다시 맞춰지도록 하는 흐름이 권장된다.

Review Questions

  1. FSRS 적용 절차에서 ‘Scheduler 코드 붙여넣기’와 ‘w 값 최적화’가 각각 왜 필요한지 설명해보라.
  2. FSRS가 New/Learn 카드(파란색/빨간색)에 직접 영향을 주지 않는다는 말이 스케줄링 결과에 어떤 의미를 가질까?
  3. Reschedule all cards를 누르지 않으면 기존 복습 간격은 어떻게 될 가능성이 큰가?

Key Points

  1. 1

    FSRS 적용의 목표는 Anki의 다음 복습 간격을 기존 SM2 방식에서 FSRS 계산값으로 재조정하는 데 있다.

  2. 2

    적용 전제는 Anki 2.1.55 이상과 V3 스케줄러 활성화이며, 이 조건이 충족돼야 카드별 데이터 기반 스케줄링이 가능하다.

  3. 3

    Scheduler 코드의 w 값은 개발자 데이터에 최적화돼 있으므로, Colab Optimizer로 덱을 업로드해 개인화된 w로 교체해야 한다.

  4. 4

    requestRetention은 목표 기억 성공률을 정하며, 영상에서는 80~90% 범위에서 설정하라고 안내한다.

  5. 5

    FSRS는 장기 스케줄링에만 영향을 주며 New/Learn(파란색/빨간색)은 직접 영향 범위가 아니다.

  6. 6

    FSRS helper 설치 후 Reschedule all cards로 카드 복습 주기를 실제로 다시 계산해야 기존 간격이 바뀐다.

  7. 7

    안드로이드 AnkiDroid에서는 복습 중 FSRS가 적용되지 않으므로 PC에서 재조정 흐름을 유지하는 것이 권장된다.

Highlights

FSRS는 장기 스케줄링에 집중하며, New/Learn 카드(파란색/빨간색)는 직접 영향 범위가 아니다.
w 값은 그대로 쓰면 안 된다—Colab Optimizer로 덱 데이터를 분석해 Result의 w를 Anki Custom Scheduling에 교체해야 한다.
Reschedule all cards를 눌러야 카드 복습 주기가 FSRS 기준으로 실제 재조정된다.
Inspect(개발자 도구)로 FSRS 코드가 실행되는지 확인하면 적용 여부를 검증할 수 있다.

Topics

  • FSRS 적용
  • Anki 스케줄러
  • Colab Optimizer
  • Custom Scheduling
  • Reschedule all cards

Mentioned

  • FSRS
  • SM2
  • V3