-
-
Notifications
You must be signed in to change notification settings - Fork 132
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Feature Request] Ideas to further improve the accuracy of the algorithm #564
Comments
Actually, on second thought, I should've just kept the old issue. I'm out of ideas (except for one more), so I will probably close this issue later today, once I test my final idea. |
I don't think that the issue should be closed yet. Jarrett can actually improve the formula if he gets enough time to do a proper research (like he did when he first developed the algorithm). In addition, the issue also attracts the attention of other people who might be able to help. I am not saying that any of this will happen soon but it can happen eventually. |
I think our best bet at improving D is finding out a computationally efficient way to implement best-fit D, since that wuld give us a "true" value of D, in the sense that it's the value that minimizes the deviation between predicted R and the actual outcome of the review. Any other method would be just an approximation of that. |
I do not plan to work on improving the accuracy any further because I’m out of ideas, even the fringe ones. So unless Sherlock himself wants to try to improve accuracy, this will be the final version for at least a year, possibly longer. |
@L-M-Sherlock I recommend implementing FSRS v4.5 with two modifications: new curve and new pretrain for S0, but without same-day reviews. They just aren't worth it.
|
First of all I want to thank all contributors for this new SRS algorithm, it massively improved my Anki experience so far. Regarding this particular issue, I wonder if the root of the issue is not the algo itself, but the UI. What I mean by that is that the notion of what "Hard", "Good" and "Easy" mean is rather subjective and fluid. I expect a lot of variation from people to people, and from personal experience even from deck to deck and from day to day. Depending on the general deck difficulty I may be a lot more liberal with my choice of using "Hard" instead of "Again" for instance. I also noticed that if I had a streak of "again" reviews I'm more likely to answer "Hard" for a card instead of "Again" if it was a "near miss" just because I need a win, so to speak. This was especially true when I used SM2 because of how punishing "Again" was there (full progress reset + ease penalty by default). FSRS fortunately improves massively on this. I also struggle to decide when to use Good and when to use Easy. Surely if it's not hard then it's Easy? In the end I often end up "meta gaming" and using the presented intervals to decide, if the interval is like 7d/15d I'm more likely to go "easy" because the next review will be soon enough anyway, if on the other hand it's like 1y/2y I almost never go "Easy" because those intervals feel really huge and I don't even know if I'll still be using this deck two years from now. So in other words I wonder if finding an algo trick to make Hard and Easy work "correctly" may not be impossible because the dataset itself is just bad due to everybody having their own recipe for what Hard and Easy truly mean, and these recipes were probably in part created as a way to work around SM2 issues (ease hell etc...). I really find myself using Hard/Again differently with FSRS, and I rarely use Easy at all because the default intervals just make more sense to me. |
FSRS can adapt to almost any habit, except for using Hard as a failing grade. FSRS is hard-coded to treat Again as a memory lapse and to treat Hard/Good/Easy as success. So if somebody has a habit of pressing Hard when they forgot a card, FSRS cannot adapt to that. Theoretically, it's possible to make another version of FSRS where Hard is treated as a memory lapse, optimize both versions, and then choose whichever provides a better fit. In pseudocode:
But this would be very complicated in practice. |
In addition, |
A continuation of #461.
I have changed the formula that maps R to grades again:
Now all 4 of them can be between 0 and 1. In the initial version (the one here) R(Again)=0 and R(Easy)=1. Later I changed it to allow R(Again)>0 and now I changed it to allow R(Easy)<1. I also changed the surprise function:
Now it's a mix of the loss that uses theoretical R and binary recall, and a loss that uses theoretical R and grade-derived R.
While it did technically improve RMSE, the improvement was negligible.
@user1823 I suggest closing this issue: #352. At this point it's pretty clear that neither I nor you or Sherlock will be able to improve the formula for D.
The text was updated successfully, but these errors were encountered: