Алгоритмы обучения

FSRS: как работает алгоритм интервального повторения

Разбираем Difficulty, Stability и Retrievability, четыре оценки, желаемое удержание и честную границу реализации FSRS-6 в CardReplay.

13 минут

Что такое FSRS

FSRS расшифровывается как Free Spaced Repetition Scheduler — открытый алгоритм планирования интервальных повторений. Он не выдаёт всем одинаковую последовательность вроде «через день, три дня и неделю». Вместо этого хранит состояние каждой карточки, учитывает историю оценок и рассчитывает срок следующей проверки.

Прямой ответ. После оценки «Снова», «Трудно», «Хорошо» или «Легко» FSRS обновляет модель конкретной карточки и выбирает дату, соответствующую заданному ориентиру удержания. Это прогноз модели, а не точное измерение памяти.

FSRS является механизмом внутри системы повторений. Пользователю не нужно вычислять формулы или следить за версиями параметров во время занятия. Его задача — сначала попытаться вспомнить ответ и затем оценить реальную попытку. Очередь, сроки и сохранение состояния берёт на себя приложение.

Difficulty, Stability и Retrievability простым языком

Официальное описание FSRS использует модель DSR: Difficulty, Stability и Retrievability. Эти величины нужны для расчёта, но их нельзя воспринимать как лабораторные показатели человека.

ВеличинаЧто означает в моделиКак проявляется в занятии
Difficulty — сложностьНасколько трудно улучшать устойчивость этой карточки.Карточка, которая регулярно даётся тяжело, не уходит далеко.
Stability — стабильностьМасштаб времени, на котором воспоминание сохраняется.Уверенные повторения обычно позволяют увеличить интервал.
Retrievability — извлекаемостьРасчётная вероятность вспомнить ответ в выбранный момент.С течением времени она снижается и влияет на новый срок.

В FSRS-6 состояние памяти представлено сложностью и стабильностью, а извлекаемость рассчитывается для конкретного момента. Официальная документация описывает 21 параметр и формулы их применения. Для понимания пользовательского процесса достаточно знать направление: забытый ответ сокращает путь до следующей проверки, уверенный — обычно позволяет его увеличить. Официальное описание алгоритма FSRS-6.

Как из ответа получается следующая дата

  1. Система читает текущее состояние карточки. Для новой карточки история ещё отсутствует; для изучаемой известны предыдущая оценка, срок и параметры памяти.
  2. Пользователь пытается вспомнить ответ. Сам просмотр лицевой стороны не изменяет расписание.
  3. Оценка сообщает результат попытки. Четыре варианта различают забывание, трудное, обычное и лёгкое воспроизведение.
  4. FSRS обновляет состояние. Новые значения зависят от прежней стабильности, сложности, прошедшего времени и оценки.
  5. Планировщик выбирает срок. Он сопоставляет новое состояние с желаемым удержанием и максимальным интервалом.
  6. Приложение сохраняет решение. При наступлении срока карточка снова становится доступна в очереди.

Сразу после первого знакомства или забывания карточка может несколько раз вернуться через короткие промежутки. Эти learning и relearning steps помогают завершить начатый цикл. Когда ответ становится устойчивее, интервалы переходят к дням, неделям и более длинным периодам.

Что означает желаемое удержание

Желаемое удержание — целевая вероятность, при которой планировщик старается назначать следующую проверку. Например, ориентир 0,90 не означает, что человек гарантированно вспомнит ровно 90% карточек. Это входной параметр модели, определяющий компромисс между длиной интервалов и объёмом работы.

Более высокая цель обычно сокращает интервалы и увеличивает число повторений. Более низкая уменьшает ежедневную нагрузку, но допускает больше забываний. Поэтому настройку следует менять по реальному времени и результатам, а не стремиться к максимальному проценту.

Идея оптимизировать расписание через модель динамики памяти описана в работе Е и соавторов. Авторы чередуют предсказание памяти и оптимизацию расписания на данных повторений. Их результаты показывают свойства исследованной модели и наборов данных, но не являются гарантией результата для конкретной интеграции CardReplay. IEEE Transactions on Knowledge and Data Engineering, 2023.

Как четыре оценки изменяют модель

