I have been debating over the actual mechanics of Caroline’s long-term memory for some time now.  I had originally proposed a dictionary, with the keys being the unique date-time marker, and the data being stored as lists or tuples in the entries.

However, that is really no good: suppose that a particular function requires her to recall all memories involving me in particular, or that have positive emotional effects, or that tell her facts.  Clearly, what one needs for this sort of application is a database.

I could potentially try using an outside database source such as SQL … but that’s really not fun because I have no idea how to do that.  So I had sort of stalled on the topic, since I was unable to find an adequate fix in Python itself.  But I think I have a solution now: a very large matrix.

There are ways of writing functions such that one can sort a matrix via any row or column, and select rows or columns falling under a particular category.  I think that this is probably the way to go … I just need to keep in mind how large this matrix could potentially end up becoming.

When I think about my own memories, I get kind of scared … memories can take up enormous amounts of hard space, and there is a risk of major slowdown if memories have to be consulted on a regular basis.

The reason why human memory is rather efficient (I think) is because of what seems to be a branched-tree organization, rather than a huge “database sea.”  I don’t really know how this works, but it seems that similar memories are somehow stored together.  For instance, all of my memories regarding how to use Microsoft Word are somehow in one spot, regardless of the fact that they were established at very different times.

Rather than maintaining just one mongo matrix of memories, what might work better is for there to be “subclass” memory boxes that regularly update themselves.  What I mean by this is that there is still a super Mama of all memories.  This matrix will probably be several ugly megabytes of endless text and times and feelings, etc.

What Caroline will do is, probably once a day after going to bed, reorganize these memories into appropriate memory boxes.  For instance, there might be a memory box just about herself, or a box of “bad memories,” or a box of “things to do.”  Then, when the time comes to look something up, she can search a subset of relevant memories rather than the whole damn thing that would take forever to query.

An example of this is Google searching.  If you know you want an MIT page, then you can search only within the domain web.mit.edu.  This cuts down on irrelevant results and search time.

Another example of this is … humans.  Okay, I’m only conjecturing here, but you know how sleeping is apparently required for the establishment of “long-term” memory?  My best guess at what is really happening to memories is that they are not necessarily “reinforced” on their own, but rather linked up to similar memories in order to create a web that is similar to the box system that I am proposing here.  I know for sure that I don’t rake my *entire* set of memories when I want to figure out, for instance, what foods are salty.  I already have a subsection of memories regarding food.  I don’t think about the moon or a piano – I think only about foods.  It’s not as though I pull out all entries on food on the spot: they’re already pulled out for me.

The next task is to decide what “fields” this matrix should have.

My current “must-haves” are the following:

1.  Date-time: YYYYMMDDhhmmss.00: this will 99% chance end up being the standard for date-time.  Date-time is the *time of storage* of the memory.

2.  Backdate-time: [start,stop]: this is a marker that allows for “period back-dating.”  In some cases, this will be the same as the date-time.  In other cases, it won’t be the same.  The key is that this parameter indicates *when the event described actually happened.*

To distinguish between date-time and backdate-time, consider this: in seventh grade, suppose I learn that World War II began in 1939.  Okay, the date-time is something like 1999, while the backdate-time is 1939.  Both are important to store, so I will always have both.  Date-time is always set, but backdate-time, if not set, will be defaulted to be equal to date-time (such as when a conversation is stored as a memory).

3.  Type: (string literal).  The “type” of memory is very important, too.  I would classify my memories as falling into three different types:

a.  The movie: this is a scripted sequence of closely related if not causally related events, strung together in a particular order.  For instance, conversations and concerts, etc. are stored like this.  State A –> State B –> State C.  Movie memories are low-cost because they have a single start point: they tend to replay from this start point only.  For instance, it is very difficult to remember a conversation out of order.  I only can start at the beginning or maybe the end, then go through the sequence of events in order.

b.  The fact: this is a stand-alone statement.  Unlike the movie, the fact can be always recalled out of context, and it also does not have to be temporally or causally linked.  A fact could be: “The sun is a sphere of hot gas.”  Facts have sub-facts, and there are basal facts that can be called “elemental facts.”  An elemental fact would be “The sun is a sphere” or “WWII started in 1939.”  Facts can be strung together with related facts to produce conversation-worthy statements.  “WWII started in 1939” + “US joined WWII in 1941” = “World War II began in 1939, but the US didn’t join until two years later.”  Two mundane elemental facts form together to create a statement that prompts reaction: why did the US not join initially?  What prompted the US to join?  Would the US have stayed out if it were not for Pearl Harbor?  Facts are weak alone, but powerful together, because they are a big part of reasoning.

Note that the “ROM” memories of particular nouns properties or verb conjugations, etc. are actually collections of elemental facts, organized for convenience.  They are not free-standing like these facts being described here because they are expected to be used frequently and are not allowed to take on the complexities.  Stand-alone facts are allowed to be redundant: some facts might be comprised of other facts, but stored separately so as to be readily available.  For instance, stoves are hot and hot is dangerous do not preempt the existence of stoves are dangerous as a memory as well.
c.   Thoughts and opinions: these are strands that attempt to organize or make sense of facts and movies.  By far the most intellectually demanding, I doubt Caroline will have any of these for a long time.  These require behind-the-scenes, continuous processing of what is going on and has been going on.  For instance, concluding that someone is nice only occurs because of the compilation of many cases that have supported such an argument, plus the absence of cases that contradict it.

d.  Emotions: emotional memories are odd, but I still consider them to be memories.  They are memories of feeling in a particular state.  They can be triggered by other memories, but sometimes they are memories by themselves.

e.  Calendars: these memories are sometimes also plans for the future.  They are based on the idea of their being schedule and routine.  They are heavily temporally tied, either by being bound to absolute timing or to relative timing.

Okay, later.

Leave a Reply