Sunday, February 28, 2010

IPL: Incremental Procedural Learning

Back in my Introduction Page you will note that my intentions with this blog were to:
  1. Outline and define the basics of "procedural learning", at least in the context of SuperMemo,
  2. Distinguish and contrast between procedural and declarative learning to the point where it becomes intuitive to classify knowledge as one or the other,
  3. Present sufficiently detailed methods for intrepid learners to experiment with procedural learning themselves, and
  4. Present my own experiences this area
So far, I think I have made a good outline of an answer to the first point, and I have at least begun to get people understanding the second point. Whereas the first one can be explained (as I have done in my posts), the second one is a matter of developing a certain perspective on the material that you face. While activities such as playing music and riding a bike are clearly procedural, a much finer intuition needs to be developed in order to determine which parts of academic subjects are procedural so that they can be well-formulated in SuperMemo; for there certainly are procedural aspects to most, if not all, such subjects!.

Now however, it seems from my readers' requests and responses that they are becoming impatient with theory! So, here I am moving steadily on to the 3rd point, which is probably the one why you are all here - to learn some practical methods for applying SuperMemo to Procedural Learning! Indeed, it was necessary to set out the theory first, because from here on I will refer to terms such as "fluency", "stability" and the "variation principle" without looking back, except to refresh your memories where it seems appropriate - even though this is probably wholly unnecessary with a group of SM students!


Incremental Procedural Learning (abbreviated as "IPL") is the name I give to the method that I will expand on here. Although I have experimented with inputting items one by one, my main progress comes from IPL. And this is how it works:

For purposes of illustration, I will use an example from my study of the violin. If you are not a musician, and do not understand this example, please comment at the bottom or send an email and tell me what specific examples you would like to see:
  1. Work Backwards: Suppose I have a piece of sheet music that I wish to learn. First, I add a new topic to my "Violin" category, and type in the name of the piece I wish to learn (use Alt+T for referencing). At this stage, I need to have a fairly clear understanding of what I want the final version to sound like. For example, if I want to eventually learn to play the whole piece by memory with smooth, fast legato at 140bpm, then I would write: "crotchet at 140; smooth legato; by memory". Then, I would select that text and make it a "Link" reference, just like I made the title of my piece a reference. The reason for using "link" is because it is unlikely to be required for any other reason in procedural learning, and there are no custom options for IPL learners yet. It's just a way to make sure that these comments show up in all the children of the main topic.
  2. Make Cuts and Variations: Here we make use of the variation principle. Often, it is easier to learn a fast piece by first learning it all slowly. So, to make a variation of this sort, I can just duplicate the current element. Then I would re-write the "link" reference to say crotchet at 90 (or anything slower than 140). Then, I would highlight the new version of the link and set is as my new link (for those using SM2008, choose "just for this element"). Thus, my new link would say "crotchet at 90; smooth legato; by memory". We now have two nearly identical topics, with the only difference being the speed of the piece to be played, as specified in the "link" reference. Other possible variations are to change the rhythm, bowing style, notes, etc, etc. Alternatively, a cut could be made. For example, in the element page I could write "bar 1-10" and extract it. This would create a new topic with only those words, but with the title and link references. Just like in declarative learning, it is enough to make a single cut or variation on the element and then move on. There is no need to do anything more in this review. Make the minimum number of extracts each time you review a piece. This is more than a friendly caution! Unlike declarative extracts which can take seconds to review, procedural ones can take anywhere between 1 and 20 minutes. This will lead to overload almost immediately. Although that's ok once you're experienced, it can be disheartening at the start.
  3. Review, Perform, Process: In a couple of days, when the topic arises asking me to play bars 1-10 of the given piece, I play it through. If my playing is average, I try it again. As long as I am making constant improvement, I keep repeating the same passage over and over. If my progress is slow or stops for some reason, I make note of what the problem is so that I can make a new cut or variation. For example, if I am having trouble with the basic bowing technique in this passage I might duplicate the topic and write in the new one: "play on open strings". This makes it easier for me to focus on the hardest part of the procedure in isolation. Once I master that part, I can add all the complexity back together, slowly, slowly.
  4. Memorise: Once you can perform any particular element, exactly as it is described, it is time to lock it in for the long term. The way to do this is by transforming your topic into an item. This is done by right-clicking just outside the element window (e.g. where it says Next Repetition), and choosing Type --> Item. Then, press Ctrl+M and Enter. If you look in the Contents, you will see that your topic has indeed become an item. It has also been added to the Final Drill. This is the fate of every element in your procedural collection.
There are indeed more technicalities, especially for each specific instruments you may be learning with. However, for those that wish to begin learning music with SuperMemo: 1) Add your piece(s) as I described, 2) Make cuts & variations, and 3) When you come across any element in your procedural collection, perform it if possible. Repeat it over and over as normal, as long as you see some improvement happening. The worst trap to fall into is thinking that SuperMemo can take away the hard work!

