Everyone seems to have a slightly different idea about what the term abstraction means, so here is mine.
As agents, we try to understand (and predict) the world by building mental models of it. But given that the world is vast and our brains are puny, we have to make do with extremely simplified models which also apply to as many facets of the world as possible. In mathematics something like the category theory or algebraic geometry gives you the level of abstraction that encompasses in very few symbols/concepts/ideas a large chunk of the underlying math. In programming polymorphism is one way to abstract things, but in general any idea that lets you accomplish more with less is a good candidate for an abstraction. That’s how programming languages (and human languages before that), data structures and optimal algorithms got invented, and they are all abstractions. Of course, this can go meta multiple levels, with progressively more power.
Edit: we tend to project human ideas on the world all the time, and identifying abstract ideas with reality happens almost automatically, e.g. “numbers are a real thing!” without realizing that a differently built mind might use a completely different approach to solving the same problem. Does AlphaZero use the abstractions of beginning/middlegame/ending or attack/defense when learning to play chess better than any human? I don’t know, but likely not in the same way. Moreover, a slightly different neural network, or even the same one exposed to a different sequence of stimuli might develop a different set of abstractions internally.
Everyone seems to have a slightly different idea about what the term abstraction means, so here is mine.
As agents, we try to understand (and predict) the world by building mental models of it. But given that the world is vast and our brains are puny, we have to make do with extremely simplified models which also apply to as many facets of the world as possible. In mathematics something like the category theory or algebraic geometry gives you the level of abstraction that encompasses in very few symbols/concepts/ideas a large chunk of the underlying math. In programming polymorphism is one way to abstract things, but in general any idea that lets you accomplish more with less is a good candidate for an abstraction. That’s how programming languages (and human languages before that), data structures and optimal algorithms got invented, and they are all abstractions. Of course, this can go meta multiple levels, with progressively more power.
Edit: we tend to project human ideas on the world all the time, and identifying abstract ideas with reality happens almost automatically, e.g. “numbers are a real thing!” without realizing that a differently built mind might use a completely different approach to solving the same problem. Does AlphaZero use the abstractions of beginning/middlegame/ending or attack/defense when learning to play chess better than any human? I don’t know, but likely not in the same way. Moreover, a slightly different neural network, or even the same one exposed to a different sequence of stimuli might develop a different set of abstractions internally.