## Friday, November 10, 2017

### Ambiguity, Approximation and Probability

 Logo (the programming language)

Probabilistic programming does in 50 lines of code what used to take thousands

I wanted to put some stuff up here about the state of computer programming, because the way we smell is akin to a special kind of computer program, and one which does not act like the kind we know.

I should start like this – I grew up on Logo, and then NES video games, therefore my experience with, and thinking upon, computer programming is ‘coded’ according to this top-down style. Someone writes the code, and the computer executes the code. There are no surprises (unless you have bugs to fix). You tell the turtle (that’s what they call the cursor in Logo) what to do and it does exactly that. Look at the picture above. That little triangle (the turtle) was told to go 100 spaces, rotate 90 degrees, then go 100 more spaces, etc, until a square is born.

King Koopa was told to jump every time you throw fireballs at him, or whatever he does. There is no fuzzy logic here. Everything is clear, concise, exact, predictable. (Again, that’s when the program runs as intended; surely this kind of programming is unpredictable when it goes wrong.)

Enter a new kind of programming. With the dual advent of big data and big processors to crunch it, we are seeing a different approach. The computing power is now so capable that it is asked to figure out its own program from the data given. This helps with a lot of the problems faced in computing today. With such variety in the data (this is ultimately what big data is about – not lots of quantity, but lots of different qualities) we can no longer write programs equipped to work with such variety. The program required for that ends up being as big as the dataset.

This is where we see the parallels to smells and olfaction. The amount of smells we could potentially be exposed to is infinite and multifarious. Vision has only a few categories. Things can look light or dark, a binary classification, or they can be categorized by their color on the spectrum, which is a discrete classification. They have a shape, a size, maybe a texture category. Odors, however, cannot be organized this way. There are too many and they are too different from eachother. Therefore, olfactory perception is distinct from our other senses. In order for us to create an artificial intelligence that can smell, we would have to come up with a different kind of programming.

Facial recognition provides a good visual analogy to the olfaction problem. What a face looks like isn’t really dependent on its color or its shape, but the combination of these features, the whole. And that makes a lot of initial parameters, in fact, infinite parameters. Face-rec uses these new types of programs, and they are almost the opposite, in every way, of what programming has been. I’ll let this guy describe them:

“When you think about probabilistic programs, you think very intuitively when you're modeling. You don't think mathematically. It's a very different style of modeling.” … “The code can be generic if the learning machinery is powerful enough to learn different strategies for different tasks.”
- Tejas Kulkarni, an MIT graduate student in brain and cognitive sciences, phys.org

In the same way that we are not born already knowing every smell we will ever encounter, these programs must ‘learn on the fly.’ This is an advance in computing, but also it foreshadows a very different world, where information is not distinct, discrete, exact, etc. It is instead more like that thing you smell but you don’t know what it is, but you swear you know yet you don’t know…you know what I’m talking about? Doesn’t sound like the kind of output your computer would produce.

POST SCRIPT

[lots of good explaining in this article, so I just copied most of it]

A Grand Unified Theory of Artificial Intelligence

Embracing uncertainty

In probabilistic AI, by contrast, a computer is fed lots of examples of something — like pictures of birds — and is left to infer, on its own, what those examples have in common. This approach works fairly well with concrete concepts like “bird,” but it has trouble with more abstract concepts — for example, flight, a capacity shared by birds, helicopters, kites and superheroes. You could show a probabilistic system lots of pictures of things in flight, but even if it figured out what they all had in common, it would be very likely to misidentify clouds, or the sun, or the antennas on top of buildings as instances of flight. And even flight is a concrete concept compared to, say, “grammar,” or “motherhood.”

As a research tool, Goodman has developed a computer programming language called Church — after the great American logician Alonzo Church — that, like the early AI languages, includes rules of inference. But those rules are probabilistic. Told that the cassowary is a bird, a program written in Church might conclude that cassowaries can probably fly. But if the program was then told that cassowaries can weigh almost 200 pounds, it might revise its initial probability estimate, concluding that, actually, cassowaries probably can’t fly.

“With probabilistic reasoning, you get all that structure for free,” Goodman says. A Church program that has never encountered a flightless bird might, initially, set the probability that any bird can fly at 99.99 percent. But as it learns more about cassowaries — and penguins, and caged and broken-winged robins — it revises its probabilities accordingly. Ultimately, the probabilities represent all the conceptual distinctions that early AI researchers would have had to code by hand. But the system learns those distinctions itself, over time — much the way humans learn new concepts and revise old ones.