slaypni / SM-15

Spaced repetition for memorizing tons of things.
MIT License
158 stars 34 forks source link

Question about the initial forgetting curves #1

Closed yangchenyun closed 9 years ago

yangchenyun commented 9 years ago

Hi @slaypni , Thanks for writing out this implementation, I have used it as a reference when I try to implement the algorithm. There are several initial "tweaks" to make the algorithm work properly, such as AF range, REP range etc. I found your implementation follows the description quite well. But for the forgetting curve initialization, I cannot found any relevant description about supermemo site. The closet I could find is:

At the beginning of the learning process, there is no repetition history and no repetition data to compute R-Factors. It will take some time before your first forgetting curves are plotted. For that reason, the initial value of the RF matrix is taken from the model of a less-than-average student.

 I am curious about how you choose to setup that curve ?

Best,

slaypni commented 9 years ago

Hi @yangchenyun, Thanks for your close look at my code. I am afraid that it could have been too complicated.

As you found, It is necessary to find out some initial curves. If I had some data collected from students like SuperMemo, I was able to utilize it. But I didn’t. So I just invented curves which may similar to “less-than-average student”. I hope it works. However, I don’t know if those are really good points or not actually.

Was I able to address your question? I wish you can complete your implementation.

yangchenyun commented 9 years ago

Hi @slaypni , After reading the algorithm, it is not hard to follow your code; and it helps me understand further about the original algorithm and to implement my own, thanks for open sourcing it! When you are writing out the initial curves, do you read some references or you estimate the "less-than-average-student" by yourself? I am curious about that choice you made behind the scene.

slaypni commented 9 years ago

The way I wrote the initial curves was not sophisticated at all. First, I assumed that it could be represented by exponential function because forgetting curves are modeled by exponential regression in SuperMemo. Then I tried to find how to set coefficients and parameters a and r by modifying them many times watching the resulting shape of the function using WolframAlpha. The criteria to see how it is good was the images of forgetting curves on the SuperMemo website. I tried to imitate the shape. In addition to that, The forgetting curve in my brain was also another standard to some degree.

yangchenyun commented 9 years ago

Wow, actually this "shape matching" is what I am trying to do as well (if I could find your implementation :laughing: )