srs icon indicating copy to clipboard operation
srs copied to clipboard

Correct ITERATION_RESET_BOUNDARY value?

Open bumper314 opened this issue 7 years ago • 4 comments

I was comparing your implementation to https://github.com/edubkendo/supermemo/blob/master/lib/supermemo.ex, and I see that your ITERATION_RESET_BOUNDARY is 3/5 = 0.6 while the other implementation uses 0.4.

I don't know the SM2 algo well enough to say which is right, or whether it's just a weighting that can be adjusted. Can you confirm?

bumper314 avatar Feb 07 '17 17:02 bumper314

Hello, this is a blast from the past!

I can only speak for my implementation, which is based on the SM2 algorithm as described on this page. This is extracted from the original paper. Step 6 states,

  1. If the quality response was lower than 3 then start repetitions for the item from the beginning without changing the E-Factor (i.e. use intervals I(1), I(2) etc. as if the item was memorized anew).

This is where I got the value 3 in the 3/5 you noted. There is a bit of room for interpretation, though, as the quality responses Wozniak describes are integer values in the range 0-5, whereas I normalise the quality response value to a real (well, floating point) value between 0 and 1. You could legitimately interpret "lower than 3" to mean "less than 0.6" (as I did), "less than half" (since in his description, the bottom half 0-2 all fall under it and the top half 3-5 are over it), or "less than or equal to 0.4" (which is essentially the inverse of my interpretation).

If the input into the normalised score is an integer value in the range 0-5, then it shouldn't matter which of these interpretations you pick -- the only values you'll get in are 0, 0.2, 0.4, 0.6, 0.8, or 1.0, and with that set of possible values the three interpretations I enumerated above are equivalent. However, if you use a different scoring system (as I do), then you will start to see a difference in how the scheduling algorithm responds to these differing interpretations. If you skew high (closer to 0.6, like my version), it means that even moderate recall results in having to review the card more frequently. If you skew low (closer to 0.4, like @edubkendo), the algorithm is more "forgiving"; you would have to do more badly to be forced to review the card more frequently.

I believe any value in the range > 0.4 and < 0.6 is a valid interpretation of the SM2 algorithm, so after that it's a question of personal preference and tweaking. Of course, you could tweak it outside of this range if you like, but arguably it wouldn't be SM2 any more. I suppose If you want to go down that road, you could also argue that this isn't SM2 either if you don't quantise your scores to the SM2 values of 0, 0.2, 0.4, 0.6, 0.8 and 1.

Hope that's helpful/interesting! I consider this project essentially abandoned, so I don't plan on updating it or tweaking this value any further, but feel free to fork it and try out different values if you want, or to use it as a basis for any of your own stuff!

I've also dropped @edubkendo a note in case he would like to chime in with his own thinking.

dpwright avatar Feb 08 '17 03:02 dpwright

Wow, I appreciate your thoughtful reply. Very interesting and helpful to me.

I consider this project essentially abandoned

That's fine, I'm curious if you found something better, or if you left the system for some reason (low perceived value or ROI).

bumper314 avatar Feb 08 '17 06:02 bumper314

Nope, I just got sidetracked and moved on to other things. I actually still think the idea of a scriptable SRS, configured by "models" which describe the testing mechanism, and "schedulers" which control the spacing of the repetition, is a good design. The only model I implemented here is flash cards, but at one point I was considering having one which displays sheet music and reads in input from a MIDI device to score you automatically when practicing piano, or a hook into vim golf which would score you based on how many keystrokes it took you to solve a particular puzzle. There's quite a lot of potential there for somebody who wants to take the idea and run with it. But, for now at least, that person isn't me :-)

dpwright avatar Feb 08 '17 06:02 dpwright

Excellent read. I agree with your last statement.. so much potential!

moebaca avatar Jan 03 '19 23:01 moebaca