Several FSRS-related suggestions

These are completely different things.

They make sense. But it would be tedious to write about each of them.

order added; latest added first. This was often asked for, previously it was only in filtered decks. I would use it for
My technique for studying poetry

1 Like

@dae There is a way to have Ease grading in a 2 button system but it requires tracking how much time the user took to click ‘Show Answer’. Looking at the response times, we then optionally modify the Good grade to a Easy grade or Hard grade. This should work much better than normal 4 button system.

But, the issue is if a user is aware of this happening it might make him extremely self aware of how much time he is spending per card. It might also impact user behaviour in a negative way. How do you view this if this were to be implemented?

Slightly relevant, when I first switched to FSRS I thought it was looking at response times (I forgot about fuzz) and this did made me bit more self aware about how much time I was taking. (You saw my comment in Github and corrected me back then). Eventually, I didn’t think it was a big deal. I sort of got used to it, and did my reviews more naturally after some time.

2 Likes

I just want to make it clear that I do not endorse this idea. I suggested taking into account the time of the day when review happened (2 AM, 5 PM, like that), which will make users slightly more self-conscious, but not terribly so. But sorata’s idea will make users too self-conscious. Even I wouldn’t want it, and I have a terminal case of “programmer’s efficiency disease”, as another Discord user called the obsession with fine-tuning Anki.

1 Like

Not even as an opt-in?

That would require maintaining two different versions of FSRS, with (somewhat) different code.

I thought we only need a code for modifying grades, after that it works with the current FSRS.

The current FSRS doesn’t take the answer time as input at all. it’s only used in simulations for CMRR.

1 Like

How about if we reduce the precision of the data? Because I saw the average response times show less than 5 seconds for Easy grading but more than 20 seconds for Hard grading. Is it still going to trigger that disease?

We could just put a celing on how much answer time affects the increase/decrease in memory stability, so that it can’t make too much of a difference. But again, I don’t think this is a good idea in the first place. I stick with my suggestion to include time of the day (in the 24-hour format) and the number of reviews done on that day.

You never know unless you test the ideas.

It’s not that I think “This won’t improve metrics”. It very well might. I just don’t like the feeling when every single extra second of hesitation (or an answer that is a little too fast than usual) can affect the interval.

I like Sorata’s idea very much. That is a thing that I had in my head for a while now. As a makeshift solution, I am using @jhhr"'s code to indicate if I am spending a lot more time than the average for a card. It helps keep me attentive at all times, so it is not that bad (perhaps because I am a performance weeb who is all about maximizing efficiency).

Honestly, I don’t really see why this could be a bad idea (perhaps maybe if during a long review marathon run your brain starts to fart a lot more come the end of the day). And maybe if you are not a performance user who is using Anki casually, this may be not a desired change.


@Expertium
I have one other ask of you. I brought this up to you maybe about 6 months ago or so, and I wonder if there is any change of sentiment regarding this issue.
I spoke to you about how FSRS is treating cards by presets of their decks and not treating them individually.

I believe you spoke of there having to be a minimum count of reviews so that FSRS can function properly which is why it would work better with an entire deck rather than individual cards.

BUT

Now that FSRS theoretically can require a lot fewer reviews -it was about 400 back then I believe - to guess the parameters (I believe it was just 14 reviews or smth and it is kept at 100 if I am not mistaken), could we be seeing in the future an FSRS v5 where FSRS assigns weights to each card instead of doing it to an entire deck with a preset :question:

Because I don’t see the difference between this and having a complete deck with one single card in it and a preset. I mean you could technically do this right now with this build of FSRS (but is extremely inconvenient).
What does Sherlock think of this :question:

So why not just treat every single card as its own “mini-deck” :question:

This will be a regression, not an improvement.

From Spaced Repetition Algorithm: A Three‐Day Journey from Novice to Expert · open-spaced-repetition/fsrs4anki Wiki · GitHub

