Cognitive Levels

Great minds discuss ideas; average minds discuss events; small minds discuss people.

— Eleanor Roosevelt

We can divide thought and discourse into three levels of abstraction that roughly correspond to the levels in that famous quote:

  1. Thought/discourse about people and ordinary events.
  2. Thought/discourse about entities and events that are beyond direct personal experience.
  3. Thought/discourse about abstract systems, processes and theories.

At the first level, we think/talk about objects and events that we can directly engage with. At the second level, we think/talk about objects and events that are removed from personal experience, because they are too big, too small, too far away, etc. However, we are still talking about objects and events. At the third level, we think/talk about systems, processes and theories. We are either thinking/talking about abstract patterns that are divorced from any specific object or event, or we are thinking/talking about ideas and concepts themselves, such as whether a certain theory is correct. Each layer is more removed from direct experience and ordinary life.

Of course, this discretization is a simplification. In reality, cognitive levels are somewhere between continuous and discrete. Also, we could slice them more finely, such as making a distinction between thought/discourse about systems and processes (abstract objects and events) and thought/discourse about ideas themselves. But the 3-level discretization captures a lot of the variance in human mental abilities. It is a useful abstraction.

Most of the time, we operate at the first level, the personal level. We talk about what is for dinner, who said what to whom, who is kind or cruel, whether it will be sunny tomorrow, etc.

Occasionally, we rise to the second level, to talk about bigger issues, such as inflation, crime, geopolitics, etc. This is also the level of certain types of specialized knowledge, such as law and medicine. It is removed from direct personal experience, but not highly abstract.

We need certain conceptual tools to reach higher levels — conceptual ladders, so to speak. Statistics is one such conceptual ladder. It allows us to represent aggregate properties, such as the crime rate. We can use statistics to think/talk about properties that we cannot directly experience. Nobody can see the crime rate. But if we map the crime rate to a line on a chart, now we can “see” it and think about it.

Many people cannot understand statistics. In fact, many people cannot even understand simple ratios.

This was famously illustrated by the “80 miles per hour” test, in which people were asked “If you are going 80 miles per hour, how long will it take to go 80 miles?”. Many people don’t understand that miles per hour is a ratio. They understand speed experientially. They know that 80 mph is fast, and they have some sense of what it is like to be going that fast. But they don’t understand that speed is a ratio of distance to time. Thus, they can’t answer the question.

If you’re going 80mph how long will it take go to 80miles?

A map is another conceptual ladder. It allows us to reason about spatial relationships on a scale above the personal. Many people find it difficult to read maps. They simply don’t operate at that level.

You have probably seen videos of people on the street who can’t find their own country on a map. Let’s consider such a person. He is stupid, but he can handle ordinary life. He knows how to cross the street without getting hit by a car. He can find his way to the grocery store and back home. He can’t find his country on a map because “country” is a meaningless abstraction to him. He doesn’t think about things like countries. The grocery store and his home are things at the first level of abstraction. He knows them from personal experience. He learned a little geography at school, because he didn’t want to look stupid in front of his classmates, but he quickly forgot it, because it had no relevance to his life.

Most level-1 people can find their country on a map, because they have seen it so many times. They can recognize shapes in context. But they have trouble using a map to think about routes, distances, directions, etc.

Conversely, there are some people who can rise to level 2 or even level 3, and yet can’t find their country on a map, because they are interested in other things.

Chess Piece Drawing Challenge Goes HORRIBLY WRONG...

But most level-2 people have basic geographical knowledge. They understand the world on a scale above the ordinary. They also typically have basic historical knowledge.

Maps and statistics allow us to think/talk about countries and social issues. At level 2, we can think/talk about wars, demographics, inflation, government debt, etc. However, to understand what a society is, or what causes inflation, we need to rise to the next level.

The third level is the intellectual level, the level of real science, mathematics and philosophy. At this level, we can talk about abstract processes, such as the theory of evolution, or how the market balances supply and demand, or the absence of an objective foundation for subjectivity.

