-
-
Notifications
You must be signed in to change notification settings - Fork 137
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
Improve Handling of 'Set due date' #675
Comments
From Discord:
Since we have no way of differentiating between those two, we have to choose how to treat such cards. Whatever solution we choose, it will upset one of those two types of people. If we knew which one was more common, that would help a lot. But we don't. I could make a survey, but I doubt that "Set Due Date" is used by many people, so the sample size will be abysmal. |
Another thing to keep in mind is: the first group can choose an alternative workflow whereas the second group can't. |
I think the only way to settle this is to measure how many people are in each group. But I'm afraid I will get a double digit number of responses to a question like "Have you ever used "Set Due Date"?", and a single digit number of responses to a question like "Do you use for cards that you are already familiar with?". |
People who use 'Set due date' without being familiar with a new card, how their workflow worked before FSRS? As far as I understand, SM2 will simply modify the intervals with it's multipliers. This worked for a long time, why do this new workflow has to be supported? (i.e. using 'Set due date' to distribute your new cards over a period of days). @dae I invite you to comment on this. (edit: the manual is vague on this:
|
https://forms.gle/GEa59PWEjApNXEKe7 |
I highly recommend Anki implementing something like Execute repetition (Ctrl+Shift+R) of SuperMemo. It allows user to grade the card and set the next interval in the same time. It's very important for FSRS to know that the user reviews the card when they use https://supermemopedia.com/wiki/Ctrl%2BJ_vs._Ctrl%2BShift%2BR |
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
The problem is that FSRS needs to deal with new revlogs as well as the old ones. Even if the first group chooses an alternative workflow, their old cards will still be scheduled incorrectly. |
@user1823 I didn't get it. The first group consists of people who use Set due date to distribute their cards over a period of time, as I understand it. What do you mean by new and old revlogs and why the latter will be scheduled wrong? (edit: closed issue by mistake) |
I was more pessimistic than it turned out. While 22 isn't a lot, we can draw a conclusion even with such a small sample size.
I count users in group 2 as "successes". EDIT: forgot to mention that this is an interval for 99% confidence. @L-M-Sherlock the conclusion is that those who use Set Due Date while knowing the card are the majority. |
So can I treat |
I suppose yes |
No. If Set Due Date is treated as Good, we will get incorrect estimate of initial stability because the revlog will then also be used for optimization. If we need a change, it should be a revert of ankitects/anki@db93939 |
Well, screw them. I know this is rude, but since we can't make Set Due Dates work for both group 1 and group 2, we have to make it work for the majority, which is group 2. |
But, there is one problem with your poll. The poll says: "I use it on cards that I am not familiar with" For an example, let's say that I am using a premade deck and I studied one topic from a book/lecture today. Now, I am familiar with the material but not in the sense that people in group 2 are. Now, if belonged to group 1, I would have used Set Due Date on new cards so that I can review the cards from the topic in the next, say, 5 days. Frankly speaking, these people are in group 1 but in your poll, they will likely choose "I use it on cards that I am already familiar with", making us think that they are in group 2. IMO, better choices for the poll will be
If you want, you can add an "Other" option too so that we can get to know about the other purposes for which people use Set Due Date on new cards (if there are any other purposes). |
At best, people in group 1 can STOP using Set Due Date on new cards. They can't undo what they did in the past. So, if we make a change, the old cards of people in group 1 will start getting scheduled incorrectly (currently Anki is designed to favour group 1). |
I can make another survey, if you really, genuinely think that we can't use the current results (I think we can), and if you will precisely specify the wording, to ensure that you will have no further objections. |
But it's also incorrect to use the interval set by users as the initial stability. The ideally solution is to let user rate the card when they use |
That would still leave us with cards that have been set-due-date'ed in the past, so we would have to deal with that anyway. |
Yes (for users in group 2) because they have already learnt the information well outside Anki and encountered it in Anki as a new card just now |
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
@brishtibheja @user1823 https://forms.gle/KPKtLKt24gDb18Fj9 Btw, user1823, do you have a Discord account, or Reddit account, or...something? |
@user1823 I sympathise with them, but more so with the people in the second group. If there's a way to solve the problems of everyone, then good. Otherwise, considering all the future users of Anki, let us not allow this absurdity to go on longer. LMSherlock's idea too wouldn't prove useful for everyone and would unnecessarily add extra complexity. |
Maybe treating |
We'll see how the second survey goes. I do like the idea of treating Set Due Date as Easy though. |
This comment was marked as outdated.
This comment was marked as outdated.
@L-M-Sherlock @user1823
@brishtibheja you were wrong For question 2, I'll have to discard users who answered "Other", since I can only calculate the confidence interval of a proportion if there are 2 variables/groups/outcomes/whatever. Let's count people who chose "I use it to assign large intervals..." as "successes". That's 7/13. The 99% likelihood interval* is [0.227, 0.830]; it covers 0.5, so we cannot tell which group of users is the majority. For question 3, let's count people who answered "Undesirable" as "successes". That's 11/21. The 99% likelihood interval is [0.267, 0.772]; it covers 0.5, so we cannot tell which group of users is the majority. If these results are to be believed, then the number of people that we will screw up by changing Set Due Date is about the same, 50/50. So now we have even less reason to do anything.
|
I think we should've added a Idk option in the last question because some people didn't even understand it for sure. So what should be done from here? Lie down with a paper bag? My problem is with the assymtry of the situation. On one hand, you have people who have been robbed off of a useful feature that worked in SM2 in favour of another feature that "allows equally distributing new cards" something that could be already done.
If that also includes all the future users of Anki, you will satisfy more people by forcing the first group to use "Filtered decks" or change their workflow. @dae what do you think about this? the problem is that an existing feature has disappeared with FSRS. I believe the feature is important on itself and there is no need for reimplenting it, just change how Set due date works (although it will create problems for some users). |
@dae Sherlock proposed making it so that Set Due Date also asks the user to grade the card |
I think that should be done as a seperate feature, if at all. |
Intervals going backwards after a set-due-date card is reviewed for the first time does sound problematic. I've skimmed the conversation above - apologies if I have missed something that's already been spoken about. I'll restate things to confirm my assumptions/understanding. If something is wrong, please let me know.
The second one surprises me. When we were SM2-only, this wasn't possible, was it? Why is it suddenly a use case we need to support? For the initial difficulty, what if we set it to some typical value for cards rated good? Or it could be set to some sentinel value that tells FSRS to set it based on the first review? |
|
As brishtibheja said, the interval put by the user is not a reliable estimate of the initial stability. Also, treating the set due date as a Good entry won't solve the problem of intervals going backward on subsequent review because the S0(3) would likely be less than the interval put by the user in Set Due Date. But anyway, there is no better option than using the interval entered by the user to estimate the initial stability (using The problem:
In SM-2, Anki simply multiplies the current interval with the ease factor (on pressing Good). However, in FSRS, we need the complete review history (or use a hack if it's unavailable) to calculate the memory states. Because these people used small intervals with Set Due Date (see examples below), they didn't have problems when using SM-2 even if Anki didn't treat the card as a new card. However, before ankitects/anki@db93939, FSRS used memory_state_from_sm2 on these cards, causing these cards to get a high difficulty. In #557 (comment), I was probably mistaken to believe that this high difficulty is not a problem. Surely, FSRS has a function to decrease the difficulty when the card is answered correctly multiple times. However, the decrease in difficulty is slower than desired because the parameters are trained on "normal" revlogs, which don't have this problem of high initial estimates of difficulty. I don't have bright ideas to solve this problem. So, suggestions are welcome. So, in summary, my suggestion is to revert ankitects/anki@db93939 while retaining the change of name from PS: |
I like your solution, the survey Expertium did also shows us that Set due date don't have a lot of use cases for the average user. Expecting people in the 1st group to be able to use the Helper add-on to solve this issue isn't too demanding in my opinion. |
Is it a necessary problem to solve? If the user overestimates their memory, their true retention will be lower than desired retention significantly. If the next interval doesn't go backwards, the true retention will never reach the desired retention. However, it's also a problem if we treat |
Imo, yes. We have to consider why the user is using Set Due Date. In this case, they have already learnt the card outside Anki and don't want to waste time reviewing it in Anki at short intervals. That's why they are assigning large intervals to the card using Set Due Date.
It is possible that the user may overestimate their memory, but I think calculating the stability from interval entered by the user is still a better option than making the card go through several short intervals, which will make Set Due Date useless. You might say that the optimizer can learn the patterns and cause FSRS to schedule longer intervals. But, I think that these cards should not be used for optimization because the optimizer will get spuriously high estimates for S0 in that case. (These cards have a high initial stability but ALL cards of the user don't have such high initial stabilities.)
This problem can be avoided if give such treatment to only those Set Due Date entries that are the first revlog entry for a particular card. (But I still don't recommend treating SDD as Good as I have explained above.) |
Haven't had a chance to follow the latest posts closely yet, but just a brief comment: remember 'set due date' supports 'n' and 'n!' modes, where the latter both changes the due date and the interval. For new cards, it is always the latter - setting an initial interval means the card should receive future scheduling based on that interval. For the 'forgot the card and manually sets a lower interval' case (which IMHO users should be doing anyway), the card won't be new, so by default the interval would not change. |
I mostly agree with user1823, but we recently had a user who consistently use SDD on part of their deck but not the other. In this case, should we really not optimise params on probably what is half of their deck? If you grade these cards when using SDD, you can avoid these problems in the long run. I think you can do that by always clicking Easy on the SDD cards and graduate your normal cards with Good. By the bye, we can also a add a new parameter that you can call SDD initial stability, which in the long run should work fine. |
Well, there can be two kinds of people who use SDD on new cards to assign them large initial intervals.
For people in group 2, we can make FSRS treat SDD on new cards as However, this would not work well for people in group 1 because FSRS won't be able to distinguish between slightly easier and much easier cards. If we want to be conservative, we should use (To clarify, If people in group 2 want better results, they can convert their SDD revlog entries into
This seems to be an overkill because only a few people use SDD on new cards. |
Alternative solution from discord, if adding a grade to set due date isn't viable; split it into two options, one for each group's use case. That would surely alleviate the situation? |
This debate has been going on for months, with no conclusion. Frankly, this is probably the last time I'll comment on this issue. |
I think there's agreement on what to do, apart from some issues that may not get solved. For those, I think the documentation on SDD should change a bit and we just expect people to make behavioural changes. |
I'll start with the basic problem. In Anki, you might encounter cards that you have already learned before. This can happen if you learned the content outside Anki or even if you have lost parts of the collection/revlogs. This doesn't happen regularly for a large amount of cards and thus is usually dealt by using 'Set due date'.
In FSRS, however, there is no way for the user to handle this situation. The problem a user wants to solve is unnecessary reviews. But that cannot be done in FSRS if the card is in new state.
This have been bought up before in the forums here and here.
I believe FSRS being able to better deal with 'Set due date' is also essential for it to become the default. LMSherlock, kindly look into the matter.
(pinging @Expertium)
The text was updated successfully, but these errors were encountered: