Comment by trane_project
Comment by trane_project 21 hours ago
I am the creator of Trane (https://github.com/trane-project/trane/) which can replace Anki and similar systems for domains that have a well-defined hierarchy between subskills (turns out that's most of them, including learning vocabulary).
There are several unresolved issues with Anki, SuperMemo, at al.
1. Emphasis on memorization. I wanted something that could be applied to domains (music) whose scoring is not based on memorization, but mastery.
2. Lack of any hierarchical information limits how well it works to learn much larger skills. It's trivial to replicate the functionality of Anki with Trane: just have one lesson where you put all your exercises. Anki cannot replicate what Trane does, which is to use the dependencies of the many sub-skills to track and limit progress until mastery is achieved.
3. Emphasis on creating your own exercises. You are expected to come up with your own decks, which takes a lot of time. For complicated skills, you need to be a domain expert to really know how to do this.
Trane is pretty much done, and I have used it to teach myself music. It does not have a UI at the moment, so I am pretty sure I am the only user. Not that I mind, because I rather not work for free.
Currently working on a literacy tutor that will be built on top of it. When it's complete, it will be able to guide all students from learning their A-B-Cs to reading and writing at college level, backed by the most up-to-date research on reading and writing acquisition. Hopefully I will be able to release an MVP in the middle of the year.
You might be interested in reading the literature on Knowledge Tracing, which is a superset of spaced repetition, aiming to predict what the student knows from their answers.
The simplest approach is Bayesian Knowledge Tracing [0], which is just a simple probability update and an Expectation Maximization optimizer to fit the latent factors. The standard version assumes an independent set of skills with no forgetting, but there are extensions for that [1] [2]. PyBKT [3] implements some common ones, so take a look there.
Learning Factor Analysis [4] seems to work considerably better than naive BKT, while being very simple to implement (it's a logistic model, sharing the family with most spaced repetition algorithms), so that might be promising if the hierarchical dependencies are incorporated. Some researchers have been applying increasingly complex NNs [5], including transformers, but personally I think that's just more parameters to overfit [6].
I'm not an expert. I only built a basic KT tool to prepare for the national Ukrainian exam and found these along the way.
[0] https://www.cs.williams.edu/~iris/res/bkt-balloon/index.html
[1] https://link.springer.com/chapter/10.1007/978-3-319-07221-0_...
[2] https://educationaldatamining.org/EDM2011/wp-content/uploads...
[3] https://github.com/CAHLR/pyBKT
[4] https://arxiv.org/pdf/2105.15106v4
[5] https://pykt-toolkit.readthedocs.io/en/latest/models.html
[6] https://arxiv.org/pdf/1604.02336