Freezing mnemosyne during holidays?

87 views
Skip to first unread message

Werner David

unread,
Jul 8, 2012, 3:14:50 PM7/8/12
to mnemosyne-proj-users
Dear Peter,

after returning from my holidays the advantage of a distributed
vocabulary was completely gone and I've got just one single bunch of
words. Is there any way to avoid this flocking together of words after
a certain time, when you can't use the programm? It would be great
just to "freeze" a certain state of the software, and being able to
return later to this exact state.

LG Werner

Peter Bienstman

unread,
Jul 9, 2012, 7:05:05 AM7/9/12
to mnemosyne-...@googlegroups.com
Actually, you cannot freeze your own brain during holidays and prevent it from forgetting :-)

If you have a backlog, Mnemosyne will automatically reschedule you cards such that the most urgent ones are shown first, so don't get stressed and gradually catch up.

Cheers,

Peter

pharmtech

unread,
Jul 10, 2012, 4:11:33 PM7/10/12
to mnemosyne-proj-users
On Jul 9, 4:05 am, Peter Bienstman <Peter.Bienst...@UGent.be> wrote:
> Actually, you cannot freeze your own brain during holidays and prevent it
> from forgetting :-)

I agree. But, isn't there a way to catch up in a more efficient manner
than just working through the backlog of cards in their order due? I'm
thinking of the *relationship* between interval size and overdue'ness.
I.e., the "risk of forgetting" instead of merely how overdue a card
is.

For example: If I haven't reviewed for 2 weeks, I could have the
following cards which illustrate the extremes:

1. A card I reviewed for the first time the day before I went on
vacation.

2. A card I first saw 2 months before my vacation, which I've
reviewed so many times that its interval was 20 days.

And, this card which illustrates something in between:

3. A card I first saw 2 week before my vacation, which reviewed so
many times that its interval was 7 days.

Let's say all those cards were due on the first day of my vacation.
Are they all of equal value? Should I spend my valuable "catch up"
time on all three? With equal priority?

What I see is that some cards (like #3) have a good chance of being
salvaged, and should be seen before cards like #2. Likewise, #1 may be
so far beyond the "forgetting curve" that it's not worth spending any
time on. Just push it back onto the "new card" queue.

I think the ideal way to handle this is:

1. Calculate a factor (percentage) from "amount overdue" and
"interval." This represents how far any overdue card deviates from the
theoretical forgetting curve (where you'd be if you reviewed on
time).

2. Prioritize cards by this factor, not merely which card is "the
most overdue."

3. Have a threshhold (300%?) where cards that are this far beyond
the forgetting curve are treated as not worth prioritization. Push
them back onto the new-card queue. (E.g., if a card's interval was 1
day, and due the first day of my vacation, and is now 14 days
overdue... should I waste my time seeing it first? Should I waste my
time seeing it at any time before I'm caught up? It's 1400% overdue!
Why would I see it before the card that had an interval of 20 days and
was 14 days overdue, a factor of 170%?).

To summarize: I think it would be useful to have a separate "catch-up"
mode which calculates "forgetting risk," focusing the user's time on
the higher risk cards -- which has nothing to do with how overdue they
are.

Probably make a great plugin. Or, am I wrong to view it this way?


Peter Bienstman

unread,
Jul 11, 2012, 3:02:18 AM7/11/12
to mnemosyne-...@googlegroups.com
On Tuesday, July 10, 2012 01:11:33 PM pharmtech wrote:

> I agree. But, isn't there a way to catch up in a more efficient manner
> than just working through the backlog of cards in their order due?

When I said 'most urgent first', I did not mean 'most overdue first', but rather
'shortest interval first'.

If you have a card which you last reviewed 500 days ago, postponing it to 502
days will not make much a difference, so that overdue card is low priority.

That heuristic is a nice compromise between effectiveness and speed.

Cheers,

Peter

pharmtech

unread,
Jul 11, 2012, 5:49:16 AM7/11/12
to mnemosyne-proj-users
On Jul 11, 12:02 am, Peter Bienstman <Peter.Bienst...@ugent.be> wrote:
> On Tuesday, July 10, 2012 01:11:33 PM pharmtech wrote:
>
> > I agree. But, isn't there a way to catch up in a more efficient manner
> > than just working through the backlog of cards in their order due?
>
> When I said 'most urgent first', I did not mean 'most overdue first', but rather
> 'shortest interval first'.

That's great. I thought urgent meant "most overdue."

I never thought it was as simple as "shortest interval." I don't think
it's the same thing as "risk of forgetting" (overdue / interval). For
example:

If you have a card with a 14-day interval come due on the first day of
your vacation, and another card with a 14-day interval come due on the
14th (last) day of your vacation, obviously the first one is at much
greater risk of being forgotten. But, their intervals are the same.
When you begin catching up the next day, the one due yesterday is only
7% overdue. Whereas the one which was due on your first day of
vacation is 100% overdue.

I still think a "risk of forgetting" factor (overdue / interval) would
be a more meaningful way to prioritize the catchup effort.

Am I wrong?

Peter Bienstman

unread,
Jul 11, 2012, 6:49:51 AM7/11/12
to mnemosyne-...@googlegroups.com
On Wednesday, July 11, 2012 02:49:16 AM pharmtech wrote:

> I still think a "risk of forgetting" factor (overdue / interval) would
> be a more meaningful way to prioritize the catchup effort.

Perhaps, but as I said, the current implementation is a nice compromise
between software speed and memory effectiveness.

Peter

Oisín

unread,
Jul 11, 2012, 11:39:52 AM7/11/12
to mnemosyne-...@googlegroups.com
On 11 July 2012 10:49, pharmtech <azfu...@gmail.com> wrote:
On Jul 11, 12:02 am, Peter Bienstman <Peter.Bienst...@ugent.be> wrote:
> On Tuesday, July 10, 2012 01:11:33 PM pharmtech wrote:
>
> > I agree. But, isn't there a way to catch up in a more efficient manner
> > than just working through the backlog of cards in their order due?
>
> When I said 'most urgent first', I did not mean 'most overdue first', but rather
> 'shortest interval first'.

That's great. I thought urgent meant "most overdue."

I never thought it was as simple as "shortest interval." I don't think
it's the same thing as "risk of forgetting" (overdue / interval). For
example:


I've been thinking the same thing. The problem is meaningful in the situation where you've been either away for a long time, or you've been dealing with an almost never-ending backlog.

For example with my Chinese deck, I went away for a conference, then had too many reviews to deal with when I came back, got overwhelmed and soon had a backlog of 1000 cards (!!). That was several months ago, and I was doing just enough reviews to notch off a couple of cards per day from the overdue ones. There's still about 600 due.

The problem with shortest interval scheduling in this case is that a card with a 5 day interval, due yesterday, will be prioritised over a card with a 5 month interval that's 4 months overdue. The cards you recently forgot (or added, although I won't add any until the backlog is gone, which will evidently take a while longer) tend to overwhelm the long-scheduled cards, even though you probably stand to lose more by neglecting them.

