9P by GN⁺ 1일전 | ★ favorite | 댓글 1개
  • 과거에 학습한 자료의 복습 간격을 늘리는 학습 기법인 Spaced Repetition System은 적은 시간 투자로도 효과적인 장기 기억 형성을 제공함
  • 머신러닝 기반 예측으로 개인별 카드 스케줄링을 최적화하는 FSRS(Free Spaced Repetition Scheduler) 알고리듬으로 기존 방법보다 효율과 사용 만족도가 크게 향상됨
  • Anki 최신 버전에서 FSRS가 기본 스케줄러로 적용되어 대부분의 사용자가 이미 활용 중임
  • WaniKani, Bunpro 등의 서비스와 비교해 Anki와 FSRS 조합이 학습 효율과 유연성에서 우월함

간격 반복 시스템 개요

  • 다양한 분야에서 지식 습득과 장기 기억 유지를 위해 간격 반복 시스템이 활용됨
  • 학교 수업이나 취미 학습처럼 제한된 시간 내에서 효과적인 복습을 가능하게 하는 솔루션임
  • 플래시카드 형식으로 정보를 반복적으로 제시하며, 복습 간격을 사용자 반응에 따라 조절함
  • 하루에 20분씩 투자하면 1년에 3,650개 단어를 쉽게 외울 수 있음

기존의 스케줄링 방법과 한계

  • 초기 간격 반복 시스템에는 SuperMemo-2 알고리듬이 주로 쓰임
  • 이 방식은 “1일 뒤, 맞히면 6일 뒤, 다시 맞히면 15일 뒤, 나중엔 37.5일 뒤” 식으로 복습 간격이 늘어남
  • 오답일 경우엔 다시 1일 뒤로 초기화되어, 같은 카드를 반복적으로 짧은 간격으로 보게 되어 좌절감이 큼
  • 이 방식은 경험적, 임의적으로 정해진 규칙에 기반하여, 개별 지식 항목에 따라 최적화되어 있지 않음
  • 모든 정보의 기억 곡선이 동일하다고 가정하는 비현실적 전제가 존재함

FSRS: 개선된 머신러닝 기반 스케줄링

  • FSRS(Free Spaced Repetition Scheduler) 는 최신 머신러닝 기법을 기반으로, 복습 간격을 개별적으로 최적화함
  • “언제 카드의 회상 확률이 90%로 떨어지는지”를 예측 문제로 전환하여, 정확한 복습 시점을 산출함
  • FSRS 모델은 난이도(카드별 1~10), 안정성(100%→90%로 회상율이 떨어지는 기간), 회수 가능성(일수 경과 후 회상 확률)의 세 가지 함수를 곡선 피팅으로 구함
  • 21개의 파라미터를 이용해 대규모 리뷰 데이터에 맞춰 곡선을 최적화하며, 개인별 리뷰 이력을 반영해 파라미터를 재조정함
  • FSRS는 사용자가 원하는 목표 회상율(예: 90%)을 설정할 수 있고, 이에 따른 일일 학습량과 카운트를 시뮬레이션할 수 있음
    • 예를 들어, 70% 회상율로 설정할 때 일일 복습량은 줄고, 기억하는 카드 수는 오히려 늘어남

FSRS의 실제 적용

  • Anki는 2023-11 출시된 23.10 버전부터 기본 스케줄러로 FSRS를 채택함
  • FSRS를 활용하면 일일 복습 부담이 줄고, 틀린 카드를 복습할 때도 스트레스가 심하게 늘어나지 않음
  • 권장 설정에 따라 학습 효율과 학습량 균형을 최적화할 수 있음
  • 오픈소스 프로젝트로 여러 언어와 소프트웨어에서 구현이 가능함

