Agree! I just think “being taught” might be a wrong frame. As a though excercise, imagine evolution “hardcoded” the concept of “bear” directly in DNA like this:
Make a structure in the brain that pattern matches a few characteristics of a bear
Make this stucture capture and save other signals present at the time trigger first fired
If parents reliably show pictures of bears to kids, then this concept will be created in everyone, even though true description of “bear” might be orders of magnitude more complex.
People would normally call this thing “learning”, but I think you might also call this compressed encoding (or compilation), because you could not have learned anything else.
Thanks for the numbers, I completely agree on the information counting. I was trying to make (and failed) a slightly different point. Let me try to put it in more precise language.
This is the main sentiment I was trying to push against. It is not that I think DNA provides the bulk of the information. It is just that it doesn’t start from nothing, create a few priors and then hand things off.
Imagine some basic brain structure + sensory inputs encoded by some simple set of genes. When facing the real world, this brain will reliably be “filled” (i.e., learn lots of information). But, DNA doesn’t have to only encode priors or loss functions for this learning process. It can also encode transformations to perform on the completed thing. For example, you could have things like “copy structure from region X to region Y”, “extract half of circuit X and combine it with circuit Y to create a new circuit Z”.
This still does not mean that the minute details are in the DNA itself. But, I think you can build practically anything you want with tricks like that, because many specific learned circuits will contain general-purpose reusable subnetworks.
My main point is that evolution isn’t limited to designs like “create a starting point with good priors and let go”. It can encode things that start with a completed brain, and then copy/paste/merge/shuffle parts around to create something new. Given that most algorithms you might want to encode likely can be expressed as parts of already existing learned ones, a complicated design can fit in very few bits. Just like you could write a complicated program with very few lines of code in a high-level language.