OTOH, you could argue that quickly acting on forgotten cards is as important as maintaining the long-interval cards - I don't know which strategy is truly more productive.

But scheduling cards based on an overdue ratio seems more faithful to the basic theory of SRS - we're trying to review cards shortly before we would have forgotten them.
In the case where you have no backlog (just the cards scheduled for today), then the short interval cards would have a higher 'overdueness', so it would behave the same as the current method.

Is it really more computationally difficult to do?
Surely even on a deck with 100,000 cards, the arithmetic (even in Python... ;) would still take far less than a second.
But perhaps the data structures containing the interval and due time are not optimised for this, I don't know.

Oisín

If you have a card with a 14-day interval come due on the first day of
your vacation, and another card with a 14-day interval come due on the
14th (last) day of your vacation, obviously the first one is at much
greater risk of being forgotten. But, their intervals are the same.
When you begin catching up the next day, the one due yesterday is only
7% overdue. Whereas the one which was due on your first day of
vacation is 100% overdue.

I still think a "risk of forgetting" factor (overdue / interval) would
be a more meaningful way to prioritize the catchup effort.

Am I wrong?

--
You received this message because you are subscribed to the Google Groups "mnemosyne-proj-users" group.
To post to this group, send email to mnemosyne-...@googlegroups.com.
To unsubscribe from this group, send email to mnemosyne-proj-u...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/mnemosyne-proj-users?hl=en.


Peter Bienstman

unread,
Jul 11, 2012, 2:21:09 PM7/11/12
to mnemosyne-...@googlegroups.com


On Wednesday, 11 July 2012 17:39:52 UTC+2, Oisín Mac Fhearaí wrote:

The problem with shortest interval scheduling in this case is that a card with a 5 day interval, due yesterday, will be prioritised over a card with a 5 month interval that's 4 months overdue. The cards you recently forgot (or added, although I won't add any until the backlog is gone, which will evidently take a while longer) tend to overwhelm the long-scheduled cards, even though you probably stand to lose more by neglecting them.

The reasoning here is that you don't really "neglect" cards with long intervals, even if you're reviewing them a bit late, as there is some randomness to the schedule anyhow. 

Anyhow, I'm not against tweaking overdue behaviour, but I believe any change to the scheduler is best done backed up by analysis from the data of the science log, and that's currently not my priority I'm afraid...

Peter

pharmtech

unread,
Jul 12, 2012, 4:59:13 PM7/12/12
to mnemosyne-proj-users
On Jul 11, 8:39 am, Oisín <denpasho...@gmail.com> wrote:
> Is it really more computationally difficult to do?

Calculating "overdueness" probably isn't difficult. But, I think the
proverbial devils are in the details. For example, most people are
going to take a few days to catch up. Should cards that are normally
due those days take priority over cards that are more overdue (defined
as the overdue as a percentage of interval)? If the goal is to focus
one's attention on cards at the greatest risk of being forgotten
(their distance from the Forgetting Curve), I think it's reasonable to
treat cards coming due within that catch-up period as overdue
themselves, and show them only when their "overdueness" is greater
than any other card.

