Use It or Lose It
I long held the belief that knowing things (by heart)1 was both overrated and not too important. Rather, I thought that being able to quickly access and digest information was the only thing that mattered. I still think that the latter is incredibly important, but I changed my mind on the former.
Tl;dr: I now think that knowing things matters to some extent and would like to memorize.
If I ask myself the question of what could be between my current situation and a situation I’d desire to be in, a partitioning presents itself naturally to me: inability, internal gatekeepers and external gatekeepers.
Inability would mean that I indeed try to do something with a reasonable amount of dedication, believe in myself, am not obviously held back by others and still don’t reach that situation. An example of that could be developing asthma in the midst of a marathon preparation.
An internal gatekeeper would mean that something inside of me sabotages the attempt of reaching said situation, either by preventing me from trying at all or by maintaining a certain reservation, suffocating true belief. An example of that could be wanting to work with on a topic, say Reinforcement Learning, thinking about a way to get there, e.g. by working through a course on Reinforcement Learning, but then telling myself that this doesn’t make any sense anyway since I haven’t perfected my multivariate calculus skills - which Reinforcement Learning approaches might draw from.
An external gatekeeper would mean that a person wields some kind of power to influence the path between me and my desired situation and uses that power to burn any bridges. An example of that could be an employer who doesn’t hire me for he lacks the conviction in my abilities.
Note that all of these prevention mechanisms might be well-justified and have a net positive effect on me. Yet, at times they might be unjustified and have a net negative effect. In the latter case, it’d be great to get rid of them.
Missing out on some of this potential is a very general problem. My change of mind with respect to the importance of knowing things has to do with a particular instance of this. I now believe that not knowing things can unjustly inflate the gatekeeping effects, both internal and external.
Concretely, I’ve found that at times, my enthusiasm about a topic is suddenly dampened by realizing that there are a couple of things I once knew, that are relevant and that I no longer know - a case of internal gatekeeping. In a way, I’m - in Stephen Covey’s terminology - unncessarily shrinking my circle of influence.
Moreover, I’ve found that other people regularly rely on the assessment of knowledge of a person when deciding whether they would like to offer or obstruct an opportunity. The extent of this has been a surprise to me since my mental model had always been that if someone had done something ‘hard’ - e.g. have a track record of doing pure math - it didn’t matter whether they knew about something - e.g. the interpretation of the Kullback-Leibler divergence - they could surely pick it up in no time.
I do still think that they could pick it up in no time but there are at least two catches with this mental model:
- Sometimes a lot of value is created by being able to react quickly, to bounce off ideas , to have short feedback loops, to reinforce and filter quickly, without having to read up on things.
- Other people might have a different (or no) partial ordering of hardness of somewhat comparable topics. Not everybody might agree that you can surely acquire knowledge on how a boosted decision tree works in no time if one tends to work with topology.
Therefore I came to the conclusion that I should start remembering, memorizing and knowing things.
What’s the state of the art of remembering?
Conceptually, Anki relies on spaced repetition in order to remember as much as possible with as little effort as possible. Moreover, it drew inspiration from SuperMemo - a flashcard system which combined spaced repetition with feedback on how easy or hard it was to remember something. In particular, it relies on the SM2 algorithm, vaguely described here. Visudal explanations with code of various spaced repetition algorithms can be found on Julien Sobczak’s blog
There are of course many other flashcard systems, yet Anki is one of the few open-source projects in this space. Moreoever, it has lots of amazing features:
- It supports LaTeX.
- It supports audio and image files.
- It supports fill-in-the blank exercises.
- Its clients have lots of really interesting statistics on user behaviour.
- It has a high degree of customization when it comes to spaced repetition algorithm parameters.
- It comes with free (yet, closed-source) hosting.
Remembering, in practice
While there are plenty of ready-to-use Anki flashcard decks available online, I decided to create my own decks. I both care about high precision and low recall.
Creation of flashcards
I store all of my flashcards in fairly straight-forward csv files. This is an excerpt from my flashcards for French.
L'embarras,"1. Incertitude, perplexité de quelqu'un qui ne sait quelle voie choisir.
2. Gêne, malaise en présence d'une situation délicate
3. Difficulté, problème (surtout pluriel)"
Échappatoire (f.),"Moyen adroit et détourné de se tirer d'embarras.
Exemple: Trouver une échappatoire pour ne pas aller à une soirée."
Agencer,"Disposer en combinant (des éléments), organiser (un ensemble)
par une combinaison d'éléments."
Habile,"Qui exécute avec adresse et compétence quelque chose de ses mains."
As of now I have decks for the following topics:
- French vocabulary2
- English vocabulary
- Probability & Statistics
- Machine Learning
- Causal Inference
- Deep Learning
The former two decks are imported as to create cards for the reverse as well. For example, the last row of the excerpt above will create two flashcards:
|Qui exécute avec adresse et compétence quelque chose de ses mains.
|Qui exécute avec adresse et compétence quelque chose de ses mains.
All other decks are unidirectional.
I version-control these csv files with
git and host them in this GitHub repository.
Naturally, anki expects these csv files to have a certain format. In order to automate the validation of this format, I build a pre-commit hook, such that whenever I seek to commit an update to my flashcards, the csv files are validated for spelling errors and format violations. You can find this validation mechanisms in this repository.
Once the csv files are created/updated and version controlled, I import them with Anki’s macOS client. This client allows for the synchronization with AnkiWeb - making them available on all of my devices. The last time I checked there was no public API to circumvent having to use Anki’s desktop client and directly updating the decks via a programming language or cli.
Usage of flashcards
In order to study/practice the flashcards, I use both Anki’s macOS desktop client as well as their Android app. The former comes with a deck explorer. Here one can investigate, whether all cards will be rendered as expected:
In the sense of remembering and memorizing, i.e. storing and retrieving information without further aid; in stark contrast to wielding a skill or understanding. ↩︎
I realized that in languages, being able to define a word is a different skill from knowing its meaning; it’s an exercise in articulation. ↩︎