-
-
Notifications
You must be signed in to change notification settings - Fork 139
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
Collection of low priority & breaking ideas for FSRS #300
Comments
We had an issue like that before. I'm pretty sure these 2 ideas are already implemented. |
Sherlock didn't close this issue, so I'll leave it here too. |
@L-M-Sherlock I recommend removing these 2 graphs |
Unrelated, but I just wanted to ask: is it still necessary to have this code in each card type's template? |
I need them to check the distribution of stability and difficulty.
If your Anki version is higher than 2.1.62, you don't need to add that code. |
A major problem in releasing a new major version was that it would force all users to retrain their parameters. Today, I got an idea that would make this problem less severe. No action is needed right now but knowing that the following solution exists decreases the resistance to the release of the next major version of the algorithm. The scheduler.js is not a problem because a user can continue to use the older scheduler with the older parameters. The main issue is with the helper add-on. If the helper add-on insists on the presence of a newer version of the scheduler, the user would have to update the scheduler and update the parameters. The solution lies in updating the add-on while maintaining backward compatibility. With the update, the main changes would be related to reschedule.py. So, I recommend creating a new copy of that file and using one file for dealing with scheduler v3 and one file for dealing with scheduler v4. Other features (such as postpone, advance, disperse, stats, browser) would have minimal changes. So, the code for dealing with both v3 and v4 scheduler can be incorporated in the same file. One obvious problem with this approach is that any bug fixes to reschedule.py would need to be applied to both the files. But, this is not a major problem in my opinion because both files would still be very similar. Eventually, we would drop the support for v3 FSRS scheduler, reducing the maintenance load. Another important change, which is related to the optimizer: Just after the output parameters (in section 2.3), add a message: "Note: These values should be used with FSRS scheduler v4.0 or above." |
No, it's actually the opposite. Once the R-matrix is implemented, all calculations involving R (postpone, advance, average retention in Stats, etc.) must use weighted R (a weighted average of the theoretical R and its corresponding R-matrix entry). This will require major changes to the code.
I think you are overestimating how much of a problem that is. For people who are already using FSRS, optimizing parameters is a familiar task, they won't mind. For people who are not using FSRS right now, this process will be just as unfamiliar in v4 as in v3. Backward compatibility is a good idea though. |
Well, I didn't take the R-matrix into account (partly because I don't completely understand it).
But, nobody would like an update (to the helper add-on) forcing them to immediately update the scheduler code and to immediately re-optimize the parameters. |
Here's the important part. |
@L-M-Sherlock I asked this a long time ago, but I still want to ask: do you have any recommendations at all regarding how often parameters should be re-optimized? Anything at all, even a simple rule of thumb like "4 times per year for collections younger than 1 year, 2 times per year otherwise". Of course, a formula would be better. |
I often recommend once a month is enough in other forums. |
Sherlock, I also have a bit of an odd question - how do you reply so fast to questions related to FSRS on r/Anki? Like here: https://www.reddit.com/r/Anki/comments/14nrrur/fsrs_ankidroid_compatability/ |
Also, just for fun let's add Memrise's "algorithm" to comparison.
It's that simple. It has no adaptive properties at all, just constant intervals. |
Query
I have an another surprising experiment: FSRS with 13 parameters has approaching performance to LSTM/GRU with hundreds parameters. |
Isn't that to be expected? Sinc is proportional to S^-w, so Sinc tends to decrease as S itself increases. If anything, I'm actually impressed that the neural net figured it out. Although I would assume that the limit of S would be more like 20 years, not 7 months. |
It may rely on the interval in my collection. If I use a collection of new user, it would be more short. |
Also, it doesn't seem like running a model with 1000 parameters is possible, google colab runs out of RAM way before that |
I update the notebook. Now it shows the result of LSTM with 1489 weights.
Maybe we need to pay more attention to the data instead of the model. There would be inherent conflicts in your data. |
Well, we've tried in the past, but got nowhere. |
Because I removed the split in this notebook. The weights from different splits cannot be averaged in a rational way when we train the LSTM. |
Another low-priority idea is to make it so that if the user sets |
I still think that "Free Days" should affect all cards, including cards in the (re)learning stage. Otherwise the name is misleading and the feature isn't doing what you would assume. |
The due of (re)learning cards is formatted in a different way from review cards. So it's a technical issue. I don't want to dive into the complicated code around the (re)learning stages. It would induce more bugs. |
It seems to perform about the same, at least on your collection. I thought that such a big increase in the number of parameters would make it far more accurate. |
This issue serves to collect low-priority ideas that would break compatibility with the current version of the scheduler and helper. So, these should be implemented only when we release a new major version of FSRS.
The text was updated successfully, but these errors were encountered: