Spaced Repetition (2019)
gwern.net
gwern.net
It's specifically one of the least applicable domains. Things that are mainly conceptual, that build on previous concepts, don't benefit from spaced repetition at all.
With math, the hard part is the conceptual understanding. But once you understand a concept, you understand it. You don't really need to review it again.
This is why the part of the article that lists what spaced repetition works well on is all factual/associative -- vocabulary, trivia, medical terminology, etc.
Spaced repetition is for simple associative facts -- "x is y" -- not conceptual things.
For whatever reason, once we've understood a concept, it seems to be part of our thinking forever. But of course the hard part is understanding it. Some people struggle for days, weeks, or even years in school to truly understand things like derivatives, or pointers, or trigonometry. Spaced repetition does nothing for that.
A big part of math is building up your toolkit: when I see x, I should do y. Feynman famously made this a big part of how he approached quantum mechanics, saying that it was his toolkit that allowed him to solve problems others saw as impossible.
While the initial understanding can't be done with spaced repetition, remembering what's in your math toolkit and how to use it can very much be aided by spaced repetition. I've personally used this to great effect teaching people math through my spaced repetition app.
I'm not saying math practice isn't useful -- after all, that's what homework problems are for, to figure out which concepts apply and use them. Repetition itself is useful.
But in my experience, this doesn't benefit from being spaced over time, and it's more about achieving full understanding of the concept.
You seem to be describing pattern recognition, but pattern recognition is conceptual -- you need time/experience to build that up, but it can be done in a day and doesn't need to be revisited days/weeks later in order to not be forgotten.
What kind of math content do you think benefits from repetition that is necessarily spaced over time?
- Log laws
- Exponent laws
- Derivative rules
- Probability laws
- Combinations/Permutations
- Matrix algebra
- more?
When you're reading through math derivations, or trying to work one out yourself, you absolutely need to have some basic literacy in these rules.
I disagree - if this were true I would still understand all of calculus and linear algebra, which I took years ago.
I think part of what you say is true - some concepts that are understood stick with you more than the sort of fact memorization you might find in a history class. But there are still many math skills that would benefit from spaced repetition. What are line integrals used for and how do I compute one? What does the determinant of a matrix represent and how can I find it? What is Stokes' Theorem?
It's one thing to understand a high level concept (e.g. an integral can be used to model continuous accrual of some quantity) versus details (e.g. how do I integrate common trig functions?).
- Key theorems
- Proofs
- Any kind of visualizations (e.g. statistical distributions)
- Properties
- Trig identities
A lot of time in math or math heavy fields, there are a lot of tiny details and nuances. Using an SRS properly really solidifies those concepts in your head (See my comment below on manufacturing 'aha' moments). It also helped because a lot of those key concepts were immediately available in my mind and I was 100% I had them correct. Memorization reduces a lot of mental friciton.
Depending on the specific math course, it can be the case that later topics contain earlier topics anyway, so a final with only problems from the end will also cover techniques from the beginning and middle. Certainly, that's not always the case.
> I know many people who try Anki out, and then go down a rabbit hole learning as many features as possible so they can use it “efficiently”. Usually, they're chasing 1% improvements. Often, those people ultimately give up Anki as “too difficult”, which is often a synonym for “I got nervous I wasn't using it perfectly”. This is a pity. As discussed earlier, Anki offers something like a 20-fold improvement over (say) ordinary flashcards. And so they're giving up a 2,000% improvement because they were worried they were missing a few final 5%, 1% and (in many cases) 0.1% improvements. This kind of rabbit hole seems to be especially attractive to programmers.
Tweaking the parameters may just be a 1% improvement in terms of learning and retention. Perhaps even no improvement at all.
Where the improvement is seen is in the use of your time.
The problem is that people incorrectly assume that they must "do something" about missed reviews. That's just not how it works; in fact, Anki will give you extra credit for recalling a card beyond the expected forgetting time, so working with a backlog of cards to review is a lot easier than it sounds.
The whole idea is that once the expected forgetting time for those "review" cards has been pushed far in the future, that's the best time to learn new, more challenging content. It works very well in my experience.
Where reducing the amount of reviews may well be justified is for cards that are "nice to have", but that you don't actually care about remembering. That's also the only sorts of cards for which "leech" protection makes sense, and that's a lot closer to a poor default in my view.
It's markdown enabled (including latex), with a cross platform offline-first desktop app and mobile apps. The pro subscription offers syncing across devices.
It's sort of a mix between a zettelkasten and spaced repetition system.
Can you import and export decks between them?
A few unasked for comments/questions:
1. I'm worried about committing to a closed system. I see you have an export, but at first glance it seems to make an unreadable .mochi file. A csv would be nice. Could I ever export back to Anki or something if I stopped using this?
2. Will you support other card types besides front/back?
3. I miss Anki's database view. Your deck view supports a "list" as well as "grid," but the list items are very tall, and I can't see any other columns.
4. Your "forgotten" multiplier works very differently from Anki's, I believe -- I think they just reset you to zero, right? This seems potentially very cool and potentially a big difference between the two apps. (In an attempt to split the difference between the two systems, I'm trying out 0.3 instead of 0.5.) Do you have any research showing this works?
2. At the moment you can also use cloze deletions. I do have plans for things like typing in an answer, or drawing with a touch screen, but I have no plans for something like multiple choice, but I could be convinced otherwise. I'm also open to suggestions.
3. Yeah, this is probably the best part of Anki IMO. I decided not to include it in the initial version of Mochi because I thought plain markdown documents would be easier for new users to "grok". I still plan to add this kind of templating thing in the future, but I still need some time to let the idea "bake".
4. You can actually get this behavior in Anki, but it's not the default. The initial inspiration for this change came from this blog post[2], but it is roughly equivalent to the Leitner System[3]. This other blog [4] also provided a lot of influence in some of the design of the SRS system.
[0] https://github.com/edn-format/edn
[1] https://mochi.cards/faq.html#how-can-i-create-my-own-mochi-f...
[2] https://eshapard.github.io/anki/anki-new-interval-after-a-la...
[3] https://en.wikipedia.org/wiki/Leitner_system
[4] https://massimmersionapproach.com/table-of-contents/anki/
Are there pre-made sets for various topics?
Can people share their card sets with other users?
If you're particularly interested in pre-made sets, both my app and Mochi Cards rely on importing from Anki and Quizlet, which both have a large amount of pre-made sets.
I've also been more intentional about my time programming at work. Focusing on certain things to improve on a daily/weekly basis. Most of our day to day work is more akin to a performance than deliberate practice[1].
I also noticed that I didn't have a great way to use spaced repetition with programming skills, so I've been working on a platform that lets you practice python fundamentals with spaced repetition. It's pre-launch but I'm documenting progress on my newsletter[2].
1. https://deliberatepython.substack.com/p/is-programming-at-wo...
1. I create diagrams/other visuals from what seem to be important concepts from the book before reading it and without knowing what they are about.
2. I will use Anki to try and draw those visuals from memory. At this point, I learn the intimate details of the visual but have the constant question in my mind,"what is this thing?". I try to time starting this process 3-5 days before reading the book.
3. I read the book as I normally would, and when I hit a discussion about whatever visual I memorized my brain immediately goes "Oh! That's what that thing was!". Those euroka moments are actually great tools for remembering concepts and with the SR system I also have a visual to tie the concept too.
Other things I've used SRS for:
- Internalizing life principles. Anytime I feel "Oh thats important principle, I don't want to forget it". Sometimes its been from a book, othertimes its useful feedback from coworkers, or just anything thats a principle I want to hvae top of mind.
- Associating faces with names. When joining a new company and meeting dozens of new people, using Anki to remember peoples names works well.
I sort of do this with my kids, dropping titbits to try and entice interest: "of course we are time travellers, moving at a second-per-second most of the time" but that could be more explicitly tailored to "... except under time-dilation". Perhaps the latter gives a hook "time dilation" to hang the concept on later when it's learned -- maybe like reserving disk space when downloading a large file. Or perhaps it's the 'transfer' of the concept to the hook, at some point, that makes for a 'repitition'.
It discusses the actual science of learning (it does not feature spaced repetition).
I didn't think we knew how information is laid down in/by neurons: could you precis this "actual science" that it teaches?
Think about it. If you become a more effective learner it can have a huge compounding effect.
This course is one of my favorites. Thanks for sharing it!
I think active recall is the more important fundamental mechanism for learning and the focus on spaced repetition tools detracts from that.
None of these people criticizing SuperMemo have actually used it (as far as I know, or if they did, probably a decade or two ago). I know lots of people that have switched from Anki to SuperMemo with way better rep loads. If you look at supermemo.guru and any of the writings of the creator, it's quite clear he knows what he's talking about. It would be pretty insane that over 30 years of research, he couldn't come up with a significantly better algorithm (currently sm18).
I base my tutoring practice around it, and I've developed an app around it [1]. I actually encourage my students (and my app users) to use spaced repetition not just for facts, but for processes as well, like coding or mathematics. Going back to old, difficult processes and repeating them has much the same beneficial effects as doing so for facts.
One thing that Gwern doesn't mention, but that I've been very cognizant of, is how hard it is to keep up spaced repetition over a long period of time. That's a big part of why I've implemented streaks and rewards in my app, and also allowed my app users to review things on their own schedule or follow the algorithm. Just forcing users to follow the algorithm continuously tends to result in very high dropout rates.
I wish that Gwern were superhuman and could write his own entire Wikipedia. Imagine what an incredible reference that would be!
https://github.com/melling/LanguageLearning/blob/master/READ...
I’ve been developing iOS language apps for many years. A recent one attempts to simply teach 100 basic words.
https://apps.apple.com/us/app/hundred-words/id1469449237
I don’t use spaced repetition but have considered it. I’m not sure if that’s more worthwhile than gamifying with a better reward system.
Anyway, I’m looking for ideas on how to make better educational apps. Thanks.
As some have mentioned, and what I went through, is spaced repetition is as good as the content, and often I made cards for learning Chinese that were like...ancient-style speaking Chinese. And then for things like languages, spaced repetition can only be a foundation, but needs to be augmented by real world practice.
1.) When there's a deadline looming i tend to drop doing it, and then after the deadline i have a bunch to catch up on.
2.) I find somewhat frequently that some of the things i learned that I thought would be good to know in the future, i no longer have a use for. It's easy enough to stop reviewing those bits, but I've wondered what kind of impact that has.
In my own spaced repetition app [1], I simply space out the amount that people have to catch up on if they develop a huge backlog. For anki, my best advice would be to take this opportunity to delete some of the cards that you really don't need, especially if you're just doing this for fun. Anki tends to be very conservative with how long it makes you review cards, anyways.
1. Not Anki (it would be quite boring of you to ask...)
2. Free (Free as in no optional features that actually cost money)
3. Easy to use
Mnemosyne: https://mnemosyne-proj.org/
Drill mode: Not great for 3 unless you are already an orgmode user, but Drill-mode https://orgmode.org/worg/org-contrib/org-drill.html is an emacs plug for spaced repetition.
[0] https://www.memorangapp.com/flashcards/108640/Star+Wars+Spac...
Mnemosyne: https://mnemosyne-proj.org/
Drill mode: https://orgmode.org/worg/org-contrib/org-drill.html is an emacs plug for spaced repetition.
This would be practically impossible with a physical system. In addition to the fact that your memory of a new cards fades faster than cards you saw a long time ago; taking the time to approximate such a system would be a large burden that software can just handle for you.
But I did my own version of spaced repetition -- when a card was really hard, I'd put it back in the deck just 5 cards back. If it was easy, I'd put it all the way in the back of my ~200 cards, or eventually remove it entirely. Or wherever it was in between, I'd slot it at an appropriate distance. It actually worked really well.