Float Fusion

"I don't write about AI"--I find myself saying this to friends and colleagues with some frequency. And yet the topic is difficult to avoid these days. Below are some notes on one of the fundamental problems in AI: Is is possible for a discrete machine to model continuous phenomena? Instead of trying to solve the problem--indeed I suspect it is unsolvable--computer scientists might simply stipulate it as an axiom. Every discipline rests on a series of fiat decisions. Why not AI as well?

One of the first things I teach in my undergraduate course on "Creative Coding" is the concept of data type, and, more specifically, the distinction between two primitive types, integer and float.

The integers are, of course, the arithmetical counting numbers; they are whole values and advance by discrete steps: 4, 5, 6, 7... Whereas floats (short for floating-point numbers) represent values with a decimal or fractional component, for example 0.1 or 3.141592.

Informally I instruct my students to think of integers as "digital" numbers and floats as "analog" numbers. Of course that's not technically true, since both integers and floats are discrete, finite values; and indeed both are themselves represented by integers (confirming the truism that all digital computers are, in fact, digital). But it's true in spirit. Integers are chunky and monadic, like digital units. While floats are quasi-continuous and fine-grained, like analog magnitudes.

Floats represent what (in number theory) are called rational numbers. And yet not all rational numbers can be represented by floats; in fact the vast majority can't. Most rational numbers will be too fine-grained to be represented as a series of integers (or binary values) capped at a certain length. Even modern operating systems, with their large, double-size floats measuring 64 bits wide (or approximately 16 decimal digits), are still too short to capture the high precision of most rational values. And modern computers are even more narrowly constrained than that, since rational values themselves are vastly (indeed, infinitely) outnumbered by real values, which include irrationals, none of which are fully renderable inside a digital computer (barring trivial cases). In other words, a massive domain of value is strictly inaccessible to digital computers.

But what if these values were accessible? Inspired by the phenomenon of "flicker fusion" in cinema where discrete photographic frames are perceived as continuous, Float Fusion states that, past a certain threshold of perceptual granularity, floating-point numbers may be defined as functionally equivalent to real numbers. Float Fusion thus bridges the gap between discrete and continuous values, granting the computer access to a domain previously inaccessible to it.

Taken axiomatically, Float Fusion furnishes something very important, it furnishes the real. Tremendously useful, the axiom allows the computer to escape the confines of discrete number. After forging a link between float and real, the computer can claim access to non-digital conditions much more easily. And if that link weren't to exist, the domain of digital computing would remain much, much smaller.

In fact I first hit on the idea of Float Fusion when researching the source code of media theorist Friedrich Kittler. In his code, Kittler kept on referencing a data type I had never heard of before, a type that he called REAL. After some sifting, I finally discovered that REAL was simply an alias for floating-point numbers.

`#define REAL float`
`#define REAL float` (Kittler)

Later I would also learn that some influential older languages such as Fortran and Pascal used the keyword `real` to designate floating-point numbers. While Kittler was coding in C, he clearly was aping these older conventions. (Exploring the theoretical implications, specifically the Lacanian implications, of Kittler's use of "REAL" is a task for another day.)

Kittler's `#define REAL float` is an elegantly concise expression of Float Fusion. It states that floats can and should be understood as direct proxies for real continuous values, no matter the ultimate flimsiness of that proxy relation. Just as in cinema, where discrete photographs may fuse together (thanks to the peculiarities of the human perceptual apparatus), discrete integers may also fuse together to represent real world values. For this reason, we might informally call this axiom the Kittler axiom.

*

Recall what an axiom is and how it works within a system of knowledge. An axiom acts as a valid truth claim, which may be used as a foundation for knowledge, upon which other claims can be generated. The validity of an axiom may be ensured by sheer obviousness--some axioms are judged to be self-evidently true--or an axiom may be tailored somewhat arbitrarily to suit the system of knowledge in question (as illustrated by the school known as formalism).

For instance, infinity has, historically, be notoriously difficult to define rigorously. Aristotle, for one, rejected infinity in any real sense. Thus, the creators of set theory simply stipulated infinity as an axiom. (It's called the Axiom of Infinity.) Thus, axioms might express self-evident truths, but they also might simply fill certain gaps that are otherwise unfillable, establishing a ground for things that are ungroundable.

AI research ought to do something similar, to identify the ungroundable conditions of artificial intelligence, and to stipulate them as axiomatic grounds. At the very least this will make the discourse more honest, admitting openly that AI is a formal exercise rooted in a series of more or less arbitrary solutions to a set of fundamentally unresolvable problems.