-
Notifications
You must be signed in to change notification settings - Fork 16
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
Achieve parity with the Python optimizer #88
Comments
|
In my opinion, the current outlier filter is too aggressive (it removes too many reviews). This is fine for the pretrain function (because the pretrain method is fragile). However, the train function should have access to more reviews. So, I think that we should build a less aggressive outlier filter for the train function. There is no hurry in doing this. But, I wanted to make this point here so that you don't waste time and effort in applying the current outlier filter to the trainset. |
The python optimizer selects the parameters from the epoch with the minimum loss. I don't think that the rust optimizer behaves similarly. Related commit: open-spaced-repetition/fsrs4anki@1719dae |
I also find out the difference, but the framework also doesn't also me to implement a similar feature. |
We could always switch to our own training loop if need be. @nathanielsimard I presume something like this is not supported out of the box at the moment? |
I'm going to prioritize adding early stoping within |
Burn Issue: tracel-ai/burn#841 |
In case you aren't already aware, I wanted to let you know that Burn now supports early stopping when training, implemented in tracel-ai/burn#878. Probably, now is the time to implement early stopping in the Rust version of the FSRS optimizer. By the way, the comparison between the Python and the Rust versions of the optimizer is somewhat unfair. The Python version filters several reviews before (training and) evaluation which are not filtered out by the Rust version. Examples include:
In my opinion, evaluation should happen for these reviews, which means that the behavior of the Rust version is desirable. However, we should keep in mind that it is inconsistent with the Python version. |
tracel-ai/burn#882 will need to be merged before we can update burn |
The python version doesn't filter any reviews before training and evaluation in the benchmark. Here is the code: |
Currently the generated weights from this crate are slightly behind the Python optimizer. Not urgent, but in the long run, it would be nice if this crate could perform as well.
https://github.com/open-spaced-repetition/fsrs-benchmark#weighted-by-number-of-reviews
Any thoughts on what might be driving the differences?
The text was updated successfully, but these errors were encountered: