I’ve thought a lot about this exact problem, because it’s central to a bunch of hard problems in biology, ML/AI, economics, and psychology/neuroscience (including embedded agents). I don’t have a full answer yet, but I can at least give part of an answer.
First, the sort of abstraction used in pure math and CS is sort of an unusual corner case, because it’s exact: it doesn’t deal with the sort of fuzzy boundaries we see in the real world. “Tennis” is a fuzzy abstraction of many real-world activities, and there are edge cases which are sort-of-tennis-but-maybe-not. Most of the interesting problems involve non-exact abstraction, so I’ll mostly talk about that, with the understanding that math/CS-style abstraction is just the case with zero fuzz.
I only know of one existing field which explicitly quantifies abstraction without needing hard edges: statistical mechanics. The heart of the field is things like “I have a huge number of tiny particles in a box, and I want to treat them as one abstract object which I’ll call “gas”. What properties will the gas have?” Jaynes puts the tools of statistical mechanics on foundations which can, in principle, be used for quantifying abstraction more generally. (I don’t think Jaynes had all the puzzle pieces, but he had a lot more than anyone else I’ve read.) It’s rather difficult to find good sources for learning stat mech the Jaynes way; Walter Grandy has a few greatbooks, but they’re not exactly intro-level.
Anyway, (my reading of) Jaynes’ answer to the main question: abstraction is mainly about throwing away or ignoring information, in such away that we can still make strong predictions about some aspects of the underlying concrete system. Examples:
We have a gas consisting of some huge number of particles. We throw away information about the particles themselves, instead keeping just a few summary statistics: average energy, number of particles, etc. We can then make highly precise predictions about things like e.g. pressure just based on the reduced information we’ve kept, without having to think about each individual particle. That reduced information is the “abstract layer”—the gas and its properties.
We have a bunch of transistors and wires on a chip. We arrange them to perform some logical operation, like maybe a NAND gate. Then, we throw away information about the underlying details, and just treat it as an abstract logical NAND gate. Using just the abstract layer, we can make predictions about what outputs will result from what inputs. Even in this case, there’s fuzz − 0.01 V and 0.02 V are both treated as logical zero, and in rare cases there will be enough noise in the wires to get an incorrect output.
I tell my friend that I’m going to play tennis. I have ignored a huge amount of information about the details of the activity—where, when, what racket, what ball, with whom, all the distributions of every microscopic particle involved—yet my friend can still make some strong predictions based on the abstract information I’ve provided.
When we abstract formulas like “1+1=2” or “2+2=4″ into “n+n=2n”, we’re obviously throwing out information about the value of n, while still making whatever predictions we can given the information we kept. This is what generalization is all about in math and programming: throw out as much information as you can, while still maintaining the core “prediction”.
Finally, abstract art. IMO, the quintessential abstract art pieces convey the idea of some thing without showing the thing itself—I remember one piece at SF’s MOMA which looks like writing on a blackboard but contains no actual letters/numbers. In some sense, that piece is anti-abstract: it’s throwing away information about our usual abstraction—the letters/numbers—but retaining the rest of the visual info of writing on a chalkboard. By doing so, it forces us to notice the abstraction process itself.
I’ve thought a lot about this exact problem, because it’s central to a bunch of hard problems in biology, ML/AI, economics, and psychology/neuroscience (including embedded agents). I don’t have a full answer yet, but I can at least give part of an answer.
First, the sort of abstraction used in pure math and CS is sort of an unusual corner case, because it’s exact: it doesn’t deal with the sort of fuzzy boundaries we see in the real world. “Tennis” is a fuzzy abstraction of many real-world activities, and there are edge cases which are sort-of-tennis-but-maybe-not. Most of the interesting problems involve non-exact abstraction, so I’ll mostly talk about that, with the understanding that math/CS-style abstraction is just the case with zero fuzz.
I only know of one existing field which explicitly quantifies abstraction without needing hard edges: statistical mechanics. The heart of the field is things like “I have a huge number of tiny particles in a box, and I want to treat them as one abstract object which I’ll call “gas”. What properties will the gas have?” Jaynes puts the tools of statistical mechanics on foundations which can, in principle, be used for quantifying abstraction more generally. (I don’t think Jaynes had all the puzzle pieces, but he had a lot more than anyone else I’ve read.) It’s rather difficult to find good sources for learning stat mech the Jaynes way; Walter Grandy has a few great books, but they’re not exactly intro-level.
Anyway, (my reading of) Jaynes’ answer to the main question: abstraction is mainly about throwing away or ignoring information, in such away that we can still make strong predictions about some aspects of the underlying concrete system. Examples:
We have a gas consisting of some huge number of particles. We throw away information about the particles themselves, instead keeping just a few summary statistics: average energy, number of particles, etc. We can then make highly precise predictions about things like e.g. pressure just based on the reduced information we’ve kept, without having to think about each individual particle. That reduced information is the “abstract layer”—the gas and its properties.
We have a bunch of transistors and wires on a chip. We arrange them to perform some logical operation, like maybe a NAND gate. Then, we throw away information about the underlying details, and just treat it as an abstract logical NAND gate. Using just the abstract layer, we can make predictions about what outputs will result from what inputs. Even in this case, there’s fuzz − 0.01 V and 0.02 V are both treated as logical zero, and in rare cases there will be enough noise in the wires to get an incorrect output.
I tell my friend that I’m going to play tennis. I have ignored a huge amount of information about the details of the activity—where, when, what racket, what ball, with whom, all the distributions of every microscopic particle involved—yet my friend can still make some strong predictions based on the abstract information I’ve provided.
When we abstract formulas like “1+1=2” or “2+2=4″ into “n+n=2n”, we’re obviously throwing out information about the value of n, while still making whatever predictions we can given the information we kept. This is what generalization is all about in math and programming: throw out as much information as you can, while still maintaining the core “prediction”.
Finally, abstract art. IMO, the quintessential abstract art pieces convey the idea of some thing without showing the thing itself—I remember one piece at SF’s MOMA which looks like writing on a blackboard but contains no actual letters/numbers. In some sense, that piece is anti-abstract: it’s throwing away information about our usual abstraction—the letters/numbers—but retaining the rest of the visual info of writing on a chalkboard. By doing so, it forces us to notice the abstraction process itself.