Saturday, October 27, 2012

New (Old) Memory Test: Ebbinghaus Serial Learning

Hermann Ebbinghaus was the godfather of modern memory research.  His main contribution was formalizing the study of memory by measuring how he learned and forgot lists of nonsense words. He published his studies in an 1885 manuscript, which described his reasoning for making memory a real science by studying nonsense.  <editorial>This lead to nearly a century of studying nonsense under the guise of memory, using memory tasks that were difficult to learn, harder to remember, produced huge amounts of proactive interference because of the nature of the study paradigm, and lead those studying memory down a garden path that they still haven't emerged from </editorial>.

 The traditional Ebbinghaus memory task is hardly ever used anymore though, for a number of reasons. Ebbinghaus had the luxury of studying himself, and so could test in detail things like the effect of delay and overlearning.  One of his major findings was that when a list of nonsense syllables is learned, and you come back later to learn it again (1 day or 7 days or whatever), there is 'savings'. It might take ten rounds to learn it the first time, but only seven the second time, for a savings of three trials.  The logistics of this are too complicated for most laboratory research on undergraduates, which usually do single-session learning and retrieval.

I recently created a version of the Ebbinghaus memory task for a class I'm teaching, so I wanted it to reflect as much of the original as possible.  To begin with, Ebbinghaus studied lists of CVCs--non-word nonsense syllables.  He used a pool of over 1000 German CVCs. Creating a random CVC is pretty easy, but many of them are actual words or close to actual words.  So, first, I extracted a list of 3-letter words from a corpus and electronic dictionary I had.  Then, to create stimuli, I randomly generated a unique set of a few hundred CVCs, then filtered for dictionary membership, then hand-filtered to be sure they were not non-dictionary word-like CVCs.  I ended up with 353 non-word CVCs, which should be enough for any experiment.  Also, seeing as I had the dictionary (which had 360 3-letter words), I made it an option to use real words instead of the CVCs. Here are some examples:

The Ebbinghaus test works by showing you the list of CVCs one at a time, then 'recalling' the list, in sequence.  The basic test we use will be only 8 words long, which is on the short end for the length of lists studied by Ebbinghaus.  After the list is presented, we need a means for recall.  Ebbinghaus simple recalled the words, writing them down, and then checking.  We could do a text entry box, but for the present purposes, a click-to-respond method might work fine too.  I'm sure that having participant enter rather than recognize the CVC would improve their memory (i.e., the generation effect).  Here is what the recall screen, for an 8-word list,  looks like this:

Each round, the eight CVCs in the learning list are presented on this grid in a random order, and the participant must click on each one.  When it is chosen, it disappears.  The layout function I use for this, LayoutGrid(), is pretty smart about creating a layout for differing numbers of items.  You could easily use longer lists.  Another tweak would be to add a handful of foils and add a 'done' button at the bottom.

Control of experiment

At the beginning of the .pbl file, you can select how many lists you want to use, with the line:
  numlists <- 2
Each of these will be repeated twice, to test savings.

Also, the list length can be edited there too:
  length <- 8  ##Should be 8, 12, or maybe 16
The base list presentation-testing function is pretty simple, but for the Ebbinghaus test we really care about how many rounds of this it takes us to get it perfectly correct.  Thus, we need so code that calls this function, and repeats until the recall is perfect, twice in a row.

At the beginning of the test, I also gave a choice to use either words or CVCs.  I did this with a simple helper function GeteasyChoice:
   cond <- GetEasyChoice("Select stimulus set to use:",["Nonsense CVS","3-letter Words"],["cvcs","words"],gWin)

If you want to hard-code this so there is no choice, just replace this line with either
cond <- "cvcs"
cond <- "words"

A short screencast of the movie is shown here:

Post a Comment