다른 학습 서비스와의 비교

  • WaniKani, Bunpro 등 구독형 서비스의 경우, 정해진 간격만 제공하고, 개인 맞춤화된 조정이 없음
    • 예: 4시간, 8시간, 1일, 2일, 7일... 등 임의적 복습 주기 설정
  • 카드 오답 시 최소 단계로 초기화하지 않거나, 머신러닝 기반 예측이 없어 효율성이 크게 뒤처짐
  • 일정 간격이 지난 카드는 더 이상 다시 보지 않게 되어, 장기 지식 손실이 발생함
  • 이로 인해 학습자의 스트레스와 비효율이 누적됨

Anki의 장점

  • UI는 다소 불편할 수 있으나 고성능 학습 기능과 지속적 업데이트, 폭넓은 커스터마이징이 강점임
  • 실제로 다양한 분야와 단계의 학습자에 적합한 유연성을 제공함
  • 기초부터 고급 단계까지 장기적인 지식 구축에 최적임
  • 직접적인 사용자 경험을 바탕으로, 효과적인 학습 도구로 자리매김함

더 알아보기

  • 간격 반복의 원리, FSRS의 자세한 작동 방식 및 구현 예시는 아래 자료 참고
    • open-spaced-repetition/awesome-fsrs: 다양한 프로그래밍 언어와 소프트웨어에서의 FSRS 구현 목록
    • open-spaced-repetition/srs-benchmark: FSRS와 여러 알고리듬(예: SuperMemo-2, Duolingo 알고리듬 등) 비교 벤치마크 결과
      • 현재 FSRS보다 일관되게 더 좋은 성능을 보이는 것은 OpenAI Reptile 알고리듬 기반의 LSTM 신경망 정도임
Hacker News 의견
  • 나는 Trane의 창시자임을 강조하고 싶음 (https://github.com/trane-project/trane/). Trane은 Anki와 비슷한 시스템을 대체할 수 있는데, 하위 기술 요소 간 계층 구조가 명확한 대부분의 영역(음악, 어휘 학습 등)에 적용 가능함. Anki, SuperMemo 등 기존 시스템에는 미해결 이슈가 세 가지 있다고 생각함. 첫째, 암기 위주의 방식이 문제임. 나는 기억이 아닌 숙련도 기반 채점이 필요한 영역(음악 등)에도 적용할 수 있는 걸 원했음. 둘째, 계층 구조 정보가 없어서 대규모 기술 습득이 어려움. Anki는 Trane의 기능(하위 기술 의존성 기반 진도 제한과 숙련도 확인) 재현이 어려움. 셋째, 자신의 연습문제를 직접 만들 것을 요구함. 이는 상당히 시간이 들며 복잡한 기술에 대해선 전문가가 필요함. Trane은 사실상 완성되었고, 나는 음악 공부에 사용함. UI가 없어서 나만 사용 중이나, 무료로 일하기 싫으니 그러려니 함. 지금은 Trane 기반으로 문해력 튜터 개발 중. 완성 시 학생이 알파벳부터 대학 수준 독해·작문까지 최신 연구 기반으로 배울 수 있음. 연내 MVP 출시 목표임
  • SRS와 관련된 많은 논의와 발전을 목격함. 하지만 내가 보고 싶은, 그리고 정말 중요한 부분은 읽기·이해와 SRS 사이의 영역임. 웹 브라우저, PDF 등 기존 프로그램에서 Anki, Mochi 등 인기 SRS로 플래시카드를 쉽게 생성하는 독립 툴이 거의 없음. 이런 기능이 OS 통합처럼 자연스럽고 마찰 없이 동작해야 하며, "또 하나의 별도 앱"이 아닌 SRS로 쉽게 넘길 수 있는 파이프가 필요함. Mac 친화적이고 눈에 거슬리지 않는 그런 시스템이 필요함. 혹시 이런 툴 알면 알려주길 바람
    • “기존 프로그램에서 플래시카드를 쉽게 만든다”는 개념이 흔히 오해됨. SRS의 반 이상 가치는 직접 플래시카드로 만들 개념을 고르고, 유사점·차이점·속성 등을 탐색하는 과정에서 나옴. 힘들지만, 이 과정 자체가 이해에 큰 도움임. 하지만 이 능력이 어렵기 때문에 많은 사람이 SRS를 제대로 활용하지 못하고, 효과를 못 느끼고 포기하게 됨. 또 하나의 오해는 SRS가 단순 암기용이라는 점임. 실제로는 잘 설계하면 복잡한 주제의 이해에도 충분히 사용 가능함
    • 나는 Fresh Cards라는 플래시카드 앱을 만들었는데, 종종 사용자가 웹페이지나 PDF에서 플래시카드를 가져오는 기능을 문의함. 그런데 솔직히 그게 어떻게 동작해야 할지 아직 모름. 사용자가 직접 하이라이트 후 "카드로 만들기"를 클릭하는 방식이어야 할지, 아니면 자동으로 텍스트를 분석해서 질문·답 목록을 제시해주는 방식이어야 할지 고민임. 어떤 기준으로 뭘 카드화할지, 얼마나 세분화해야 할지 결정이 어려움. 특히 날짜나 이름 등 단순 사실을 뽑는 것은 어떤 콘텐츠에는 별로 도움이 안 됨. 결국 아주 열려있는 문제라서 모두의 니즈를 만족시키기 힘들 것 같음
    • macOS 서비스 모델이 이런 목적에 잘 맞는다고 생각함. 서비스란 다양한 앱에서 컨텍스트 기반으로 동작하며, 별도 개발 없이 앱 간 연동을 지원함. 예를 들어 텍스트를 선택, 우클릭, 서비스 메뉴에서 “New SRS Card” 같은 기능을 호출하면 바로 간단한 카드 생성이 가능함. SRS 앱에서 이런 서비스를 내장해주면 매우 빠르고 간편하게 카드 만들기 가능함
    • 나는 LLM에 시스템 프롬프트를 넣어 이 문제를 해결함. ChatGPT에서 개념을 이해한 뒤, 플래시카드 생성을 요구한 뒤 Mochi에 복사·붙여넣기 함. 향후에는 LLM과 Mochi 간 직접 카드 추가 통합이 더욱 발전할 것으로 기대함
    • 언어학습 맥락에서는 YouTube/Netflix 오디오 카드나 자막을 추출해서 “마이닝” 하는 아주 좋은 툴들이 있음. 어떤 것은 오픈소스 무료이지만, 처음 사용은 마찰이 있음. 유료 솔루션은 조금 더 친절함
  • LLM으로 학습할 때 추천 팁은, 토픽별 대화 내용을 csv로 구글 드라이브에 저장해 Anki에 동기화하는 MCP 툴을 만들라는 것임. 이 방식은 내 LLM 활용의 게임 체인저 였음. LLM이 장기적으로 보면 생각을 덜게 만들기도 하는데, 이왕 쓸 거라면 공부 도구로 활용하길 추천함
    • 나는 Anki 덱에서 다음날 복습 예정 카드를 골라 LLM이 새로운 문장들을 생성하게 하는 Python 스크립트를 만듦. 단순히 카드를 항상 외워 맞추는 게 아니라, 새로운 문맥에서도 단어 인지력을 키우는 데 목적이 있음. 다양한 문맥에서 학습함으로써 실제 언어 습득에 도움이 될 거라 기대함
    • 구체적으로 어떻게 csv를 Anki 카드로 동기화하며, LLM 결과를 csv로 만드는 MCP 구현이 어떻게 생겼는지 블로그 포스팅을 보고 싶음
    • ChatGPT 4o의 보이스 모드는 기본 중국어 학습에 정말 혁신적인 경험임. 집안에서 사물 이름 묻거나, 단어 간 관련성 질문, 짧은 문장 만들기와 문법 확인에 큰 도움이 됨. 아직 MCP는 없지만, 대화 내용을 구조화된 형식으로 요약해달라 할 수 있음
  • 내가 Anki에서 가장 불편한 점은 데이터 모델임. "노트 콜렉션"(직접 만들거나, LLM으로 생성하거나, 친구나 학생과 공유할 만한)을 계층적으로 관리하고, 거기서 최종적으로 학습할 카드 세트를 템플릿 기준으로 파생해야 한다고 여김. 복습 히스토리와 모델, 특정 상황에서 복습할 카드 제한 방법(중국어나 일본어 쓰기는 종이 필요하니 상황별로 덱을 가려서 활용) 등, 계층 분리 필요함. 반면 Anki는 이 모든 게 하나의 데이터베이스에 섞여 있고, 가져오기/내보내기/공유/외부 데이터 조작도 매우 불편함. 내 데이터 임의 조작이 안 될 때마다 좌절함. 혹시 이런 문제 없는 시스템 아는 사람?
    • 여러 노트 콜렉션, 세션별 카드 제한은 Anki 덱과 태그, Better Tags, 서브덱 기능 등으로 충분히 할 수 있음. 모든 덱이 별도 파일로 분리되고, 스페이스드 리핏션 모델도 FSRS 등 복수 지원임. 내보내기/공유는 파일 단위(압축 파일)로 쉽고, 외부 조작을 위한 라이브러리와 툴도 많고, 오픈소스·라이브러리 기반 구조로 데이터 추출이 쉬움. 기존 시스템 불만족을 Anki로 해결한 경우임
    • 당신이 언급한 모든 점이 사실과 다름. Anki는 훌륭한 오픈소스 문서화가 잘 되어있음. 프로그래밍 가능한 사람이라면 ChatGPT로 거의 모든 작업이 가능하고, 나는 sqlite 데이터베이스에서 데이터 마이닝도 자주 함
    • Anki 데이터 모델은 비효율적인 점은 많음. 실제로 테이블 한 줄에 JSON이 들어가는 상당히 임시방편적인 구성 등, 점진적으로 성장하다보니 어색한 구조임. 반대로 템플릿과 클로즈 삭제 기능(일부만 숨겨 여러 카드를 자동 생성)은 매우 우수해, 이제는 그 구조가 감사하게 느껴짐. 나는 클로즈 삭제·템플릿 도입을 위해 Fresh Cards의 스키마를 재설계 중임. 내 앱에서는 각 카드 속성이 테이블로 분화됨. Anki는 초창기 동기화 지원이 어렵던 이유가 이런 스키마와도 연관 있음
    • 언어 학습에만 해당되지만, 내 TheHardWay (https://thehardway.app) 같은 구조(플래시카드가 마크다운 노트와 통합)가 좋은 선택일 수 있음
    • 예를 들어 식당 관련 단어, 공항 관련 단어를 각 그룹으로 분리하면 사용자가 자연스럽게 연상 가능함
  • 나는 대학 때 다음과 같은 방식으로 스페이스드 리핏션을 활용함. 외워야 할 키를 세로로 워드 문서에 정리해서 PDF로 저장함. PDF의 각 키 옆에 주석 필드(값)를 만듦. 주석을 클릭해 답을 확인하며, 쉽게 맞출 때마다 주석을 왼쪽으로 옮기고, 헷갈릴 때는 오른쪽으로 다시 옮겼음. 결국 주석 표 위치로 복습 우선순위 조절 가능했음. 단점도 많았지만 나에게는 잘 맞았고, Anki의 비슷한 알고리즘이 생기기 전이라 오늘날이었다면 경험이 달랐을지도 모름
    • 이 방식이 흥미롭지만 설명만으로는 이미지가 잘 안 그려짐. 예시 파일이 있다면 보고 싶음
  • FSRS 실험에 관심 있다면, Open Spaced Repetition이 공식 Python, Typescript, Rust 패키지를 제공함 (각 깃허브 링크 안내). ts-fsrs와 rs-fsrs는 FSRS 6 지원함, py-fsrs도 곧 지원 예정. 또한, py-fsrs와 fsrs-rs는 과거 복습 기록 기반으로 모델 최적화까지 제공함
    • Chessbook의 오프닝 트레이닝에 Rust 패키지를 활용함. 매우 쓰기 쉽고, 사용자 부담은 줄이면서 기억률은 높임. FSRS 시스템이 정말 뛰어남
    • 루비(Ruby) 사용자라면 FSRS gem에 신카드 간격 이슈를 수정한 포크를 참고하길 바람 (https://github.com/arvindang/rb-fsrs). 원래 위 Python 버전에서 포팅함
  • 스페이스드 리핏션은 20년 째 인기를 누리지만, 만능해결책은 아님. 수십개의 앱, 수천번의 강연에도 불구하고, 결국 많은 사람이 항상 다이어트나 자기계발 참작처럼 중간에 포기함. “어린이 교육을 진짜 신경 쓴다면, Google이나 Apple이 매주 노트카드 작성을 요구하고 통과 시 폰 잠금을 해제하는 unlock 시스템을 내놔야 한다”고 생각한 적 있음. 물론 우회 기능이 있어야 하고 실제 설치하는 사람은 별로 없겠지만, 그 정도로 일상화될 필요가 있다고 봄
    • 스페이스드 리핏션은 "시간 최적화"에 초점이 있으나, 자기관리/동기부여에는 효과가 없음. 시간 부담이 크면 효율적이지만, 동기부여나 자기 통제가 힘들면 쉽게 번아웃됨. 나의 경우, Anki 덕에 GCSE와 A레벨 성공 후 심하게 번아웃돼 결국 휴학까지 감. 결과적으로 Anki는 성공의 원동력이자, 휴식의 계기도 됨
    • “만능해결책이 아니다”라는 발언은 기준 정의가 없어 공허함. 다이어트도 만능해결책이 아니듯, SRS를 6년 넘게 써온 나에겐 삶을 바꾼 경험임
    • SRS는 암기와 언어 습득 차이 이해가 부족한 이들에게는 관심이 부족함. 암기를 목표로 하는 사람에겐 환호 받지만, 나는 스페인어·프랑스어 읽기 능력 자체가 목표임. 단어/예문 반복 훈련은 공사장의 발판(비계)과 같음. 구조물을 세우는 데 직접적 사용은 안 하지만, 전체 공정을 크게 가속함. 암기와 언어 습득이 별개가 아니라 도움 관계임을 더 잘 안내할 수 있으면 좋겠음
    • 만능해결책 기대라면 실망만 있게 됨. 결국 “노동”이 필요함. 도구일 뿐임
    • SRS에는 진입장벽 높은 UX 문제가 있음. 1) 카드 생성 소요 시간 2) 자기채점 필요 3) 단일 프롬프트-답안 구조 4) 자기주도 학습 필요(스캐폴딩, 이해 단계). 더 근본적으로, SRS는 “정확한 질문-답변”에는 탁월하지만, 일반화가 약함. 실제로 지식 그래프 구성이 약함. 회상지식(암기)과 논리적 모델 지식의 차이를 보면, 암기는 거의 “사전 검색”처럼 작동하고, 논리적 모델(수학 개념 등)은 훨씬 복잡함. SRS 옹호자들은 논리모델도 “사실 집합” 암기가 기본이라 주장하지만, 결국 SRS의 실질적 가치는 “잘 정돈된 노트북” 이상의 실용성임. 그러나 천재 되기엔 한참 부족함
  • 10년 가까이 Anki를 사용하며, 개선되어야 할 것은 UI/디자인뿐이라고 생각함. 알고리즘 자동화보다도, 실제 인터페이스가 많은 신규 사용자에게 지루하다는 점이 더 큼. 강력한 파워유저 기능은 좋지만 직관성이 떨어짐. 스페이싱 효과는 인간 학습에서 매우 과소평가된 핵심임
    • AnkiDroid 메인테이너임. 현재 리뷰어 디자인을 완전히 새로 작업 중이며, 프로덕션 앱 “개발자 옵션”에서 확인 가능함. 디자인에 만족하지 못하지만 리소스가 많이 부족함. Android 쪽에 관심 있으면 연락 환영함
    • Anki를 사랑하지만, 전형적인 “엔지니어가 설계”한 제품임. 매우 강력하고, 깊이도 있지만 디자인이 투박하고 비직관적임. HN 독자 중 테크 덕후라면 익힐 수 있지만, 일반 Duolingo 사용자는 힘듦
    • 에디터 창이 몹시 불편함. 여기서 개선이 시급함. 메인 창 탭도 진짜 탭처럼 동작하지 않고, 복습 화면에서 “Again/Good” 두 버튼 모드가 기본 내장되어야 함. 애드온만 챙겨도 인기 많고 구현도 쉬움
    • 여러 해 동안 Anki와 SRS에 대한 글은 많이 읽었지만 실제로 사용해본 적 없음. 혹 추천할 만한 학습 분야 있을지 궁금함
    • Duolingo와 비교하면 역시 지루함. 그래도 몇 년째 쓰고 있음. 약간의 게임 요소(스트릭, 효과음 등)를 옵션으로 도입하면 더 좋을 듯함
  • “Why Anki Doesn’t Work for Me”라는 글을 6년 전에 썼음(알고리즘 개선 전임). Anki에 여러 문제를 느꼈으나, 새 알고리즘이 내 핵심 불만을 바로잡았으니, 다시 시도해 볼 계획임. 나머지 문제들이 여전히 장애물인지 궁금함
    • 나는 A 레벨 도중 FSRS 확장으로 전환함. Google Collab notebook으로 내 학습 패턴에 맞게 커스텀 피팅도 했음. 복습량이 절반으로 줄고, 복습 타이밍도 분산돼서 훨씬 쾌적해짐. 효과는 등가 또는 더 뛰어났음. 새로운 시도를 강력 추천함
    • 나도 비슷한 경험이 있음. Anki가 단기기억에 집착하고, 며칠 혹은 몇 주 지나면 거의 백지에서 다시 학습해야 했음. 그 시기엔 거의 모든 SRS 커뮤니티가 Anki를 신성시했으나 나는 포기함
    • WaniKani는 최고의 SRS UI를 갖췄지만, 구식 알고리즘으로 인해 본질적으로 같은 한계를 가짐. “마지막 복습 후엔 카드를 영원히 보지 않아도 됨”이라는 구조에 항상 지식 손실 위험이 있어 불안함
  • 스페이스드 리핏션의 흥미로운 점은 “단순 암기”가 특정 상황에서 현대 교육이 생각하는 것보다 훨씬 더 중요한 역할을 한다는 전제임. 수학·프로그래밍에선 이해가 암기보다 더 중요하다는 생각이 있지만, 스페이스드 리핏션은 그 반론을 제기할 수 있음
    • 교육제도가 산업혁명 이전에서 현대까지 전환하는 과정에서, 암기 중심 고전 교육(라틴어, 그리스어)에서 “이해 중심” 전환이 이루어짐. 당시 변화는 필요했지만 과도했을 수 있음. 현재 암기는 필요 이상 저평가임
    • 요즘 프로그래밍은 “필요할 때 찾아보면 된다” 개념을 따름. 하지만 일부는 반드시 암기해야 함(프로그래밍 언어, 패턴 등). 실습은 비구조적 SRS와 같고, 특정한 영역(예: C++로 드라이버 개발)에선 SRS가 큰 도움이 됨
    • 반복적으로 사용되는 연산(곱셈 등)은 암기로 내재화해야 상위 개념 학습에 집중 가능함. 이 구조가 학습 효율의 핵심임
    • 암기는 이해의 전제임. 기억하지 못하는 것은 이해할 수 없음
    • 회상형 지식과 논리적 모델형 지식의 차이는 매우 흥미로움. LLM은 전형적으로 전자에 가깝고, 수학에서는 한계가 큼