[FSRS] "Hard" acting as a "Again" in Learning/Relearning Phase

A common discussion in FSRS is about how "Hard” should be treated as a “PASS” (like Good or Easy) during review, and how it can be confusing for new users.

Unfortunately, in Learning and Relearning Phase, "Hard” act exactly as a "FAIL”, by that, I mean it Decrease both Stability and Difficulty, and since the interval is not based on Stability but based on Learning Steps, users would never leave the Learning/Relearning phase if they stick to use Again.

This is extremely problematic because for new users, that will be mostly confronted to new cards, they might implicitly thinkg that "Hard” is a proxy for “Again”, when it should be considered more like a “Good”, in the sense of Stability increasing (But Difficulty increasing).

I’m not sure what would be the best solution; but I think if we want to pomote the “Hard=Successful Reiew", we should consider it as a “Good” and let the learning steps be successful until the user leave the Learning/Relearning Phase. Another important point is that, even if D could increase, it’s important that S doesn’t drop, to fit how "Hard” acts in normal reviews (Stability increases, Difficulty decreases)

In any case, even if we want to lock the user in the Learning/Relearning Phase until he press “Good”, Stability should not be reduced at each Hard press, otherwise it just reinforce the fact that “Hard ~= Again”

For this card, my Initial Stability for Hard is 2.5d. However, by pressing Hard four times in a row, I just end up with a card that drop Stability lower and lower, and without leaving my Learning steps (which is a single 10min). This pattern would make me believe that pressing Hard is just like pressing Again.

1 Like

Why not? If you learn a card with short intervals (which the learning steps provide) and still cannot remember the current review good enough to press “good”, doesn’t that mean that your stability of that card isn’t high enough, meaning it must be adjusted downwards?

I would like to see some data on your suggestion, though. Maybe it would actually improve the algorithm if you do not reduce stability in learning and relearning.

To me, this sounds like you’d prefer a simplification; so if FSRS could handle the learning steps itself, then there would be less things the user has to think about (and less to “optimize” / modify).

I believe the point is that most people wouldn’t go into such circuitous logic and would simply assume Hard is a sort of fail when it comes to learn cards (but not others). On a surface level, isn’t that a bit asymmetric behaviour?

But regarding your main point, I don’t think its necessarily true. I’ve seen other folks around here who, like me, has experienced improved recall for hard cards after a day has passed (maybe something to do with sleep but I wouldn’t speculate much on the biomechanics).

Well, the point here is to align how Hard behaves between (Re)Learning and Review phase. If Hard should or not be able to decrease Stability, I think this is more a question about FSRS behavior itself. But as far as I know, Hard being modeled as a “Success” grade, and Success grade implies non-decreasing Stability is I guess how the user data tend to behave.

Making special case for Learning/Relearning phase is in my opinion adding the risk that new users will just believe that a Hard is kinda like a Again, and thus doing the same behaviour during their reviews. Also, it kinda break the “initial stability (hard)” parameters which now won’t really be the Stability applied to the card after graduating from the Learning phase, putting a lot of emphasis on the learning phase itself instead of the normal scheduling.

In Discord, we already agreed for FSRS to adapt the equations so Stability should not drop if pressing Hard again and again. Now the question is, shouldn’t we also treat “Hard” as a sufficient way to graduate from Learning Steps ? Easy for example has a rule of being able to bypass all Learning teps. Wouldn’t it be OK to treat “Hard” as a “Half Good” and thus requiring 2-”Hard” to graduate one “Learning Steps” ?

Once again, the whole argument is about trying to not create the false assumption for the user that Hard is some kind of Failed grade, but a Success grade.

What do you think @dae ? It’s quite an impacting change in how Hard behave during Learning stage, so we can’t really move forward without your input.

See already the change made to FSRS to make sure S(Hard) doesn’t drop again and again during same-day review : Non-decreasing SInc(Hard) in same-day reviews by Expertium · Pull Request #376 · open-spaced-repetition/fsrs-rs · GitHub

What was the reasoning? Has it been simulated and found to be better? Otherwise, from a logical point of view, I don’t think this change makes sense.

Regarding your other question with the behavior of the hard button: I personally don’t think its necessary but also probably wouldn’t mind such a change; provided the change does not reduce my learning success / retention in any way.

Yes, I remember in the past, to try to solve the “hard again” problem/confusion, we tried to consider a Hard as a Again (so the cost function would give a penalty to high retention prediction if the user pressed "Hard” at that time) and it was degrading performance.

Of course, like always, if you train specifically on users that use Hard as a proxy for Again, you could have the opposite conclusion, but in average that’s how it behaved.

To do a quick summary, the core characteristics of each grades are :

  • Again : Lower Stability, Higher Difficulty
  • Hard : Stability Increase+, Higher Difficulty
  • Good : Stability Increase++, Slightly Lower Difficulty
  • Easy : Stability Increase+++, Lower Difficulty

How important the effect is for each of those variations is optimized for each user (see the params description here Anki FSRS Visualizer ). More descriptions of those params can also be found here A technical explanation of FSRS | Expertium’s Blog , where for example it’s stated that 0<w15 (hard stability multiplier)<1, and benchmarks to show FSRS accuracy can be found here : GitHub - open-spaced-repetition/srs-benchmark: A benchmark for spaced repetition schedulers/algorithms

But once again, the most important thing outside accuracy is that the user’s interactions with the system are consistent enough so models can be build on top of those. If, in some phase like learning phase, the system give the impression that a Hard is a weaker Again, and in other that Hard is a weaker Good, it can lead to confusion and developping bad habits which will make any prediction weaker, whether we consider Hard to be a Failed or a Passed review.