Intro
This page is about a distinction that helped me clear up some confusions about machine learning and also ontology, "innate" knowledge vs "explicit" knowledge.
Central Metaphor
Consider the world's leading professor of thrown projectile physics. We'll call her Dr. Throw. She studies everything involved in throwing balls - from basic projectile kinematics to air resistance modeling to which muscles are involved in the process of a throw, and when each one is used. In the course of her work, she's memorized every equation involved, and could answer any question you asked her about throwing off the top of her head. Would she beat LeBron in a free throw contest?
I think it's pretty obvious she wouldn't. Even if we discount LeBron's advantage in height or physical fitness, I still doubt Dr. Throw stands much of a chance. Why? Even though we intuitively know LeBron would win, it's not clear why. It's not like he knows something about throwing a basketball she doesn't - while he's certainly an expert, we've already established that she's the best in her field. I think the answer lies in a difference in type of knowledge, not quantity of knowledge. I'm going to call the type of knowledge Dr. Throw has "explicit knowledge," and call LeBron's "innate knowledge." So far, we know that innate knowledge of a task makes you better at directly performing that task than explicit knowledge does. How much further can we take this distinction?
What's Useful Where?
So, if she can't win a free throw contest, what's the point of Dr. Throw's PhD? Well, innate knowledge is useful elsewhere. Consider a different contest: rather than competing themselves, LeBron and Dr. Throw are each assigned a trainee who's never picked up a basketball before, and then they have 30 minutes to teach them. Then, their students have a free throw competition. I'm honestly not sure who would win here! They would both be excellent coaches, and imagining their teaching styles gives more insight into innate vs explicit knowledge. Dr. Throw could tell her student exactly which muscles to use, the correct angle to throw at from different points on the court, and even how to correct for different wind conditions. LeBron's teaching would be closer to what you probably got in PE class: the teacher watches you try, corrects obvious errors in form, and tries to guess what you're doing wrong based on how you miss. There's probably a lot of instruction based on "how it should feel" or vague directions - at least, more vague than Dr. Throw's instructions on muscle contraction.
If we relax the contest to not have a 30-minute time limit for teaching, I think Dr. Throw would be faster at getting her student up to her own skill level than LeBron would be at getting a student up to that same level of skill, let alone to his. After all, Dr. Throw just needs to have her student learn the relevant equations. LeBron's approach is probably going to be more based on practice, practice, practice. Practice pays off, of course, it just takes time.
We can also modify the teaching contest by iterating it - that is, after a week or so of their training, we have LeBron and Dr. Throws' students teach students of their own. For these "second generation" students, I think it's clear that Dr. Throw's "grandstudent" (like how grandchild is your child's child, grandstudent is your student's student) would vastly outperform LeBron's. Dr. Throw's student could teach their student the same equations Dr. Throw taught them, but LeBron's student wouldn't be as good at replicating his teaching style, as that relied on LeBron's decades of experience at seeing people try and fail.
So, what have we learned? Explicit knowledge seems much easier to share than innate knowledge, especially if we're dealing with some kind of "telephone" scheme. Innate knowledge relies on practice, and while a teacher with innate knowledge can be a huge help, there's no substitute for practice if you want to build innate knowledge.
Robots
Let's consider one more contest. LeBron and Dr. Throw each have to build and program a free-throw-shooting robot. We'll say they have a robotics engineer to help them out with technical aspects they may not know about, but he's one of those guys that smugly calls every sport "sportsball" and so he's completely useless with any of the parts of this challenge that relate to basketball, throwing, etc. If we want to avoid making this challenge too easy, we can restrict the robot design so that it has to use arms instead of flywheels, but that doesn't really matter. It seems to me like Dr. Throw wins this contest hands-down. She can program all of her equations into her robot's brain, turn her knowledge of muscle contractions into motor actuation algorithms, and give it her most cutting-edge heuristics. If the free-throw contest let LeBron show that he's the world's best basketball player, this contest lets Dr. Throw show that she's the world's best projectile physicist. LeBron would probably do okay at this contest, but overall it feels like a reversal of the free-throw contest: someone a bit above average going up against the world's #1.
It gets more interesting, though: I think Dr. Throw's robot could win a free throw contest against not just LeBron's robot, but also against Dr. Throw, and maybe even LeBron himself. This means that what Dr. Throw has done is to give her robot innate knowledge of throwing a basketball. This tracks across our other tasks - it's ridiculous to think of the robot teaching a student to throw, and even more so for the robot programming another robot to play basketball. Dr. Throw's robot has no explicit knowledge of basketball (or anything else, for that matter), only innate. So, it seems that having explicit knowledge of a task lets you make a robot that has innate knowledge of that task.
Consequences
This has a lot of interesting implications. First, that the popular image of robots as logical, intelligent, and overall professor-like is completely wrong. Professors are distinguished by their wealth of explicit knowledge, whereas robots generally have innate knowledge. Robots do not resemble their creators. I think this confusion arises because computers are used as stores of explicit knowledge (databases, wikipedia, etc.). A computer is somewhat like an encyclopedia, and a professor is like a walking encyclopedia, and a robot is a walking computer, so a robot is like a professor. However:
- Knowledge is not the book, it's the ability to explain the book.
- An encyclopedia has neither explicit nor innate knowledge. It's a book, it doesn't know anything.
- The average computer has a million books in its memory, and it's never read a single one.
- The ability of computers to store information doesn't make a robot professorial, any more than you carrying around an encyclopedia would.
- The book has its contents memorized, but it is not an expert on itself.
- Imagine a transcription of Shakespeare's plays (in English) into International Phonetic Alphabet. Now imagine someone who's never heard any English in their life (or seen any performance of the plays) memorizes the transcription. They can recite Shakespeare, but have no understanding of it whatsoever. This is basically what's happening when your computer shows you a PDF of Shakespeare's complete works.
The actual knowledge a robot has is, with current technology, innate. This means that rather than a professor, a robot is similar to an insect, or a fish.
Second, this points to something about the "location" of innate knowledge. A robot programmed to throw a ball a certain way doesn't really think about it, or at least, it doesn't do any process as complicated as conscious human thought. With much robot code, it'll do very few computations in between receiving a certain stimulus and giving the corresponding response. It's like an instinct.
Consider the human knee-kick reflex. There's not really any thought involved in it - in fact, the kick happens before the signal from your sense neurons reaches your brain. This is analogous to a button wired directly to a motor: no computation. But let's get one step more complex. Let's say we add an arduino (small computer) to our button-and-motor system. We wire the button to pin 8 and the motor to pin 3, and then we write a little code:
void setup() { pinMode(3, OUTPUT); pinMode(8, INPUT); } void loop() { if (digitalRead(8) == HIGH) { digitalWrite(3, HIGH); } else { digitalWrite(3, LOW); } }
Here's where it's easy to make another mistake. This code represents explicit knowledge about how to "turn on a motor when a button is pressed." Since we write this code and then send it over to the arduino, it receives our explicit knowledge, right? Wrong. Remember, computers can't read. The arduino doesn't read the code. Instead, the code is turned into a sort of "way of being" for the arduino. It's not a thinking machine, it's a circuit that you can rewire on-the-fly (technically this is describing an FPGA, not an arduino, but the point stands). After we upload the code, it's almost as if we were back in the directly-wired case. The actual sequence of events when you press the button is slightly more complicated, as the ability of the arduino to be any circuit adds overhead to it being a particular circuit. To continue the biological analogy, it's probably closer to your reaction to a jump scare - involuntary and fast, but not quite as simple as the knee reflex.
- Code is instructions for making a mind, not instructions given to a mind.
- Code is a way to teach innate knowledge
- Coding a robot is like teaching someone by going in and reconnecting their neurons with tweezers
- Innate knowledge is stored rather directly in neural pathways, that have to built with practice because of Bateson's stuff about when sinking is appropriate