×
all 84 comments

[–]Glutanimate medicine 60 points61 points  (0 children)

Thanks guys, this is fantastic work! It's really great to see FSRS continue to improve and remain at the forefront of flashcard scheduling.

[–]Shige-yuki 36 points37 points  (13 children)

IMO, need to embed LMSherlock's Buy Me a Coffee page in Anki menu -> Help ->Support Anki.

[–]LMSherlockcreator of FSRS 41 points42 points  (11 children)

Sadly, the donation from FSRS is less than my salary of a month.

[–]WhatTheOnEarth 12 points13 points  (5 children)

It’s an incredible algorithm. It’s such a noticeable difference and it’s very effective even based on just feeling.

I study fewer cards, retain as much as I need with the optimization feature and they’re spaced far more effectively (for me).

It sucks that the donations don’t really amount to much. But my god, the impact this has as a net benefit to all Anki users is immense.

Thank you.

[–]6-1j 0 points1 point  (4 children)

How to know when the optimization threshold has been passed? I know there is a time and a count threshold but I don't keep those informations in mind. Maybe Anki stats could tell me if I have passed the threshold?

[–]ClarityInMadnessask me about FSRS[S] 1 point2 points  (3 children)

There is no time threshold. You need 1000 reviews per preset if your version of Anki is earlier than 24.04, and 400 reviews per preset if your version is 24.04. It will be lowered further in the next release.

Also, please read this, especially link 3: https://www.reddit.com/r/Anki/comments/18jvyun/some_posts_and_articles_about_fsrs/

[–]6-1j 1 point2 points  (2 children)

Heard about a 1 month thresold but can't remember if it was to give a count idea or if over that time you could trigger it whatever the reviews number. I had doubt so I avoided counting time. And I forgot to count reviews so I still don't know till today when I should do my first optimization. I guess it's ubiquitous but I tell it anyway, optimization should be automatized and part of FSRS itself in the future, not staying an edge hidden function, because it's core of FSRS and what does make it great, not something special or anything

But yet, I still don't know my review thresold is met or not. And I use one preset for all cards. First I've tried to make a FSRS special preset but not wanting to bother with that and finally I wasn't so afraid to tint with my older reviews so I applied on default preset

[–]ClarityInMadnessask me about FSRS[S] 1 point2 points  (1 child)

You probably heard "1 month" in the context of how often you should reoptimize parameters.

Dae, the main Anki dev, says that automatic optimization could cause issues when syncing across different devices, so it won't be implemented for a long time. Trust me, I want automatic optimization as much as the next guy.

As for the number of reviews, yes, that's inconvenient. In the future the number will be displayed when you press "Evaluate". Right now the number of reviews is only displayed when the optimizer is actually running.

[–]6-1j 0 points1 point  (0 children)

I think the best is to randomly press optimize really and that's all. Too much work for insignificant change in any case. Important thing is to press it regurlarly really and that's all

[–]Shige-yuki 14 points15 points  (2 children)

  1. First, remove FSRS4AnkiHelper from AnkiWeb and put it behind paywall.
  2. Develop HyperFSRS-V5 and put it behind paywall (It's almost the same as FSRS4 no problem).
  3. Bribe ClarityInMadness and ask him to promote the new algorithm (Only he understands the algorithm in the Anki community).
  4. Increase the FSRS version number once every year (It's almost the same as FSRS4 no problem).
  5. Enjoy developing your algorithm️👍️

[–]LMSherlockcreator of FSRS 14 points15 points  (0 children)

lmao

[–]ClarityInMadnessask me about FSRS[S] 5 points6 points  (0 children)

Only he understands the algorithm in the Anki community

I'm sure there are other people who understand FSRS well. Maybe two...no, maybe even three of them!

[–]tiktictiktok 1 point2 points  (1 child)

O.o, without getting into too much detail, what do you do for a living?

[–]LMSherlockcreator of FSRS 6 points7 points  (0 children)

I’m working for MaiMemo. It’s a popular language learning app in China.

[–]ClarityInMadnessask me about FSRS[S] 17 points18 points  (0 children)

I'm not sure if Anki devs would approve that. But anyway, yes, if somebody wants to support LMSherlock, the creator of FSRS, go here: https://ko-fi.com/jarrettye

[–]MemorizingFormulas 26 points27 points  (6 children)

Bro I’ll just do my cards and let you work on the FSRS algorithm. Thanks. Will donate you some money.

[–]ClarityInMadnessask me about FSRS[S] 40 points41 points  (5 children)

I'm not the dev, lol. I'm just some random guy on the Internet. You can support LMSherlock/Jarrett Ye here: https://ko-fi.com/jarrettye

[–]KaleidoscopeAgile134 1 point2 points  (4 children)

The information you compiled here in this post made me think you are either someone who frequently contributes in either Anki or FSRS development, it needs big brains to understand such complex data, how do you even do that? I reviewed 1000 cards should I optimize my FSRS parameters or should I use the default ones, and how frequently should I optimize them, someone commented that Damien advises to do it monthly. Edit: From the below comments it seems like you are really a developer I guess.

[–]ClarityInMadnessask me about FSRS[S] 1 point2 points  (1 child)

I'm not a dev. I'm just a random guy who's like "Hey, I have this cool idea how to improve stats/algorithm/benchmark/etc., can someone who's good at coding implement it?". Well, sometimes I contribute code directly, but rarely. Usually I need a lot of help from LMSherlock.

Btw, I'm a college dropout and my major isn't math or compsci, it's chemistry, lol.

[–]KaleidoscopeAgile134 0 points1 point  (0 children)

Oh ok maybe I was just confused but could you pls answer my questions from the above comment.

[–]ClarityInMadnessask me about FSRS[S] 0 points1 point  (1 child)

Please read the guide, link 3 from this post: https://www.reddit.com/r/Anki/comments/18jvyun/some_posts_and_articles_about_fsrs/

It answers pretty much any question about setting up FSRS that you may have.

[–]ran3000 4 points5 points  (5 children)

Giacomo here, from reference 2 "Memory models for spaced repetition systems".
Did you ever test R-17 or DASH[RNN]?
I'd be very curious to see where they end up on the benchmark! They have many more parameters than the other contenders, but my guess is that they would be close to the DASH family in terms of RMSE. Let me know if I can help.

[–]ClarityInMadnessask me about FSRS[S] 2 points3 points  (2 children)

Did you ever test R-17 or DASH[RNN]?

No, but R-17 is what gave me the idea of making NN-17. I thought that your implementation of R-17 deviates from how SM-17 is described on https://supermemo.guru/wiki/Algorithm_SM-17 too much, so I made my own implementation with a lot of help from LMSherlock. We don't plan to benchmark DASH[RNN], but we are open to benchmarking more machine learning algorithms. If you want to help with the Transformer or if you want to add some other algorithm, feel free to open an issue: https://github.com/open-spaced-repetition/srs-benchmark/issues/new

[–]ran3000 0 points1 point  (1 child)

Ok, I need to look into NN-17 then. Might try to benchmark R-17 and DASH[RNN] myself.

[–]ClarityInMadnessask me about FSRS[S] 3 points4 points  (0 children)

Relevant code: https://github.com/open-spaced-repetition/srs-benchmark/blob/main/other.py#L738

Feel free to ask me "Why is that formula like that?" and stuff like that.

[–]ClarityInMadnessask me about FSRS[S] 1 point2 points  (1 child)

Btw, out of curiosity, how did you discover my post?

[–]ran3000 2 points3 points  (0 children)

x.com I'm not working on schedulers / memory models anymore, but I'm very much working in the SRS space.

[–]lemniscate 4 points5 points  (0 children)

Thank you for this very interesting analysis and for the bibliography. I hadn't seen KAR3L before. I suppose its method could be adapted to FSRS by using semantic similarity to assign new cards parameterizations that had been learned from existing cards with longer histories.

[–]heyjunior 5 points6 points  (19 children)

I’d personally recommend to people to back up their decks before first trying switching to fsrs on decks they have a lot of progress on. I wasn’t getting anywhere near the specified retention and the scheduling was screwed up on 3000 cards by the time I realized it was never going to work.

I came here to get help and ask why it wasn’t working for me and everyone just said “raise the retention rate” but if I already have it set to 80% of cards and I’m retaining maybe 20%, how is choosing an arbitrarily larger number going to fix it.

I’m not the only one that’s had issues with it. Unfortunately I had to restart my progress on that deck because the scheduling was so off.

[–]First_Grapefruit_265 1 point2 points  (0 children)

Yeah the theory on FSRS seems to be very confident but the real world feedback seems to be questionable. There appears to be a particular danger in converting decks with progress. As far as I can tell, nothing has been proven. The hype is misleading.

[–]ClarityInMadnessask me about FSRS[S] 0 points1 point  (17 children)

Do you have a habit of pressing Hard when you actually forgot the card?

[–]heyjunior 0 points1 point  (13 children)

The deck that I used it on is Japanese vocab, the only time I use Hard is if I get the word correctly but my pronunciation is off. So maybe that’s part of the problem for me.

[–]ClarityInMadnessask me about FSRS[S] 10 points11 points  (11 children)

Misusing Hard is the only thing that can completely screw FSRS up. Well, maybe also having max. interval of 2-3 days. My recommendation:

1) Download Anki 24.04

2) Use default parameters until you accumulate at least 400 "proper" reviews (either don't use Hard or use it if you fully recalled the card, but after a lot of hesitation)

3) Once you have at least 400 reviews, chose the date for "Ignore reviews before", then run the optimizer to obtain personalized parameters that aren't affected by your bad review history

If even that doesn't help, then revert back to the old algorithm

[–]heyjunior 0 points1 point  (0 children)

I appreciate the clarification! I probably do underestimate how often I use Hard. Maybe I’ll try again sometime.

[–]tiktictiktok 0 points1 point  (8 children)

Im still newish to Anki, and it's been 1 or 2 months where i was slowly starting to use Anki more properly I swapped to FSRS. And been using it since, (been at least 2 months, 3?)

So a bit of a paranoid question, but is there a way for me to check to see that FSRS is working as intended for me?

[–]ClarityInMadnessask me about FSRS[S] 2 points3 points  (6 children)

You can download the FSRS Helper add-on, Shift + Left Mouse Click on Stats and check the True Retention table. Ideally, your monthly true retention should be close to your desired retention. Desired retention is what you want, true retention is what you get. If they differ by >5%, that could indicate a problem. Unfortunately, in that case there isn't much that you can do. Just do your reviews normally and occasionally reoptimize parameters.

[–]tiktictiktok 0 points1 point  (5 children)

does the True Retention table also calculate how you answered "Learn" cards?

[–]ClarityInMadnessask me about FSRS[S] 1 point2 points  (4 children)

You mean "red" cards, in the learning stage? No, FSRS cannot affect them in any way. Btw, please read this in case you haven't yet: https://github.com/open-spaced-repetition/fsrs4anki/blob/main/docs/tutorial.md

[–]tiktictiktok 0 points1 point  (2 children)

Oh wait, now im questioning everything. I followed Anking's video and set my Learning Steps to 10m, 1d. Should I not do this?

[–]ClarityInMadnessask me about FSRS[S] 0 points1 point  (1 child)

Around 20:26 he says that you can leave it, but it's not recommended. So maybe you just misinterpreted him.

In any case, follow the guide I linked.

[–]tiktictiktok 0 points1 point  (0 children)

Thank you!

[–]heyjunior 1 point2 points  (0 children)

Honestly if it weren’t working I think it would be obvious. If you’re retaining the majority of your cards when you’re reviewing I wouldn’t worry about it. 

[–]6-1j 0 points1 point  (0 children)

Thought that FSRS was all about learning how we use the buttons to counteract bad effects

[–]SirCutRy 0 points1 point  (0 children)

What's your rate of using Hard? You can see it in the statistics section.

For me it's 0.03%, 0.1%, and 0.17% for Learning, Young, and Mature cards respectively, for the past year.

[–]lQEX0It_CUNTY 0 points1 point  (2 children)

Again should be renamed to Forgot

[–]ClarityInMadnessask me about FSRS[S] 0 points1 point  (1 child)

You can suggest it here: https://forums.ankiweb.net/c/suggestions/17

But the chances that the devs will say "My goodness, what an idea!" are catastrophically small

[–]Damien_Chazelle_Fan 1 point2 points  (0 children)

Fascinating. Great work and thanks for all you do!

[–]Noisymachine2023 1 point2 points  (0 children)

Outstanding analysis, FSRS is achieving great results.

[–]Unkant 1 point2 points  (0 children)

11) SM-2. [...] Note that in our benchmark it is implemented the way it was originally designed. It's not the Anki version of SM-2, it's the original SM-2.

I wonder how much different would the Anki version of SM-2 be in terms of performance. I'd expect that after all the development effort put into Anki, and with the user feedback collected throughout the years, the specific SM-2 implementation in Anki would be a bit more refined than the original specification from 35+ years ago. Is that the case, or are the differences really not significant enough to warrant including it in the comparison?

[–]destroyed233 1 point2 points  (2 children)

I’m trying to convince some classmates to switch to FSRS. I’ve helped them with settings but they all stress over the cards being sent so far ahead…

[–]ClarityInMadnessask me about FSRS[S] 0 points1 point  (1 child)

Desired retention is the lever that you pull to control FSRS. Higher retention = shorter intervals = more reviews. It's pretty much the only setting that you have to actually care about.

[–]destroyed233 0 points1 point  (0 children)

Hahah trust me, I’ve told them to increase the Desired retention. I think it’s always a bit scary to switch to new settings or a completely new algorithm. Their minds are so used to learned steps and seeing the cards more than they think they need to. I’m all on board with FSRS probably to an annoying degree, lol