That would get complicated. And, do you dynamically address overdue
cards until they are done? Or, do you prompt the user with a dialogue
when an overdue condition exists, asking them how many days they would
like to spend catching up? If a goal is specified at the beginning,
overdue cards could be scheduled immediately into that "catch-up
period." Cards coming due (normally) in that period could be
rescheduled in advance (merged into the overdue cards' schedule,
probably near the end of the period).

I like the idea of asking for a desired end date to be caught up. The
dialogue could show the user how many cards they have to look at
(overdue and regularly scheduled), and the amount of time per day they
have to spend. They could adjust the end date and see how it affects
their per-day commitment.

The dialogue could also ask them how aggressive they want to be trying
to salvage cards. I.e., how far they are from the Forgetting Curve.
For example: "Your most overdue card has a factor of 6000% (days
overdue as a percentage of interval). At what percent would you like
to push cards onto the New Card queue, not waste valuable catch-up
time on them since they're (in SRS theory) not likely to be
remembered. A good threshold is 400%."

I think that last point is where such a catch-up system could save a
lot of time and help a user's psychological hurdle. If you could
adjust the cut-off for unsalvageable cards, seeing what it does to
your per-day time commitment, that would help you make a rational
decision about cutting your losses, moving forward, etc. (This along
with an adjustable number-of-days would help a user find a comfortable
*goal* for catching up. That could help psychologically.).

To me, it sounds good. But, I agree with Peter that it's probably a
lot of work and low priority. It would make a good plug-in if someone
felt the spark of enthusiasm. :)

Oisín

unread,
Jul 13, 2012, 9:57:41 AM7/13/12
to mnemosyne-...@googlegroups.com
On 12 July 2012 20:59, pharmtech <azfu...@gmail.com> wrote:
On Jul 11, 8:39 am, Oisín <denpasho...@gmail.com> wrote:
> Is it really more computationally difficult to do?

Calculating "overdueness" probably isn't difficult. But, I think the
proverbial devils are in the details. For example, most people are
going to take a few days to catch up. Should cards that are normally
due those days take priority over cards that are more overdue (defined
as the overdue as a percentage of interval)? If the goal is to focus
one's attention on cards at the greatest risk of being forgotten
(their distance from the Forgetting Curve), I think it's reasonable to
treat cards coming due within that catch-up period as overdue
themselves, and show them only when their "overdueness" is greater
than any other card.

That would get complicated. And, do you dynamically address overdue
cards until they are done?

I think you might be making it unnecessarily complicated. Rather than have separate treatment of overdue and "normally" due cards, we'd just have a slightly different scheduling rule.

At the moment, let's say the rule is that the next card we review is the one with the lowest interval (plus a little random noise to reduce ordering effects, etc).
The alternative rule could be that the next card we review is the one where with the smallest value of (interval/actual_duration).

But this would mean that a 5 day card due today would have a ratio of 1, and a 20 day card due today would also have a ratio of 1.
This would cause somewhat random scheduling of cards that are all on time (or close). So it might be better to use a weighted ratio like (interval/(actual_duration*0.9)), which would behave the same as shortest-interval-first scheduling in most cases, but take into account very overdue cards with longer intervals.

In any case, even floating point division and multiplication in Python isn't very slow.

You make an interesting point regarding pre-emptively moving massively overdue cards back to the new card pile. That might be frustrating for users if they felt they would have remembered - it does often happen that I see a 3 month card 3 months late and still easily remember it.
Maybe an analysis of that massive stats file will enlighten us on the likelihood of failure when reviewing a very overdue long-interval card :)

pharmtech

unread,
Jul 14, 2012, 7:33:27 AM7/14/12
to mnemosyne-proj-users
On Jul 13, 6:57 am, Oisín <denpasho...@gmail.com> wrote:
> The alternative rule could be that the next card we review is the one where
> with the smallest value of (interval/actual_duration).

Maybe that's all that is required. Cards coming due within the catchup
window would automatically be deferred until their "risk of being
forgotten" was greater than one of the overdue cards.

I was thinking more about the case of overdue cards that are failed,
and begin to be seen with short intervals. I didn't think those should
compete with catching up the overdue cards. But, like you said, they'd
just be deferred until their overdue'ness is more significant than any
overdue cards waiting to be seen (in the order of their overdue'ness).

Similarly, if "overdue'ness" were a field which could be sorted, the
user could see cards (descending) from greatest overdue'ness. The user
could select a range of cards and reschedule them as new. It wouldn't
require a dialogue. It would just be a "best practice" which could be
described in an FAQ. That would be easier to implement than a dialogue
asking them for a threshold to push back onto the deck as new.

That sounds like a relatively simple plugin.


Reply all
Reply to author
Forward
0 new messages