Good luck, and tell me how it goes!

Saturday, February 20, 2010

Fluency vs Stability

One of the useful concepts set forth by Dr Wozniak in SuperMemo is that of the Fluency (aka "retrievability") vs Stability of memories. Instead of just speaking of memory "strength", these components can be considered separately - and in long term procedural learning they come to the forefront of evaluation (i.e. when you are grading yourself on the execution of an item).

As simple procedural definitions of these concepts, we can say that:

  1. Fluency is the "ease" with which you can execute a procedure properly, and
  2. Stability is the amount of time you can go without practice, and yet without forgetting (in SuperMemo, this would be measured by the inter-repetition interval).

Fluency Analogy:
Imagine that your mind is a huge box, and that every memory is written on a flashcard in that box. To recall a memory, you have to take the right card out of the box. When you have finished with that memory you put the card back, but at the top of the box where it is easily accessible. Hence, anything that you take out often remains at the top and in close reach. Anything that you only use access rarely gets easily covered by many other cards. A memory becomes fluent right after you learn or recall it, because it is right at the top of the box, and in easy reach. Anything that you have not accessed in a long time will not be very fluent, and hence hard to find. Therefore, fluency is related to how recently you accessed a memory - the more recently, the closer it will be to the top of the box, and the easier it will be to retrieve it.

Stability Analogy:
Imagine that your memories are buildings. As time goes by, some of the buildings fall down. Some remain standing longer, and others remain for less time.
All of them lose their original lustre after only a few years of neglect. However, the ability of these buildings to remain standing is almost entirely a matter of materials and architecture. It is a matter of how they were crafted. Well crafted buildings that are made of strong materials (e.g. marble) can remain standing for thousands of years. To get those buildings back into their original glory is hardly near as complex and costly as to build them in the first place. All it requires is periodic maintenance.

Stable memories are strong buildings. Sometimes they need to be dusted off and glossed up (i.e. through a warm up session). Ultimately though, they can stand for long periods of time, untouched. Unstable memories are like buildings that may look fantastic, but will quickly crumble if not consistently maintained, due to their weak composition. If you use SuperMemo to extend your inter-repetition intervals as far as possible, you will soon find that every time you go to retrieve an old memory it will be like an old building, that you will have to dust off by warming up. That is, by practicing it several times to get your old skill back. As long as the warm up time is considerably less than the original learning time (e.g. 2 or 3 practices as opposed to several weeks of training), you can be confident that you have successfully retained your skill, as opposed to learning it anew.

So what is more important in grading - fluency or stability? Ultimately, you should always grade procedures on fluency. Ironically though, this is done in order to optimize their stability in the long term by choosing the right interval for the next repetition. However, it is fine to have a warm-up before grading yourself. This is done in order to take fluency to its maximum. If the memory is still there, it will come back to you within a couple of practices. If not, you will have to learn it all again and that will be much more painful!


Measuring Fluency:

Since your evaluation is going to be based on the level of Fluency, how do we measure this in practice?

One way is to ask yourself whether or not you'd get the execution right if you did it again. Another, is to take the average of a few attempts. For example, if you're trying to practice shooting a basketball into the ring from the free throw line, you will sometimes miss and sometimes get it in. The best way to grade yourself here is on an average of a few throws. However, separating your "warm up" attempts with your "real" attempt can be hard. Again, one you can ask yourself whether or not you'd expect to get it in if you threw it one more time.

As another example, consider the following exercise (remember that all use of declarative knowledge is a procedural activity!):

Q: 154 x 235
A: 36190

Suppose you were halfway through the calculation when you realised that you'd forgotten to carry the 2 in the first line. What should you do?

Firstly, you should go back and fix up the mistake, then continue the calculation that you started. Once you've done it, go back and do it a second time. If the second time is totally smooth you can comfortably grade yourself Good. If you did it fluently the first time you could obviously grade yourself Bright.

The difference between Good and Bright should not be the degree of fluency (they both should be your peak skill) but the amount of warm-up that is required to reach it. If you can't reach your peak after several warm up attempts, but you can competently execute it, then you can grade yourself Pass. Fail can be used when you get most of the procedure right, except for one or two parts that you keep mucking up. Finally, Bad and Null can be used in the normal sense.

The intuitive sense of fluency can sometimes be a hard one to get the hang of. However, it is entirely practical and compulsory for making the best use of the SuperMemo spaced repetition algorithm. Some good question to ask yourself are:

  1. Was that a lot of warm up time?,
  2. Did I execute it perfectly the last time?
  3. Could I execute it perfectly if I tried again, straight away?
  4. Did I have to think about it much, or was it automatic?
I will have to write more on the topic of "automatic" vs "conscious" execution of procedures. However, for now keep in mind that automatic is good - i.e. when you are fully fluent, you should be able to execute your skill without thinking about it.

Any questions or comments are greatly appreciated!