Again, conceptual ladders are required to reach this level, but so is innate mental ability — and most people don’t have the necessary mental ability. They can’t rise to level 3. This includes many people in STEM fields.

For example, a lot of scientific research is just “butterfly collecting” (compiling factoids) or routine analysis that requires little thought. It is level 2, not level 3. Scientific fields often sink to a lower level as they mature and accumulate more lower-level researchers who do routine tasks.

This is the cause of naive empiricism in the sciences. Statistics are very important for understanding reality on larger scales, but they are limited. It is useful to know that two variables are correlated, but it usually requires a level-3 theory to understand why they are correlated. Naive empiricism is the tacit assumption that we can acquire knowledge of nature just by gathering data and doing basic statistics. In other words, it is the assumption that science is level 2, not level 3.

Collecting factoids, organizing data (e.g. creating taxonomies, timelines and maps), and doing statistics can be part of a scientific inquiry, but these activities do not constitute science by themselves. To be part of a scientific inquiry, they must be carried out within a theoretical framework.

Cognitive levels are not entirely determined by intelligence. Generally speaking, greater intelligence is associated with greater abstraction, but the two are not equivalent. Other factors are involved, such as curiosity and the ability to view things from a detached perspective.

Some smart people operate mostly at the lower levels. They never develop level-3 abstractions, despite being intelligent. Staying at the lower levels can be a good strategy for social success. Many famous people have that kind of intelligence. They are smart, but they use their intelligence to solve problems at levels 1 and 2.

Higher cognitive levels are a blind spot. People who operate at lower levels can’t see the levels above. They have a vague notion that some people are smarter, or that some types of discourse are over their heads, but that’s it.

When someone encounters discourse that is over his head, he often interprets it at a lower level. This is a common cause of false understanding. When people engage in discourse that is over their heads, they often try to drag it down to their level, subconsciously.

Imagine that you are stuck at level 1. On the internet, you see someone say “The per-capita homicide rate is higher for blacks than whites”. You can’t create the idea “blacks have a higher per-capita homicide rate than whites” in your mind. It simply doesn’t fit. You can’t even conceptualize a race of people, because that is too abstract. You can only imagine individual black and white people walking down the street. You know what homicide is, and that it is bad. So, you interpret the statement as “black people are bad and white people are good”. This is an attempt to project a level-2 idea into level-1 cognitive space. You assume that the other person is just using fancy words to convey a level-1 idea.

We understand other people by analogy to ourselves. We use our minds as models of other minds. This works pretty well most of the time, but not always. For example, a man can’t understand the sexual desires of a woman by analogy to his own sexual desires, and vice versa. Self-analogy also breaks down when trying to understand someone at a higher or lower cognitive level.

That’s why internet discourse tends to fall to the lowest level, from abstract discussions to personal attacks and virtue-signaling. It is not just that most people aren’t intellectual; it is also that they don’t know when discourse is over their heads. They don’t know that their petty insults and personal attacks are not at the same level as an abstract discussion about society and biology. So, they feel no shame about jumping in and dragging the discourse down to their level.

There is a general tendency for ideas to be dragged down to lower levels. For example, consider how the intellectual defense of free markets (Hayek) degenerated into anarcho-capitalism, a simplistic “freedom good, state bad” ideology. Or consider how quantum theory degenerated into level-1 woo (“You create your reality by perceiving it!!”) on the internet.

The theory of evolution is a good example. It is not complex, but it is very abstract. Evolution is mutation, reproduction and selection, iterated. The process involves a feedback loop, and it is distributed across time and space. It cannot be visualized. There is no ordinary analogy to it. Most people cannot think about evolution as an abstract process. So, they conceptualize it at a lower level.

Here are three views of evolution, at the three levels:

  1. Of course I believe in evolution! I’m not an ignorant hick! Humans evolved from monkeys. There were dinosaurs, long ago, but they all died out.
  2. Evolution is a struggle between races, in which the superior replace the inferior.
  3. Evolution is a process that operates on populations and information. It consists of reproduction, mutation and selection, iterated. Forms are selected based on reproductive fitness.

The level-1 person knows that evolution is considered to be correct. It is a high-status belief, associated with authority, so she accepts it, even though she has only a vague notion of it. To her, “evolution” just means that things were different in the past. This helps her to understand popular discourse and entertainment about the distant past, such as the movie Jurassic Park. She has some notion that being “less evolved” is bad, and she might insult someone with a different political opinion as a “dinosaur” or a “Neanderthal”.

The level-2 person has some notion of evolution as a process, but he views it through the metaphor of group competition, analogous to a war between human societies. Mutation and reproduction are mapped to group differences and changes in group sizes. Selection is mapped to group conflict. There is no feedback loop. This metaphor is very misleading, but it creates the illusion of understanding.

There are other level-2 views of evolution. One is the (naive empiricist) notion that evolution can be reduced to changing gene frequencies and/or population histories. The native empiricist does not think about the process of evolution. He is concerned with FST scores, GWAS, etc. Most of the people who obsess online about population genetics (the HBD crowd) have a level-2 understanding of evolution, or no understanding at all. But they all assume that they understand evolution.

The level-3 person views evolution as an abstract process. He can use the theory of evolution to understand various things, such as human nature, the complexity of life, how organisms fit into niches, etc.

Each view provides useful knowledge at its cognitive level. The level-1 view provides the knowledge that things were different in the past, and that humans evolved from non-human ancestors. It explains why you might see dinosaurs or cavemen in popular TV shows and movies. The level-2 view includes the knowledge that life is competitive, that the process of change involves competition (of some kind), and that genes are involved. But only the level-3 view allows to correctly understand how the complex order of biology emerges from physics.

Maybe there is a higher level that humans cannot access, from which the level-3 theory seems wrong or incomplete.

Most people don’t understand evolution, and can’t understand evolution, because it is an abstract process that is beyond their cognitive level. Yet, many of those people believe that they do understand evolution, because they have a lower-level view of it.

Again, people at lower levels don’t really know that higher levels exist.

Because politics is about popularity, political discourse rarely rises above level 1. Politicians must use level-1 ideas to appeal to the masses. Most people can’t understand social issues, so politics becomes a popularity contest between politicians. It becomes personal. The great tragedy of politics is that only low-level ideas can win elections, but only high-level ideas can solve social problems.

Our culture has the assumption that smarter ideas will eventually replace dumber ideas. If ideas are tested rationally and empirically, that might be the case. But if ideas are tested by popularity, the dumber ones will often win, because they fit inside more heads.

Our culture also has the assumption (or pretense) of cognitive egalitarianism: that anyone can understand anything. This assumption is false. Most people cannot understand intellectual discourse. We should not expect them to. Conversely, we should not expect intellectuals to communicate their ideas to the masses. To make intellectual progress, we need cognitive elitism, not cognitive egalitarianism. But cognitive elitism is not popular, for obvious reasons. When we have high-level spaces, we pretend that they are based on specialized knowledge, not innate ability.

The 3-cognitive-levels model is simple, but I find it very useful for categorizing thought and discourse.

