9 ms·
FSRS: A modern, efficient spaced repetition algorithm
- victorlf 3y agoVery interesting. According to the benchmarks, with this algorithm, users can review 20-30% fewer cards than with the classic Anki algorithm. Just a few days ago, I published a Python implementation of the classic SM-2 algorithm that I use for https://python.cards https://python.cards, but I may switch to FSRS. https://github.com/vlopezferrando/simple-spaced-repetition https://github.com/vlopezferrando/simple-spaced-repetition
- teruakohatu 3y agoYour python.cards looks great. I suggest you add a few examples. Any chance you are open sourcing the web app? I can see it being a popular way for niches to show flashcards eg. for students to learn X
- victorlf 3y agoThanks! I definitely will add more examples to the landing page, currently I'm working hard on the decks: pathlib in depth, a tour of the stdlib and Norvig's tricks (a collection of tricks from the Pytydes of Peter Norvig). I believe the hardest part of using spaced repetition to learn programming is creating good decks, it's a ton of work. About open sourcing the web app, I might do it. It's a Django app, and I've published some videos while coding it (https://www.youtube.com/channel/UCyWUj9r0soytotuuh2JnPrw https://www.youtube.com/channel/UCyWUj9r0soytotuuh2JnPrw), so it's no secret.
- teruakohatu 3y agoI forgot to mention in my previous comment that I saw no sign up box for the newsletter. > I believe the hardest part of using spaced repetition to learn programming is creating good decks, it's a ton of work. Agreed. To have always been disappointed with the programming decks I have created. > About open sourcing the web app, I might do it. It's a Django app, and I've published some videos while coding it I saw the videos, thanks. I think a generic platform would have value, even if there was a paid option with more features (payments etc.)
- victorlf 3y agoIt's weird you didn't find the sign-up box to the waitlist, this is how it should look like: https://imgur.com/a/0ZIbz4p https://imgur.com/a/0ZIbz4p, I actually got some sign-ups from this comment! Anyway, I can sign you up manually if you wish.
- orangepurple 3y agoThese algorithms are still suboptimal because they do not account for the spacing effect at all. But doing something is still better than nothing when it comes to learning.
- tester457 3y agoHow does spaced repetition not account for the spacing effect?
- jarrett-ye 3y agoFSRS has considered the spacing effect in its model: https://github.com/open-spaced-repetition/fsrs4anki/wiki/The-Algorithm https://github.com/open-spaced-repetition/fsrs4anki/wiki/The...
- gjadi 3y agoI wonder if there is plan for this to land in Mnemosyne[1]. I prefer Mnemosyne over Anki because I can self-host the web-sync server. 1: https://mnemosyne-proj.org/ https://mnemosyne-proj.org/
- fhars 3y agoWhat's wrong with `anki --syncserver`? (user management is a bit iffy, admittedly)
- gjadi 3y agoMy understanding is that the anki Sync serveur is only for the sync part, there is no web interface to do the review. Also, was it always free? When I looked at what was available for Anki, the remote solutions were paid only and not selfhostable. Maybe I didn't look well enough back then.
- epiccoleman 3y agoAh, this is really cool - i've been thinking about implementing a SR algorithm for one of my music related side projects.
- jacquesm 3y agoCool, let me know what you cook up if you want, I'm very much interested in that particular crossing of roads.
- dan0000 3y agoI'm working on building my own flashcard based studying application for long- and short-term learning. How would I go about implementing this?
- nanna 3y agoContribute to Anki?
- g-w1 3y agothere are a bunch of pre-existing ones here: https://github.com/open-spaced-repetition/ https://github.com/open-spaced-repetition/ > Multiple Language Support: fsrs.js, go-fsrs, rs-fsrs, py-fsrs, cljc-fsrs, swift-fsrs and ex_fsrs
- david_allison 3y agoLibraries: https://github.com/open-spaced-repetition/free-spaced-repetition-scheduler?tab=readme-ov-file#have-a-library-of-fsrs https://github.com/open-spaced-repetition/free-spaced-repeti... All are MIT licensed I believe, Anki is primarily AGPL
- siraben 3y agoI’ve been using FSRS for 3 months and it’s finally resolved some of my pain points about having to trial-and-error adjust the old SM2 scheduling algorithm, since the content of each deck can greatly affect what the optimal retention is. Now you can just retrain the weights for each deck you have every few months and it will adapt appropriately. The paper[0] is also definitely worth reading if you want to see some rigorous analysis of large-scale real-world spaced repetition science. Because of the extensive benchmarking most people probably will not benefit from refitting the weights to their collection until they have thousands of reviews (author recommends 1k+). Note it still works fine even if you do your cards late, since the recall probabilities are based on the stability and when you last reviewed the card, and the stability will update a bit longer if you somehow managed to still recall a card after the due date. [0] https://dl.acm.org/doi/10.1145/3534678.3539081?cid=99660547150 https://dl.acm.org/doi/10.1145/3534678.3539081?cid=996605471... [1] https://github.com/open-spaced-repetition/fsrs4anki/wiki/The-Algorithm https://github.com/open-spaced-repetition/fsrs4anki/wiki/The...
- deleted 3y ago[deleted]
- ekidd 3y agoOne massively overlooked way to improve spaced repetition is to make easier cards. It's surprising just how easy an effective card can be. I started out using Anki to learn French vocabulary. I'd make pairs of cards, with English on one side and French on the other. This started out easy, but became utterly brutal and depressing with several hundred cards in my deck. Too many near synonyms. I eventually took a hint from Katzumoto's Japanese advice, and started making cloze cards. I'd copy and paste an entire paragraph from an ebook or a web page, and hide just one word. These cards were easy, but also effective. Then I got lazier. I'd only hide half a word. Or I'd just boldface a word, and mark the card as a "pass" if I could sort of remember that word in context. And somehow, these cards actually worked better. Then I got lazier still. If seeing a card made me grown "Oh, not that card", I'd just delete it. If I missed a card 3 times, I configured Anki to permanently suspend it. If I actually needed to know a word, no worries, I'd see it again soon in a more helpful context. And my French vocabulary continued to grow by leaps and bounds. I don't think that biggest improvements will come from better spaced repetition algorithms. I suspect the biggest wins will come from improved card formats. And it's surprisingly hard to make a card too easy to be useful. (Source: 35,000+ Anki reps across three languages.)
- piazz 3y agoThis is great, going to try this approach with my Japanese Anki reps. Mind linking out to Katzumoto’s Anki advice? Is this this one? https://tatsumoto-ren.github.io/blog/setting-up-anki.html https://tatsumoto-ren.github.io/blog/setting-up-anki.html
- jwells89 3y agoI’ve been using Anki on and off for years for language learning but have most recently been using it to study for online uni courses. Something that’s become evident, perhaps due to the varied nature of the content (vs. all language) is how much gravity card formatting has. In decks made by others I find myself frequently re-wording the answer sides of the cards which makes a noticeable difference in retention — answers that are succinct and flow nicely stick better. So in short, I’d concur. Card format is important. If you find a card that feels awkward somehow don’t hesitate to rework it.
- 3y ago
- pitherpather 3y agoGiven the importance of spaced repetition, I've wondered if a modular approach is called for, contra Anki. Aren't there three separate items? 1) Your cards (or a subset of cards). 2) The history of your interactions with them. 3) An algorithm (potentially just-in-time) taking that history into account to present cards to you, thereby adding to the history.
- bluquark 3y agoAnki FSRS moves closer to being a "just-in-time" algorithm based only on user-provided inputs. And although its data structures aren't strictly modular, they come as close as practical to that ideal while still remaining compatible with legacy Anki decks and extensions. In practice, that's illustrated by the fact that there's now a button to fully recompute all intervals and difficulties based only on your history and the current algorithm tunings. And if you've already been using FSRS and the tunings haven't changed, the recomputation won't have any effect because it's equivalent to the incremental computations after each review. So in principle it could be thought of as a just-in-time pure function, which involves a cache of generated data only for legacy & performance reasons.
- deleted 3y ago[deleted]
- fermentation 3y agoInteresting, I've been using Anki for about 10 months to study Japanese vocabulary. I'm going to give this algorithm a shot, thought I'm not quite sure how to determine if will be "better" or not. I guess this at least allows me to remove my old anti-ease-hell addon.
- talhah 3y agoIs this algorithm also available on mobile?
- david_allison 3y agoStable on AnkiMobile, available in the AnkiDroid 2.17 alpha: * https://github.com/ankidroid/Anki-Android/releases/ https://github.com/ankidroid/Anki-Android/releases/ (Parallel.A) * OR: https://ankidroid.org/#alphaTesting https://ankidroid.org/#alphaTesting
- notfed 3y agoOnly 2.16.5 available in Play Store at the moment.
- david_allison 3y ago2.17alpha15 (latest alpha) is available under the 'closed testing' track [0] on the Play Store. After following the instructions [1] (joining the Play Store testing programme, then the Google Group), the Play Store should distribute + automatically update the alpha. [0] https://play.google.com/console/about/closed-testing/ https://play.google.com/console/about/closed-testing/ [1] https://ankidroid.org/#alphaTesting https://ankidroid.org/#alphaTesting
- deleted 3y ago[deleted]
- flashcardist 3y agoI use multiple spaced repetition apps per day just for fun because I like doing flashcards as a hobby. I have tried this out, its good, but still not as good as the newest version of Supermemo. You can tell if you put the same or similar material into two or more apps. FSRS is much better than almost everything else out right now though and I think it will be better than Supermemo very soon. I tried Mochi Cards for about a year and it was just okay, a little better than a default Anki install. Mnemosyne is the same. The Supermemo SaaS app is okay, but I don't like how they structure their language materials. For language vocab, I use Clozemaster, but then I put the sentence into Supermemo after I get it right because the SM algo is that much better. They also have ChatGPT explanations for each word of the sentence. I also put those into Supermeno. The hardest part is making good cards for sure. This will help with more ideas: http://arxiv.org/abs/2401.01257 http://arxiv.org/abs/2401.01257 and https://rust-book.cs.brown.edu https://rust-book.cs.brown.edu Also, I have not found a flashcard program that lets you make cards as fast as Supermemo. With Supermemo, you paste in a chunk of text (ctrl-n), highlight a word you want to make cloze deletion from, and press alt-x. You can do it multiple times on the same piece of text, and every time you do it, you get a new cloze deletion card in your reviews. Almost every other app, you have to make a single card at a time. I think its because most other apps stick too hard to the cards and decks metaphor. Supermemo uses a tree structure to organize everything. It makes a big difference. Technically, you don't really need to organize anything though. People act like the material they learn is going to be categorized into neat decks in their head.
- dotancohen 3y ago> With Supermemo, you paste in a chunk of text (ctrl-n), highlight a word you want to make cloze deletion from, and press alt-x. You can do it multiple times on the same piece of text, and every time you do it, you get a new cloze deletion card in your reviews. In Anki (on Debian at least) it's Ctrl-Alt-C.
- knubie 3y ago> Also, I have not found a flashcard program that lets you make cards as fast as Supermemo. With Supermemo, you paste in a chunk of text (ctrl-n), highlight a word you want to make cloze deletion from, and press alt-x. In Mochi it's mostly the same. Press n (new card), ctrl-v (paste text), select word, ctrl-l (make cloze), ctrl-[n] (where n is 0-9) to create a cloze group. Each cloze group will have its own "card".
- steve1977 3y agoInteresting approach for sure. Would be interesting to also see a comparison between to the SM-18 algorithm (which handles item difficulty differently compared to SM-17)
- jarrett-ye 3y agoYeah, here is the comparison between FSRS and SM-17: https://github.com/open-spaced-repetition/fsrs-vs-sm17 https://github.com/open-spaced-repetition/fsrs-vs-sm17
- steve1977 3y agoYes I saw that, that’s why I thought it would also be interesting to compare it to the current SuperMemo algorithm (SM-18) and not „only“ the older SM-17. It would also be interesting to see how SM-18 compares to SM-17 ;)
- jarrett-ye 3y agoI also want to compare with SM-18, but I don’t know how to export the predictions of SM-18 from SuperMemo. By the way ,SuperMemo CEO said that they will release the algorithm API. If it’s not very expensive, I will compare it with FSRS.
- t_mann 3y agoIt seems from the description that FSRS still puts an exact review date on each card? This feature was pretty much the reason why I stopped using Anki. I'm not in college and not doing exams, I just want to practice when I feel like it, maybe with large breaks between sessions, and not feel like there's a backlog building up. I think Anki is a great app, I just wish there was an algorithm that would just randomly sample cards (with probability proportional to how urgently you need to review it) rather than put a review date on them. Something like https://github.com/fasiha/ebisu https://github.com/fasiha/ebisu but available as an Anki plugin (if that supports custom algorithms on mobile yet?) or a similar app with an open format for cards.
- AngaraliTurk 3y agoBut that's not how memory works...you can't put your memory on hold like you're suggesting. There's a reason FSRS follows a personalized memory curve.
- oh_sigh 3y agoYou can't, but I wager a student excited to doing a review but with a suboptimal method, will do better than a student who dreads the review with the optimal method.
- wahnfrieden 3y agoCurrent algorithms/UI feel like punishment for over-learning, as if it was a suspicious thing that carried great responsibility to open a book and read a page without fully committing to forever maintaining reviews on everything you happened to come across. There should be no punishment and only reward.
- t_mann 3y agoPlease don't make assumptions about my goals. I was clear about my requirements and asking for recommendations.
- 3y ago
- surfsvammel 3y agoI’ve learned tens of thousands of foreign language words using Anki and have always find that having pictures on the cards help me remember the words. I currently have a (foolish?) project. I’m trying to memorize the 750 cards of a quiz game that we play in the family. All questions are answered by a year. So for example: “What year did Coca Cola Light come out?”. I have been using Midjourney to generate images for those cards which makes it so much eaaier to recall. I have a system. I have a person representing each century; Einstein is 1900-2000 and for example Mari-Antoinette is 1700-1800. Then items represent the decade; a sixties car represent the sixties, jacket with shoulder pads the eighties and so on. I do something similar for the last digit. Then I have Midjourney generate such pictures, in a comic book style, and I save the most fun or absurd one and use that on the back side of the Anki card. The image is often easier to recall than the year by itself
- azan_ 3y agoWow, that system is ingenious. I've always struggled with dates, gonna steal your idea from now on!
- hackernewds 3y agoThe burning question is "does it work"?
- surfsvammel 3y agoI don’t know. I’m through about 100 cards. I’ll let you know in a couple of months:)
- petesergeant 3y ago> I’m trying to memorize the 750 cards of a quiz game that we play in the family I'm currently doing the same for geography ... flags, capitals, etc. I reckon it will give me a +5 advantage on most trivia nights
- vunderba 3y agoThree things: 1. Look up PAO - it's a tangentially related mnemonic system that uses images. 2. Test your recall periodically with/without the images otherwise you may find that the true nature of recall (aka in the wild) without said images is adversely affected. 3. Is it Trivial Pursuit? A friend of mine deliberately memorized all the cards of the original Genus edition.
- miga 3y agoI missed comparison to earlier repetition equations like SuperMemo. Is there any hope for comparison and reference, or will precursor be forgotten?
- second_brekkie 3y agoIs there anybody here using this now? How does using the FSRS plugin on desktop effect the usage on mobile? I'm curious but don't want to mess up my anki setup.
- qustrolabe 3y agoEither wait some time for 2.17 AnkiDroid release or just use 2.17alphaXX from github. I'd prefer first option to evade any major bugs
- tianshuo 3y agoThanks Xiaojun for FSRS, I've talked multiple times with him about FSRS and Anki. In traditional spaced repetition systems like Anki+FSRS, learners often review knowledge always in the same context, which can lead to an understanding of knowledge as isolated units rather than part of a larger network. For example, learning words isolated does not fully prepare learners to use the language in real-life situations, where context, collocation, and usage play a significant role. Instead of isolated repetition, a better way to learn languages is to expose learners to words in different contexts and combinations, helping them to understand how words naturally form in chunks and sentences. This varied exposure can help learners build a deep network of neural connections, enhancing their ability to understand, recall, and use language effectively. So for learning languages, instead of Anki cards, we're building something that shows real-life short videos where each of our videos is a mini scenario, showcasing language use in real-life situations. This means students aren't just memorizing words, but seeing how they're used in natural contexts, complete with visual cues and body language. This approach allows students to understand the practical application of words and phrases, making the learning process more engaging and effective. Since the main reason that students fail to learn foreign languages is they don't keep on studying. Another thing that Anki lacks is, real-life scenario-based quizzes instead of "do I recall this?", students need to apply what they've learned in a fun, low-pressure environment. So, SRS algo is just part of the solution, and definitely not a silver bullet. There are a lot of things about memory, such as how emotions affect encoding - you don't need SRS to remember your first kiss or graduation day. People learn their mother tongue to fluency w/o using any kind of SRS, while most people fail to learn a foreign language to fluency even if they use SRS.
- jamager 3y agoThis is a valuable argument (learn in context, vary the context), but the mention of "people learn their MT without Anki / grammar / study" always bugs me. First and Second Language Acquisition is just apples to bacon. The baby and adult brains are different, and their needs, capabilities, and context are vastly different.
- tianshuo 3y ago
- tchvil 3y agoOxford Flash cards have a good take on spaced repetition. They provide actual cards, you can use the old way. Or you can then take a picture of them using their free app Scribzee, and review them digitally too. My son just aced his anatomy exam with them. https://www.my-oxford.com/int-en/oxford-flash-20-flashcards https://www.my-oxford.com/int-en/oxford-flash-20-flashcards
- beardedwizard 3y agoIs spaced repetition good for learning anything other than vocabulary?
- howtodowtle 3y agoYes. I started using Anki for learning Chinese twelve years ago but gradually moved to using it for other stuff. About 60 % of my reviews (170k) are not vocabulary. You can literally ankify (and therefore memorize) anything you want to remember: names of friends' children, algorithms, arguments from papers or articles, code, ...
- weregiraffe 3y agoYou can learn programming languages by creating cards in a form of: Question: short code Answer: output
- rasmus1610 3y agoFor some related shameless self promotion: I made a free open source tool that let's you create Anki cards from youtube videos [1]. I would love some feedback. BTW, the code is on github [2]. [1] https://youtube2anki.fly.dev/ https://youtube2anki.fly.dev/ [2] https://github.com/vacmar01/youtube2anki https://github.com/vacmar01/youtube2anki
- deoxykev 3y agoThis is cool. Do you mind me asking what videos you use it for?
- rasmus1610 3y agoSure. I'm currently learning MRI technology for my radiology board exam with the following youtube playlist: https://www.youtube.com/playlist?list=PLPcImQzEnTpz-5TzxyyoYSbiAa9xdd89l https://www.youtube.com/playlist?list=PLPcImQzEnTpz-5TzxyyoY... This is what got me the idea.
- tester89 3y agoI'm not at uni anymore, but I let new students use the flashcard decks I made, any thoughts on the strategy I'm planning to recommend? Our university has the first two trimesters dedicated entirely to education with the last dedicated to exams. > During term time if you set the retention to like 70 % so you don’t spend too much time on it daily and then increase it to ≥ 90 % when the holidays start.