-
-
Notifications
You must be signed in to change notification settings - Fork 139
ABC of FSRS
FSRS is a scheduling algorithm based on machine learning and universal long-term memory formulas. It is more flexible and accurate than Anki's default algorithm. In spaced repetition, the purpose of a scheduling algorithm is to determine optimal intervals between reviews. But what makes an interval "optimal"? In FSRS, an interval is considered optimal if it corresponds to a specific probability of recalling a card. For example, if you want to be 90% sure that you will successfully recall this card next time you see it, an interval that ensures that the probability of recall is 90% is optimal.
FSRS uses what's known as the "Three Components Model of Memory":
R is Retrievability, the probability that a user will recall a particular card on a particular day, given that card's repetition history. It depends on how many days have passed since the last review and on memory Stability, S.
S is memory Stability, it is defined as the amount of time, in days, during which R decreases from 100% to 90%. For example, S=365 means that an entire year will pass before the probability of recalling a particular card drops to 90%. Estimating S from the user's review history is a very difficult task, but FSRS can do it quite accurately.
D is Difficulty. Unlike the two previous components, it doesn't have a rigorous definition. Loosely speaking, difficulty is a number that determines how much S increases after a review. The higher the difficulty, the smaller the increase in S, and the slower the card's intervals grow.
FSRS analyzes the user's review history and determines the optimal parameters that provide the best fit. If you are interested in the details, please read the following wiki entries: The Algorithm and The mechanism of optimization.
Users don't have to tweak parameters manually, what they need to do instead is choose the value of their desired retention. Values between 70% and 97% are considered reasonable. In other words, with FSRS, users can target a specific value of retention, allowing them to balance how much they remember and how many reviews they have to do (higher retention leads to more reviews per day).
FSRS has some other advantages when compared to Anki's default algorithm. With FSRS, users have to do 20–30% fewer reviews than with Anki's default algorithm to maintain the same level of retention. FSRS is also much better at scheduling cards that have been reviewed with a delay (overdue reviews). The helper add-on also provides useful features that are not available otherwise.
If you want to use the standalone version of FSRS, please read this guide. If your Anki version is 23.10 or newer, read this guide instead.
Additionally, if you want to see how FSRS performs in comparison to other algorithms, read these pages: Benchmark and FSRS vs SM-17, one of the most recent SuperMemo algorithms.
If you have any further questions, check FAQ.
If you are curious about the history of spaced repetition itself, here is a great article.
My representative paper at ACMKDD: A Stochastic Shortest Path Algorithm for Optimizing Spaced Repetition Scheduling
My fantastic research experience on spaced repetition algorithm: How did I publish a paper in ACMKDD as an undergraduate?
The largest open-source dataset on spaced repetition with time-series features: open-spaced-repetition/FSRS-Anki-20k