Comments

  1. I can't stop myself from dragging down the discourse in the comments. Thank you for translating your abstract ideas into something us level-1 people can enjoy. Love your content 💛

    ReplyDelete
  2. What would you do if you wanted to participate in a discourse but discovered that it was beyond your level of comprehension (for example, if the participants were speaking to each other in Chinese)? Would you avoid this discussion, try to bring the conversation back to English so that you could understand, try to use an AI app to live-translate the speech, or begin to learn Chinese? (Chinese is just an example. You can replace it with the specialized jargon of a research field that you have never heard of).

    ReplyDelete
    Replies
    1. just say ching chang chong and nod along

      Delete
    2. If I wanted to participate in Chinese discourse, I would have to learn Chinese, of course. Or yes, I could use a translator. But that's different, because I can learn Chinese, although it would take a long time, and I might never reach the fluency of a native speaker. Also, Chinese can be translated into English, and vice versa, with little loss of meaning.

      Most people can't learn to engage in intellectual discourse. There's no way for them to participate. That's the politically incorrect truth. They can never understand the theory of evolution, how markets balance supply and demand, the abyss, etc. They are shut out of it, period. Higher-level abstractions can't be translated into lower-level abstractions without a major loss of meaning.

      I TAed a second year algorithms and data structures course, long ago, and there were some students who just couldn't grasp recursion. They usually dropped out of the CS stream, and went into something else. They could learn to write simple code, such as a for-loop, but recursion seems to require a higher level of abstraction (level 3?), which eluded them. I remember spending about hour with one girl, who came to my office because she was struggling, and no matter how hard I tried to explain it, how many examples I gave (going through stack traces, etc.), she just couldn't get it. I think she just hit her cognitive limit.

      Delete
    3. Recursion? This Rust code is an example of recursion: fn main() {
      func(3);
      }
      fn func(n: i32) {
      if n == 0 {
      return;
      }
      func(n - 1);
      }
      For some reason, I highly doubt she would be unable to understand this example.

      Delete
    4. Oleg: she would understand that it calls itself, but she wouldn't understand how to use recursion to solve problems.

      Here's an example of a second year problem, which I just made up:

      private static int Foo(bool flag, int n)
      {
      int x = 0;

      if (n == 0)
      {
      x = 0;
      }
      else if (n == 1)
      {
      x = 1 + Foo(flag, 0);
      }
      else
      {
      x = Foo(flag, n - 1) + Foo(false, n - 2);
      }

      if (flag)
      {
      Console.WriteLine(x.ToString());
      }

      return x;
      }

      Can you figure out what it does without running it?

      Delete
    5. I can see that if the "if" block executes and "flag" is true, then "x" will be printed as a string and returned, and the function will exit. But if the "else if" block starts executing, then things become blurry to me. I should ask ChatGPT to help me figure this out.

      Delete
    6. Oleg: If you use chatGPT, you're not testing your ability.

      But if you do use it, I wonder what it will say.

      Delete
    7. What I mentioned in my previous post I had figured out by myself. But now I spoke to ChatGPT, and it gave me this response: This method is basically a very inefficient Fibonacci calculator with optional printing.

      Here’s what it does, step by step:

      ```csharp
      private static int Foo(bool flag, int n)
      {
      int x = 0;

      if (n == 0)
      {
      x = 0;
      }
      else if (n == 1)
      {
      x = 1 + Foo(flag, 0);
      }
      else
      {
      x = Foo(flag, n - 1) + Foo(false, n - 2);
      }

      if (flag)
      {
      Console.WriteLine(x.ToString());
      }

      return x;
      }
      ```

      ### Return value (numerical behavior)

      Ignoring the `flag` for a second:

      * `n == 0` → returns `0`
      * `n == 1` → returns `1 + Foo(flag, 0)` → `1 + 0` → `1`
      * `n >= 2` → returns `Foo(flag, n - 1) + Foo(false, n - 2)`

      So the values are:

      * `Foo(_, 0)` = 0
      * `Foo(_, 1)` = 1
      * `Foo(_, n)` = `Foo(_, n - 1) + Foo(_, n - 2)` for `n >= 2`

      That’s exactly the Fibonacci sequence:

      `0, 1, 1, 2, 3, 5, 8, ...`

      So **`Foo(flag, n)` returns the nth Fibonacci number** (with `F(0) = 0`, `F(1) = 1`).

      > Note: For negative `n`, this will recurse forever downward (`n-1`, `n-2`) until you hit a stack overflow.

      ### Printing behavior (`flag`)

      The `flag` controls whether each call prints its `x`:

      ```csharp
      if (flag)
      {
      Console.WriteLine(x.ToString());
      }
      ```

      Key detail: in the recursive case,

      ```csharp
      x = Foo(flag, n - 1) + Foo(false, n - 2);
      ```

      * The left call uses **the same** `flag`.
      * The right call is **always** `false` for `flag`.

      That means:

      * If you call **`Foo(false, n)`**
      → `flag` is `false` everywhere in the recursion
      → **no output at all**, just returns the nth Fibonacci number.

      * If you call **`Foo(true, n)`**

      * The chain of calls with `n-1` keeps `flag = true`.
      * All the `n-2` calls use `flag = false` and never print.

      So with `Foo(true, n)` you’ll see:

      * Each `Foo(true, k)` prints its `x` in order as the recursion unwinds.
      * That ends up printing **F(0), F(1), ..., F(n)**, one per line.

      Example:

      * `Foo(true, 0)`
      Output:
      `0`
      Return: `0`

      * `Foo(true, 1)`
      Calls `Foo(true, 0)` → prints `0`
      Then prints `1`
      Output:
      `0`
      `1`
      Return: `1`

      * `Foo(true, 4)`
      Output:
      `0`
      `1`
      `1`
      `2`
      `3`
      Return: `3`

      ### Performance note

      It recomputes the same Fibonacci values over and over (typical naive recursive Fibonacci), so:

      * Time complexity is exponential in `n`.
      * For large `n`, it will be very slow and may blow the call stack.

      ---

      **In one line:**
      `Foo(flag, n)` computes the nth Fibonacci number; if `flag` is `true` in the initial call, it also prints the Fibonacci numbers from `0` up through `n` as it goes.

      Delete
    8. Oleg: Now you know what it does, because ChatGPT told you, but you still don't understand how it works.

      LLMs are so dystopian.

      Delete
    9. This is one of the most beautiful things I've ever read. I'm in tears - laughing and crying. :D

      Delete
    10. I understand what the function does, but what's the point of writing the function using recursion, when it can be written using iteration instead? All the online explanations state that the main advantage to recursion is that it is arguably more simpler to write the hand the iterative versions. This answer doesn't satisfy me.

      I don't think the recursive version is that much easier to write than the iterative version. I think that both versions are comprehensible. However, the iterated version is demonstrably easier for some people to cognitively understand, since the recursive version requires a higher cognitive level. The iterative version is also faster since it computes in linear time, whereas the recursive version operates in exponential time.

      Also, when most people learn how to compute Fibonacci numbers, they're always shown the iterative version anyways in the tutorials, which only further raises the question why it should ever be written recursively.

      Delete
    11. The point is to illustrate recursion, obviously. It's a test of the ability to think about recursion, and an entry point to start thinking about it. We give students toy examples to illustrate concepts.

      If I gave that problem in a tutorial, I would then ask the students to figure out how many calls it makes as a function of N. We would discuss big-Oh complexity a bit. I would show them how to compute the Fibonacci sequence with an accumulator and also with a for-loop, for comparison.

      If you're asking when recursion is useful in practice, there are many examples, such as tree search. That comes later in the course.

      When should the Fibonacci sequence be computed recursively? In a second year programming course.

      Delete
    12. Thanks Blithering Genius. Unlike my search engine results and my past professors, you gave a satisfactory answer to my question. I'm glad to hear that nobody actually computes the Fibonacci sequence recursively in practice, beyond teaching recursion.

      Delete
    13. When people say "The advantage to writing the Fibonacci sequence recursively is that this is an easier to write it", they're implying that the recursive version has some sort of practical real world usage, even though it doesn't. That's why it wasn't obvious to me (and probably many others) that the actual point is merely to illustrate recursion.

      Delete
  3. >LLMs are so dystopian.

    Funny, an IRL friend said the very same thing today. It's interesting that this is becoming a common consensus among "dissident" minds.

    ReplyDelete

Post a Comment