RunFaps
Andy Matuschak
Andy Matuschak patreon

Fluid practice for fluid understanding

🕑 Added 2023-06-01 06:17:58 +0000 UTC

Comments

Amrit Daswaney

Hi Andy, This turned out much much longer than I intended - sorry about that! Everything is in a very nascent stage so I thought it would be more effective to share the entire thought process with examples. I've broken down the response into 3 parts so you can skip around: 1. Original problem I tried to address with templates, 2. Original idea/inspiration behind templates, 3. Templates I used and issues/successes I've had with each of them. I've also moved most examples / comments to the footnotes so it is easier to read. The main issues I was (am) facing are pattern matching and (maybe an overblown worry about) parochial learning. A representative question for the pattern-matching issue is I try to prove a theorem, I do it incorrectly and want to remember my thought process (misconception) that led to the mistake. However, during review, I almost never have to read the question entirely and instead immediately recall "This is the one where..." [1]. It is at least somewhat true that I don't make the same mistake when proving other results (I catch myself thinking along the same incorrect lines before correcting myself), however, you don't know what you don't know and I'm not sure how to delineate between I understand the concept vs I know how to avoid a very specific version of a more general mistake. Along somewhat similar lines, I am more broadly worried about being unable to fluidly apply concepts I have "learned" and instead am only able to answer specific questions. The original inspiration for making template questions was (very loosely) the Factory Method (software) design pattern. The main idea was to have a small set of "well-tested" templates. First, using a small number of templates at least partially addresses the shape-of-question-related pattern-matching, i.e., it leads to many very different questions looking alike and therefore, I have to read the question more closely before answering [2]. Second, loosely inspired by [3], my initial idea was if I can tinker and through experimentation identify certain templates that "work" [4], I can hopefully start to identify feature(s) of templates that work and use that to build others. I haven't figured out rigid templates as of yet but below I sketch the rough ideas as of now. I have broadly used 4 different types of templates: I. Definition-related 1. Standard/boring. Define (in words only), Define (using only a mathematical expression), Formalize {{statement in words}}, Explain in words {{mathematical expression}}. 2. Stolen from Issa Rice [5]: Give an {obvious, surprising} x {non-example, example} of {concept}. This has been spectacularly useful. I am not sure about its impact on remembering but this has been one of the unexpected benefits of having templates. If I cover a concept and don't have a question from a template, asking myself why usually helps. Sometimes it is not necessary, at other times, like for this template, it has deepened my understanding of the concept [6]. 3. Inspired by [7], Define a concept X that meets {desiderata} / What would we need to do if we needed to satisfy {desiderata} / Does definition X meet desiderata Y? These are bad questions but see examples in [8], [9], and [10] respectively for the idea. This has also been useful for similar reasons - delineating each part of the definition and understanding the role of each part individually and how they work together [11]. II. Story time In concurrence with something you've mentioned in your writing, I find that stories / vignettes / anecdotes significantly increase joy / delight during the review session. In addition, I find that they are also one of the most effective ways to learn things [12, 13, 14]. In particular, I have found they are strong "anchors" to a network of other connected / associated material. I wanted to highlight this template because for example, in Quantum Country, I really enjoyed the part where both of you explain why we study the Hadamard matrix by connecting to taking a journey from North Africa to the Iberian peninsula and separately added the card to my own deck. III. Application prompts Let's say I want to practice applying a concept but I am worried about remembering the answer and therefore, don't need to apply the concept to answer the question correctly. So far, there are 3 ways I've handled this. Easy case. I only need the associated numbers to change so I don't remember the final number-related answer. For example, if I want to practice the law of total variance using an exercise from the textbook. Most of the procedure is independent of the specific probabilities used and the only requirement is the probabilities not be too unwieldy. I use a script that takes in relations between variables and gives different current small numbers so the question is different. "Variable name hack." I think it is better to show you the hack before explaining it. Which question is "harder": Assuming they exist, what are the solutions to the quadratic equation: (a) $ax^2 + bx + c = 0$, (b) $xa^2 + ya + z = 0$? In theory, both questions are exactly the same but (at least for me), I remember the answer to the first without even thinking about it. However, because (b) uses unusual variable names, it causes me to slow down and think. This tiny bit of slowdown is all I need to make go through the process of thinking through the question instead of blurting out the final answer. 3. Hard case. In software testing, a simple example of testing each case is testing a function that checks whether a year is a leap year. Every year can fall into one of 4 buckets: (a) Not a multiple of 4 or 100, (b) Multiple of 4 but not 100, (c) Multiple of 100 but not 400, (d) Multiple of 400. If we can write test cases for each of these cases, then we have effectively tested all possible years. I have been trying to identify such partitions for application questions and adding them. I have not made as much progress here. IV. Prove or give a counterexample There are 2 types of questions here: 1. "What was the key idea(s) behind the proof of {...}?" / "Can we prove X with {simpler/obvious approach}? Why or why not?" ~ Nothing, in particular, to report about these questions. I'm sure this is a fairly common approach. 2. "Prove or give a counterexample." The main approach of phrasing ALL questions like this instead of "Show that / Prove X" is that statements "in the wild" that I would like to prove may or may not be true. For this approach to work, I need to have a reasonable mix of statements that are true and false. I have run into a bit of an issue with this and wonder what you think. For example, consider two very similar questions [15]: (a) If there are  n  iid bidders for a single item with value distribution  F , what is the revenue-optimal auction? (b) f there are  n  iid bidders for a single item with **regular** value distribution  F , what is the revenue-optimal auction? (regular is highlighted for your reading ease but isn't highlighted in the card). It turns out the answer for (b) is "second-price auction with Myerson's price as reserve" and the answer is "it depends" for (a). The rule I've enforced is that if I don't read the question clearly (don't check that the distribution is regular) then I've answered the question incorrectly. This does feel like a "gotcha" question and is frustrating when I get wrong but I can't think of a better way to do this. In part, I think this speaks to the emotional connection during review that you've spoken about. However, as a counterpoint, I often wonder about an anecdote Ericsson [16] shares: when professionals / musicians aspiring to musicians finish classes, they are often exhausted because those are periods of hard, focused work. In contrast, people who take the class as a hobby often feel refreshed and relaxed after the class. There are times when my review practice seems difficult and hard and in general, this doesn't hamper my desire to do them. I do derive joy / delight from some questions during the review but for me, the core value proposition is more long-term in nature: (a) my significantly increased ability to remember material I've read and use them in a flexible fashion, and (b) as guardrails, I feel much more secure learning / reading new material because I know I have a strategy to remember the parts I need to so I can just lock-in. Hope this helps! [1] As an aside, I have tried writing multiple questions from different angles, both with and without the original (theorem-related) context. The main "issue" is the memory of the mistake is usually so strong that it "anchors" all the other questions, even if the question doesn't even indirectly reference the mistake. [2] Is this "better"? Do I gain anything from reading the question fully vs recognizing the shape of the question? To be honest, I don't know whether I think/feel so and/or I want it to feel that way. [3] Towards A Rigorous Science of Interpretable Machine Learning, Finale Doshi-Velez, Been Kim, https://arxiv.org/abs/1702.08608. [4] What does "work" mean? Initially, it made sense to consider memory-related metrics but this would take a very long time and at least looking at my own data, has very little variance. It is possible that this is because I almost always review on my phone and continuously sharpen and re-factor cards. Instead, I keep note of questions I like (subjective but has been useful - more on this below) and anytime I remember a card "out-of-context" (also subjective and maybe not even directly measuring the quality of the card but how widely applicable the card's content is generally or at least to the content I come across). [5] https://learning.subwiki.org/wiki/Examples_in_mathematics [6] I also learn better with examples so maybe this effect won't generalize. [7] https://cognitivemedium.com/trouble_with_definitions/index.html [8] For example, let's consider 2-sided matching where we want to match 2 sides each with full preferences over the other side (e.g. university admissions where universities have a preference ordering over students and vice-versa). For simplicity, let the number of universities be the same as the number of students. Design an algorithm that gives a valid matching. Any bijective function from universities to students (or vice-versa) works. Observe that we totally ignored the preferences of both sides! How do preferences fit in? Can we do "better" if we consider preferences? What does "better" mean? More people are happier (get their favourite or close to their favourite)? I can continue but we build up to Pareto-optimality --> Stability --> {Incentive-compatibility, university/student-{optimal, pessimal}} matchings. The details are not as important as having questions that isolate why we want certain conditions over others and how we got there. [9] For example, "Build an efficient data structure that supports only the insert operation." A data structure that does nothing suffices since we don't support a retrieval operation. [10] Consider the following data structure that supports insert and find_min operations: (skipping the formal description but it initializes an empty array, appends the element when you call insert, and importantly, for this question finds the minimum of the list only when find_min is called). Compare the runtime of this data structure to the more standard min-heap implementation (that always ensures that the root is the minimum element). When, if at all, is it better or worse? The answer depends on how often find_min is called. If it is called less than $\log_2 n$ times then the lazier version is better. (I am not sure if you have the initial same bias but when we were being taught this, the initial thought process was that this "lazier" version must be worse! This is related to amortized vs worst-case analysis and with more context I think helps understand how to evaluate data structures) [11] I don't have separate questions for "motivation" / "why do we care"? These are all framed as we were interested in X, how could you formalize / approach this? Separate questions cover "wrong" answers, routes not taken, and the correct answer. If during review, I think of something new - to me - this is only a good thing, it's something for me to consider why it wasn't done. This is a bit misleading, during review, I usually think: I remember the answer to this question is X but I don't know why it isn't Y. I know they also considered A, B, and C but why not Y? I then flag that card and write a note about Y, and review those cards separately on the weekend. [12] I can't find the essay but Michael writes about the different results when the Wason Selection Task is presented using coloured cards with numbers on one side and as an underage drinking problem. [13] In an interview, Maria Chudnovsky, a mathematics professor at Princeton, was asked how do you remember mathematics (other theorems) and she says, Oh, well I only remember the ones I can prove. The interviewer asks really and she says well you know I remember stuff like we remember anything through stories. For example, how do you remember how old your young cousin is, well you remember when his parents got married then maybe you remember where you were living when they first had kids and so you now roughly remember how old your cousin was. I realize she is talking about networked thought but I find it easier to form networks with stories. Interview: https://youtu.be/iDpcFwsVa0s?t=2163 [14] An example question would be: "We want to remember to be patient with our work and the progress we are making. What relevant story does George Saunders share with Story Club regarding this?" Someone asked him how he writes such wonderfully textured non-stereotypical characters. He said well they don't start out that way but you sit with a piece and edit it for months and months and suddenly the character settles in your mind and you are bored and the character asks is this all? What's next? They want to be more. However, this doesn't always happen and when it does, it doesn't until months into the process and I can't "fast forward" to that point. Story Club with George Saunders: https://georgesaunders.substack.com/ [15] I recognize this is not a "Proof or give a counterexample:" question. I am giving a simple example to illustrate my main concern. [16] K. Anders Ericsson, Peak, Secrets from the new science of expertise - I'm not sure where!

Andy Matuschak

I have tried something like that, using a special card type with multiple fields to hack together alternatives. And, of course, Quantum Country had "application prompts", which were along the same lines. But I haven't explored this concept very carefully at all—just noodling. I really enjoy your observation that a script has the advantage of being able to implement "rules". Do you have templates like the ones you sketch there? If so, I'd be quite curious to hear more about the templates you have and how they vary for different kinds of concepts.

Andy Matuschak

Ah, that's fascinating! Thank you very much for sharing. It's great to hear both that the ML-based generation eliminated pattern matching, and that my "artichoke=carciofo" claim is in fact over-simplified. Everything is fractal.

Andy Matuschak

There's a thousand words or so here: https://andymatuschak.org/prompts/#prompts-in-practice But unfortunately much is still difficult to render legible! It's a good nudge…

Amrit Daswaney

Hi Andy, With respect to repetitive (-ish) cards in the same review session, have you tried linking cards and burying all but one card? I use a custom field that is not displayed during review but is used to store IDs. All associated cards have the same ID (to ensure they are unique, I pick a parent card and give everyone that card's ID but that's not important). Every day an external script inspects the due cards, if more than one card has the same ID, it breaks ties according to a rule. In addition to using ease as a tiebreaker (e.g. prioritize more difficult cards), you can also implement rules like: "definition before application." If I write questions using a specific pre-defined template(s) (e.g. "Define: ", "Prove or give a counterexample: "; you can use a many-to-one mapping, i.e., n different but fixed templates correspond to one type of question) then the script can automatically classify questions for me. As an aside, this also helps with pattern matching because most questions have a similar "shape" since many of the questions have a similar structure.

Russel Simmons

A while back I built a prototype of a new tool for studying Japanese, that is a small step in the direction you're describing. TL;DR It works quite well. I think it's fair to say that "most" Japanese words don't have an exact English equivalent. Many seem to have an equivalent but it's far from exact, in that the usage/nuance is substantially different. You can use English translations as a temporary scaffold, but eventually you need to build a direct connection between the target-language word and internal meaning. So even with learning vocab, the canonical example of SRS, repping target-language -> native-language mappings ("carciofo = artichoke") has significant shortcomings. (This video section touches on this in more detail https://youtu.be/yBmWomPZzPc?t=386) For this reason, a lot of learners use "sentence cards", with a target-language sentence on the front (usu. with one "target" word for study, tho it is unmarked) and on the back any definitions needed to confirm that the target word etc. was understood. The test is "could I read+understand the entire sentence", not "did I regurgitate the target word definition". This has the obvious downside that over time, you tend to pattern match against that specific sentence, and the card becomes less useful. Adding multiple sentence cards for one target word helps, but is considerable work. In my prototype, the "atoms" tracked by the SRS system are Japanese words. To review a word, it searches a large database of sentences (that I pre-filtered via ML for quality for this purpose) to find sentences that use that word, and chooses a not-yet-seen one to show to the user. The user self-grades on whether or not they understood the whole sentence and remembered the target word. (I'm skimming over a number of details, e.g. filtering sentences to only contain other words you probably know, but that's the gist of it.) My experience in using it myself is that it completely solves the issue of pattern matching, and works very well for learning new vocab robustly, in varied contexts. It's also sort of inherently fun to be presented with random sentences that are around the level of my ability. The annoyances are mostly around "bug" cases e.g. where word occurrences are misidentified, etc. So FWIW I am strongly in support of this direction, and skeptical of your reservation. I think the simple primitive of "learn rote A->B mappings" is not a great fit for what most people need for most of their learning, and that there is no sense in staying too attached to it. After all, this new direction is still "spaced repetition", it's just repeating at the level of concepts, not cards!

Andrew Judson

I'm interested in "processes I’ve[you've] put into place for monitoring and revising them over time" - is this something you've addressed in a post or essay?


More Creators