[–]await_yesterday 1 point2 points  (25 children)

I don't understand the motivation for the RMSE metric. Prima facie it's the wrong thing to do; going from p=0.98 to p=0.99 is a much bigger deal than going from p=0.5 to p=0.51, but RMSE will judge them the same. Probabilities only subtract sanely when you express them as log-odds.

[–]ClarityInMadnessask me about FSRS[S] 2 points3 points  (24 children)

Log loss is used internally during the optimization, RMSE is used externally because it's easy to interpret.

[–]await_yesterday 1 point2 points  (21 children)

RMSE is used externally because it's easy to interpret.

No, I don't think so. How am I meant to interpret root-mean-square of a difference of probabilities? The importance of this quantity changes according to whether you're near 0.5 or near 0 or 1.

Log loss is more interpretable because it's the "surprisal" term in entropy.

[–]ClarityInMadnessask me about FSRS[S] 1 point2 points  (20 children)

You are literally the first person who thinks that log loss is more interpretable than RMSE. Log loss has desirable mathematical properties, yes, but can you describe it in layman's terms? Something more intuitive and clear than "it's a scoring rule used for probabilistic forecasts"?

[–]await_yesterday 1 point2 points  (19 children)

It's easy to construct (and encounter) examples like having probability of 0.98 with a RMSE of 0.03. How am I meant to interpret that? A naive confidence band is [0.95, 1.01], i.e. an impossibility. RMSE just doesn't make sense on a bounded interval.

Log loss is literally just "surprise". If you think the probability is 0.5 and it's really 0.51, you're only a little surprised. If you think the probability is 0.01 and it turns out to be 0.02, you'd be more surprised. That's intuitive.

[–]ClarityInMadnessask me about FSRS[S] 0 points1 point  (18 children)

I don't think that "My surprise is 0.33" or "I'm surprised by 1.5" is very intuitive.

[–]await_yesterday 0 points1 point  (17 children)

In this context we're comparing models, so the absolute size of the metric isn't that important. We care about the relative rankings of models according to the metric.

But there is a direct interpretation of surprisal, it's the amount of information contained in the event. If you use base-2 log, the unit is bits, as in kilobits etc. Surprise of 1.5 means the event has the same information content as 1.5 coinflips.

[–]ClarityInMadnessask me about FSRS[S] 0 points1 point  (16 children)

In this context we're comparing models, so the absolute size of the metric isn't that important. We care about the relative rankings of models according to the metric.

True.

Surprise of 1.5 means the event has the same information content as 1.5 coinflips.

Interesting, I never thought about it this way. Though I still think that if you tried to explain this to someone who doesn't have a background in something math-heavy, they would be confused.

[–]await_yesterday 1 point2 points  (15 children)

I don't think logs are that much harder to understand than roots, means, and squares.

Let's do it from first principles. We want a mathematical meaning of the English word "surprise". Let's consider some special cases:

  • if something is a certainty, seeing it happen isn't a surprise at all
  • if something is very likely, seeing it happen is a little surprising
  • if something is very unlikely, seeing it happen is very surprising
  • if something is impossible, seeing it happen is infinitely surprising

So the "surprise" of an event, should be a decreasing function of the probability of that event: zero for p=1, tending toward infinity as p approaches zero.

Then suppose we have two events A and B, that are independent of each other. If we see A happen, and we see B happen, then it's reasonable to say that the surprise for seeing them both happen is the surprise of A plus the surprise of B. We know that the probability of both A and B happening is the probability of A multiplied by the probability of B. So the "surprise", whatever it is, has to work like surprise(A x B) = surprise(A) + surprise(B).

At this point our hands are tied; the only function that works is -log_a(p). Any base a will work, it just amounts to rescaling, like the difference between metres and feet.

[–]ClarityInMadnessask me about FSRS[S] 2 points3 points  (14 children)

Now try explaining this to people who don't have a background in math/physics/compsci and report the results.

[–]refinancecycling 0 points1 point  (1 child)

Do you mean that RMSE number is safe to ignore?

[–]ClarityInMadnessask me about FSRS[S] 0 points1 point  (0 children)

It's up to you. You don't have to look at either metric to use FSRS.

[–]Unusual_Limit_6572 0 points1 point  (0 children)

The issue with neural networks is that the choice of the number of parameters/layers is arbitrary.

This is not correct, for various use cases researches were able to mathematically derive lower bounds for deep neural network architectures.

[–]David-Trace 0 points1 point  (0 children)

This is awesome

[–]BigYellowWang 0 points1 point  (0 children)

/vt/ anon codes my favorite flashcard app, who knew