Although SM-2 can fine-tune the review schedules for individual flashcards based on ease factors and grades, these adjustments are made in isolation, without regard to the overall learning process.

In other words, SM-2 treats each flashcard as an independent entity. To overcome this, SM-4 introduces an Optimal Interval (OI) Matrix, replacing the existing formulas used for interval calculations.

Just like SM-4, FSRS also makes adjustments to a card’s schedule based on information from other similar cards. If this is not allowed, FSRS would become almost the same as SM-2.

In fact, FSRS should aim to be able to generate a set of parameters that work optimally on all the cards. As far as I know, SuperMemo also uses a single set of parameters for all the cards of the user.

1 Like

This will be a regression, not an improvement

And why exactly is this a regression :question: The way I see it, a select 20 hard cards may perform differently if put in a different deck because that deck has different presets.

20 cards perform differently in Deck A than when the same 20 cards are put in Deck B. I won’t say it is for the better but I believe that causes a change. I don’t know if it is for the better or the worse.

Do you see what I am getting at here, dont you think that that is a source of error :question:

The problem is that FSRS is not “perfect” and there are some cases where putting cards into different presets is beneficial. Putting very difficult cards into a separate preset is one such case.

However, if you don’t allow FSRS to learn from the rating history of one card and apply the learning for scheduling another card, FSRS would not be any better than SM-2.

The goal is to make FSRS able to produce a set of parameters that are optimal for all the cards that a user has.

The problem is that FSRS is not “perfect” and there are some cases where putting cards into different presets is beneficial. Putting very difficult cards into a separate preset is one such case.

The word “some” is the thing that gives me the itches. I hope for a version of FSRS where that “some” is extracted somehow without having to deal with the disadvantages mentioned but oh well…


The other question I have is → How is what I said any different than just using an entire deck for a single card and forcing FSRS (with its current build) to define parameters in this way for this single card (other than using Anki like a complete psycho having 2000+ decks on your menu each with the names Card 1,2,3,4 etc) :question:

There is no fundamental difference.

However, if you do that, you will make FSRS less accurate for you as compared to having multiple cards in the same preset.

1 Like

When a card has 0 reviews (it’s a new card), there is no data at all. So that’s already a problem. This means that FSRS won’t know what a good first interval is for you. Currently, FSRS estimates what’s a good first interval by looking at the first and second reviews of other cards.

Similar considerations apply to consecutive reviews as well. By the time you get enough data to optimize parameters (say, 50 reviews) for this particular card, it’s either been 100 years or the card has been a leech for a while. Normally, you won’t get anywhere near 50 reviews in a short period of time.

And then there is the subtle part - it’s entirely possible, and quite likely, I would say, that FSRS will perform worse anyway, even without taking into account what I said above. FSRS and any other ML algorithm needs training data. More training data is almost always better than less training data. It helps the algorithm learn to generalize, aka find patterns without learning noise. Even if you don’t go to such extremes as to make a new preset for every card, and instead make a new preset for, say, every 20 cards, I still suspect that it would be worse than making presets for thousands of cards.

I theorize that there exists an optimal level of “grain” for FSRS. Definitely not one preset for the entire collection, that’s too crude. But also not one preset per card. It’s something that me and LMSherlock cannot currently investigate, since the Anki 20k dataset doesn’t have deck/preset info, and god knows when Dae will make a new dataset for us. But yeah, I suspect that while making a few presets helps, at some point you end up splitting the data too thin.

2 Likes

Okay, I see. I understand now. So what is your vision of a Version 5 for FSRS :question: (apart from what Sorata has said though that is still arguable)

Because I only had this in mind and it seems to me that FSRS isn’t really “updatable” at the moment, at least not yet

FSRS-5 will have a different formula for initial D, though that barely affects the metrics. And it will take into account same-day reviews, which also has a pretty small impact on the metrics. So overall, don’t expect anything revolutionary. Same-day reviews have a very small impact on long-term memory.

1 Like