ОценкаСигнал для планировщикаКогда выбирать
Снова / AgainОтвет не извлечён; требуется переучивание.Ключевой смысл появился только после переворота.
Трудно / HardВоспроизведение удалось с серьёзным затруднением.Ответ в целом получен, но медленно, неуверенно или неполно.
Хорошо / GoodОбычное успешное самостоятельное воспроизведение.Нужный смысл получен без критической подсказки.
Легко / EasyУверенный ответ допускает более длинный путь.Ответ появился сразу, полно и без заметного усилия.

Оценка нужна не для управления желаемой датой, а для описания текущей попытки. Если выбирать «Легко» ради длинного интервала или «Снова» из стремления к идеальному знанию, история перестаёт соответствовать реальным ответам и прогноз становится менее содержательным.

Планировщик и оптимизатор — не одно и то же

Планировщик применяет набор параметров к состоянию карточки и решает, когда она вернётся. Оптимизатор анализирует большую историю конкретного пользователя и подбирает параметры модели под эти данные. FSRS может работать с общими параметрами без персональной оптимизации.

Используемая CardReplay библиотека Java-FSRS реализует планирование, расчёт извлекаемости, шаги обучения и четыре оценки, но её официальная документация прямо указывает, что оптимизация параметров в пакете не поддерживается. Для неё нужны отдельные инструменты и достаточная качественная история повторений. Документация Java-FSRS.

Почему это различие важно

Фраза «использует FSRS» ещё не означает, что параметры уже обучены на истории каждого человека. Можно надёжно применять открытый планировщик с проверенными параметрами по умолчанию, а персональную оптимизацию добавлять только после накопления достаточных данных и контроля качества.

Как FSRS-6 внедрён в CardReplay

CardReplay использует FSRS-6 через официальный JVM-пакет версии 1.0.0. Алгоритм изолирован на backend: браузер показывает очередь и варианты оценок, но не назначает итоговую дату самостоятельно. В состоянии и журнале сохраняется версия `fsrs-6/java-fsrs-1.0.0`, чтобы будущие изменения можно было отличить от прежних решений.

  • Для карточки хранятся стабильность, сложность, срок, последняя проверка, этап обучения и ревизия.
  • Дневная очередь учитывает новые, назначенные и просроченные карточки, часовой пояс и общие лимиты пользователя.
  • Сервер заранее возвращает интервалы для четырёх возможных оценок и после выбора атомарно сохраняет новое состояние.
  • Идемпотентный ключ защищает от двойной отправки, а ожидаемая ревизия — от записи решения поверх уже изменившейся карточки.
  • Свободный прогресс хранится отдельно: включение расписания не превращает статусы «Изучается / Освоено / Трудно» в искусственную историю FSRS.

Сейчас используются 21 параметр FSRS-6 по умолчанию. Персональная оптимизация по истории пользователя намеренно отложена до накопления достаточного числа качественных повторений. Поэтому точная публичная формулировка — «CardReplay рассчитывает расписание через FSRS-6», а не «алгоритм уже полностью обучен лично на вас».

Пользовательский сценарий и переключение со Свободного режима подробно показаны на странице Повторения по расписанию.

Какие выводы из FSRS делать нельзя

  • «Алгоритм знает точный момент забывания». Извлекаемость является вероятностной оценкой модели, а не измерением конкретного воспоминания.
  • «90% удержания гарантирует 90% ответов». Это целевой параметр планирования; реальные результаты зависят от данных, карточек, поведения и контекста проверки.
  • «FSRS заменяет понимание». Расписание возвращает к вопросу, но не объясняет тему и не создаёт перенос на новую задачу.
  • «Чем чаще, тем лучше». Слишком короткие интервалы увеличивают нагрузку и могут превращать воспроизведение в узнавание недавнего ответа.
  • «Название алгоритма доказывает эффективность продукта». Корректность интеграции подтверждают код, тесты и наблюдаемое поведение; учебный результат требует отдельных пользовательских данных и не обещается заранее.
Итог. FSRS помогает превратить историю честных ответов в управляемое расписание. Его сила — в явной модели и проверяемой реализации, а не в магической дате. Качественные карточки, активное вспоминание и применение знания остаются обязательными.

Продолжить

Интервальное повторениеОбщая методика распределённой практики без погружения в конкретный алгоритм.ЧитатьПовторение по расписаниюКак дневная очередь, четыре оценки и два режима выглядят в продукте.ЧитатьМетод ЛейтнераРучная система коробок для тех, кому не нужен алгоритмический расчёт.ЧитатьКривая забыванияПочему популярная кривая не задаёт универсальные проценты и даты.Читать