Getting lists of behaviors

A lot of Monty’s tasks will involve recognizing behaviors (e.g., rotating, running, sliding). So, for fun, I decided to play around a bit with getting lists of “behavior” words. I started with this observation: “Verb forms that end in -ing are known as present participles or gerunds.”

This is clearly a job for Unix regular expressions (:-). To eliminate some noise, I looked for words between five and eight characters. Here are some results, from my MacBook Air:

$ egrep '^.{2,5}ing$' /usr/share/dict/words | wc
1990 1990 16647

$ egrep '^.{2,5}ing$' /usr/share/dict/words | head 
abiding
abutting
aching
acting
adeling
admiring
afluking
aging
agoing
agreeing

Sadly, this list is still mostly noise, from my perspective. So, I decided to ask ChatGPT for help:

Q: The Thousand Brains Project (TBP) has a goal of recognizing behaviors (e.g., rotating, running, sliding). I’d like to know about lists of behaviors, possibly in the context of robotics.

A: … Recognizing behaviors is a major challenge in robotics, AI, and neuroscience. There are several structured lists of behaviors, often categorized based on motion dynamics, intent, or interaction with the environment. …

The full response is actually pretty interesting; I recommend taking a look.

Very neat!

I think the most interesting thing here to highlight is in understanding just how hard it is to define what precisely a behavior is. Take aging as an example. While probably not a behavior within the context you’re thinking of, aging could be used to described the “behaviors” of complex biological systems. The dysfunction of intercellular signalling, for instance. Or that same word could be used to describe other (non-biologic) systems. For example, an aging computer system. Definitions are weird.

How about focusing this idea on the emergent motor behaviors of infants. Here’s a cool study that breaks down the parameters of motoric goal directed behavior. The development of motor behavior - PMC

1 Like

Yeah, I second this opinion.

I was reading up on something not too long ago (Neuronal Group Selection Theory, maybe?), where infants exhibit a kind of primary behaivor to which secondary behaivors–more refined behaivors–could later get strapped onto.

These primary behaivors were thought to be innate, genetically determined neural circuits present at birth. For example, an infants sucking reflex, or their grasping motion.

But then as the brain develops, further skills are scafolded onto that primary behaivor. They emerge in response to sensory feedback and various enviromental interactions. The infant learning to reach for a toy, for instance, refining their motor control over time.

1 Like

That’s interesting. So in addition to developmental milestones of volitional movement that I was describing before, your comment makes me think that it also might be interesting to look at non-volitional movement like the sequence of reflexes that infants go through. The Moro reflex is the one I’m most familiar with. It can be underdeveloped in preemies and cause self-regulation challenges in early childhood. https://www.ncbi.nlm.nih.gov/books/NBK542173/

In another thread, I commented about watching kittens and thinking about their learning process. Perhaps we should think about the organic baseline reference as being two-dimensional (i.e., development state, species). I would expect there to be a lot of commonality, at least initially.

Monty will generate a lot of models, including objects, features, behaviors, and almost certainly things which we haven’t yet contemplated. These will need to be archived and curated, if we are to make best use of them.

Some of the models will be generated in response to a set of criteria or directions. Others may simply emerge “from the data” and need to be characterized and understood. I suspect that the latter will come to dominate the collection.

Frankly, I’m not sure how most of this should be done. Some possibilities involve adding metadata, e.g.: “tagging” models with attributes, keywords, links, notes, etc. Statistics and perhaps cosine vectors might also get involved.

All of this metadata is a way to create “mounting points” for a possibly nebulous set of characteristics. With luck, this will provide traction for graph databases, LLMs, etc. Fun stuff…

@LearningSeedsTeacher
I’m almost thinking that the non-volitional movements you’re describing, the Moro reflex, for instance, are establishing a kind of behavioral constraint onto which more developed (i.e. volitional) behaviors are built. If that’s the case, it would make a lot of sense that an underdeveloped base constraint would result in downstream challenges. I’ll need to do some more research on my end, but I agree with you, its def interesting.

@Rich_Morin
That’s a really smart idea. I need to study up more on the dynamics of it, but if we look at the cellular “behaviors” which defines us during our most early stages of embryogenesis, I’d imagine they wouldn’t be that far removed from what you’re describing when talking about lower-dimensional baseline states. I mean, I have to assume that the behavior of something like a zygote would be far simpler than a mature organism.

This discussion reminds me of various versions of “boot code” used in the computer field. Specifically, the zygote is operating on some genetic boot code. So, here’s a war story, for your amusement…

Years ago, I was the resident documenter for the science software on the Fermi (neé GLAST) Gamma-ray observatory. This was being launched into a very bad neighborhood of space (between the Van Allen radiation belts) where all sorts of nasty particles hang out.

Clearly, the system had to be fail-soft at multiple levels. Hit it with your best shot, it should be able to come back. So, the hardware used a set of voting processors. Failures were fatal, but not serious (as in Erlang).

The system had multiple rebooting fallbacks, including RAM, uploads, EEPROM, and fusible PROM. There was very little code in the last of these, but it Had To Be Right.

Working on something like that would’ve have been pretty cool. I’m jealous lol.

Your story reminds me of a thing. If we look at something like Alzheimer’s disease, people typically have to lose ~20-30% of the gray matter in affected areas before symptoms even begin to display. That seemed pretty wild to me when I’d first heard it. I mean, imagine losing 1/3 of the hardware in a given system and still having that system remain largely operational. That’s some crazy redundancy. But anyways, all this to say, that perhaps in a way we’re all like that satellite of yours. Just one backup system built atop another, each doing whatever they can to keep us going.

Not just backup; there is also error detection, mitigation, and prevention. For example, the loss of a telomere in each DNA copying operation reduces both chance and the impact of an error (because strings that have lost all of their telomeres don’t get copied any further).

A very similar strategy is used by networking code in the form of Time_to_live fields in packets. The TTL is decremented at each hop and a diagnostic response is generated if the count runs out.

In a very cute hack, the traceroute networking utility
takes advantage of this. It pings the destination node repeatedly, using ever-increasing TTL values. This provides information on each hop in the path.