-
-
Notifications
You must be signed in to change notification settings - Fork 123
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
[Question] Huge Backlog after rescheduling. Why? #382
Comments
Because FSRS predicts that those cards' retention is lower than your requested retention. |
Thank you for your reply. Can you help me understand where in your equations this negative interval is calculated? I'm curious to know why some are more negative than others, such that I can get a sense for how realistic this is for me to restudy several thousands of cards. If I were to take a few examples of rescheduled cards and look at the metrics (Difficulty/Stability/Retention) what would I expect for their values for the most negative intervals? I'm also a bit confused as the field in the card browser on Anki calls R "Retention" but the equations page calls it "Retrievability". Are these the same R? If so I guess I would expect "Retrievability" to be very low for these cards correct? Other than just a test sample of a few cards, what is the best metric to judge the model fitness for my particular data sets? I went through the colab for one of my decks (thanks for making that!) but didn't see any of the same simulation or plots when using the offline terminal method for generating the weights. Is there any way to see the R-squared or RMSE values/plots via the command line? Also do you have any rule of thumb for what values are acceptable and what value ranges you would wait for further data on? I'm worried that since my learning intervals span all the way to 28 days on most of my deck options, this messes up some assumptions you make for building the model, but I could be wrong. I really like the idea of applying ML to this application so I'm quite motivated to make this work, but I'd just like to check that the fit is sufficient enough before trying to review thousands of cards :) Guessing there are some deck options or review history I could optimize better before just diving head first into the reviews. |
They are not negative. Their intervals just are shorter than before. For example,
They are the same thing for an individual card.
![]() Please set |
You can share them in this issue. I can help you to check them. |
Well, not exactly. -1000 means that FSRS predicts that the card should have been due 1000 days before today. For an example, let's say that you last reviewed the card 1500 days back. Then, Anki gave it an interval of more than 1500 days because of which it was not due yet. But, when you rescheduled your cards using FSRS helper, the algorithm predicted that your retrievability of the card would fall to your request retention in 500 days from that day. So, it made the interval as 500 days. But, now 1500 days have elapsed since then and so Anki shows that the card was due at the -1000 day (i.e. 1000 days before today).
Yes, you got it right. But, how fast retrievability falls with time also depends upon the stability. So, lower the stability, faster is the decrease in the retrievability.
It shouldn't affect the optimization process. But, you should reduce the learning steps after you begin using FSRS. For more details, read the first answer here: https://github.com/open-spaced-repetition/fsrs4anki/wiki/FAQ However, it is definitely possible that your revlogs have some abnormal elements that @L-M-Sherlock has not considered yet. Several users have reported such issues and @L-M-Sherlock has pushed patches for most (if not all) of them. So, if you are willing to do it, it might be a good idea to quickly check the D, S and R values of randomly sampled cards from your decks and see if they make sense to you or not. By the way, @L-M-Sherlock, I noticed that this question (huge backlog after rescheduling) is not there in the FAQs. But, this question would come to the mind of most people who start using FSRS. So, I recommend you to add it to the FAQs. |
I did set that to
Here is the
and python info:
I'm on Ubuntu 22.04 if that makes any difference as well. I installed fsrs4anki-optimizer from pip, but tried running this code in pdb, but looks like you remove the package directory in a recent commit. Should we move this issue over to the new repo? From stepping through in pdb, it looks like this might be the root cause: Stepping in here (Although I'm on commit 9fa23d1 still), I'm seeing:
I'm not familiar with agg, but one possible workaround (and my preference) would be to use plt.savefig so I can take a look at them more than one at a time, and can have them for future reference. Would that be problematic? I can just change a forked/local copy to change out that one line if thats not something you'd want included in the code for some reason. Or maybe a terminal flag to default to how you have it but |
@topherbuckley you can see the figures saved in local directory with the latest optimizer now. |
And the huge backlog is partially induced by the |
I have had a similar issue. I run the optimizer each month and get a backlog of 300+ cards each time. I have ~7100 cards in rotation for this deck, with some of the cards 2+ years old. I have the weights and decks from each month I have done the optimizer if that helps. |
Yep! Thanks for adding that functionality. I think that makes for a much better UX.
I see, thanks for finding that. I can't imagine it accounts for everything though. I'm sure I didn't manually reschedule thousands of cards. I may have reschedules somewhere between 20-50 cards like that if I had to guess. You have my collection for testing if you have the time and want to put further effort towards this, but I can totally understand that you can't handle every individual case, so just update me here if you ever get around to finding any other causes for this. |
But I found 826 cards whose intervals are longer than the intervals recorded in review logs. |
I've been using fsrs v4 for a while, and I've also generated my own parameters. Also, I use Reschedule all cards every day. But I'm weird, every time I use Reschedule all cards it generates new backlog cards, even though I cleared all cards yesterday. Even rescheduling at different times of the day can have different results. Does this mean I need to update the parameters or should not use Reschedule all cards every day? |
Potential cause: open-spaced-repetition/fsrs4anki-helper#173 (comment) |
Do you enable load balance or other features? And could you provide your add-on list? |
Yes, I have everything enabled: auto reschedule after sync, auto disperse siblings (all my cards are standard question/answer), load balancing. My list of plugins is: AnkiConnect (just for auto-generating cards from Obsidian notes), FSRS4Anki helper. |
I think it is the same problem in issue: Could you disable load balance and reschedule all cards again? |
OK. I plan to fix it today. Thanks for your time. |
Patch: fsrs4anki-helper.zip |
But the graph isn't smooth. Is it the stats for global collection? Let's continue in open-spaced-repetition/fsrs4anki-helper#116 |
Research
Enter an [x] character to confirm the points below:
Question
I'm seeing a HUGE number of cards rescheduled for negative intervals after rescheduling using the FSRS4Anki Helper-->Reschedule all cards. Is this normal? Here is the stats before/after running it (Before on left, after on right)
I've been using Anki for over 10 years, so have a fairly large collection, and several decks/subdecks. I ran the command line training on all decks/subdecks individually, and some did not have enough data for pretraining, but those that did, I ran the optimization and used the weights and recommended optimized requestRetention. I added the decks that did not have enough data to the
skip_decks
array as well.Here is the configuration in the .js script I used:
The text was updated successfully, but these errors were encountered: