Learning in Perception (Musings...)


Thinking about perceiving (cognitive) machines. It seems that a hybrid model should be applicable for most prosaic tasks. The key benefit of an AI would be a compact, effective structure for learning and abstraction (modelling), it would not necessarily be a good way to code low-level real-world operations. Though it might have advantages, the processing cost would often dwarf the benefits on today's hardware.

For instance, imagine we were to want to create a machine that can take a video feed and from it construct an accurate 3D model of its environment. We can imagine a machine that can do this rather mechanically, that is, by constructing layers of low-level operations, edge detection, surface detection, shadow and lighting calculations and the like.

With clever enough algorithms we could create a machine that can construct the surface and ignore the "noise" without any AI approaches. Microsoft has, I believe, even produced something like this with their 3D model from Flickr project. Thing is, much of the low-level stuff can be handled with highly optimized code, maybe even simple GPGPU stuff that doesn't even tie up the core processor of a desktop.

What role would a "hard AI" (e.g. a synthetic neurological system) play in such a system? Does it sit on top of the Direct3D model? Does it translate what it "feels" into the language of the computer, or do you make the model within the "brain" your final arbiter and try to teach it to "render" the model? Or is it merely going to act as a director, controlling the process, weeding out extraneous information more easily, learning which solutions better approximate initial conditions to avoid expensive branches in the code, an optimizer sitting at the top of the stack. How many millions of neurons would you need to make that useful?

Consider the question of speech recognition. Here again the underlying ideas have received enormous amounts of investigation, meaning that it would almost always seem easier to start with a machine that knows how to pick out phonemes directly, or which at least knew about them, rather than asking an "untrained mind" to try to figure it all out. Yet we know that with a few years of training a human mind can learn language, and far better than any human-coded system has yet been able. That is, the completely "interference free" AI approach should, in theory, be able to produce a far more adaptable and robust solution, but it will likely use processing and storage far in excess of the targeted system where a human has produced highly optimized algorithms for a particular task.

It would seem that a fully-functional neurological system, a system which is inherently adaptable, should be something that can be hooked up to any collection of low-level operations we can imagine. We could imagine a modelling machine with its input being not just a video image, but a series of inputs from our hard-coded algorithms as well. We could image that same mind outputting to a model which can rendering using OpenGL or the like to an image and use low-level comparisons with that image to optimize (direct) the higher-level algorithms.

So, what you would want to handle with an AI. Hypothesis (I'm not wedded to this, just playing with the idea): For any algorithm for which we have already "solved" the problem with simple low-level code, we likely should not handle the code with an AI. The AI should be used solely for those problems for which we have no readily coded solution. That is, while an (neurological) AI might be able to model the entirety of the human neocortex, we probably don't want to use it for that (for efficiency reasons). We would want to use the AI solely for the very small subsets of problems where we have not yet come up with solutions in non-AI code.

That is, anything you know how to code today should probably not be handled by the AI. All processes would, ideally, however, be under the control of the AI, so that the AI can decide whether it needs a given processing operation in order to make a decision. That is, instead of always running, for example, edge detection, the AI could restrict the edge detection algorithm to a small subset of the visual field to deal with an unexpected (unpredicted) situation/fragment of the perceptual field, rather than spending the processing cycles on the operation for every perceptual cycle.

The alternate hypothesis, however, is that when we figure out how to make AIs efficiently, we will suddenly discover that they should be used everywhere. Certainly the robustness of learning and adaptation would be very valuable in most AI-desiring tasks, but to make it practical we would need to make the implementation code dramatically lower. We're using large Beowulf clusters to implement something that can do pretty basic character recognition on a 100px image.

Maybe as we scale the algorithm we'll discover that it's practical to implement a consciousness from the ground up, but I'm guessing that dedicated hardware/software algorithms will often be the best inputs/outputs for AIs that we build.

Comments

  1. Tim

    Tim on 02/19/2008 4:37 p.m. #


    When will the AI be able to discover, categorize, attempt to utilize (or adapt?) these specific optimized algorithms organically? That's what I want to know.<br />
    <br />
    One quibble: your analogy to human language may not be quite correct, as I believe leading theories suggest there are hard coded language processors in the infant brain (so to speak); a sort of bootstrap to a rather adaptable system. Though your point still is valid, even so.<br />
    <br />
    I've been thinking off and on about AI lately myself, probably for very similar reasons you were thinking about it in relation to cinemon. That and categorization. Funny how the themes of network monitoring systems, billing systems, and authentication systems seem to recur all over the place. Or, perhaps it's just sad. When will the AI be able to discover, categorize, attempt to utilize (or adapt?) these specific optimized algorithms organically? That's what I want to know.<br />
    <br />
    One quibble: your analogy to human language may not be quite correct, as I believe leading theories suggest there are hard coded language processors in the infant brain (so to speak); a sort of bootstrap to a rather adaptable system. Though your point still is valid, even so.<br />
    <br />
    I've been thinking off and on about AI lately myself, probably for very similar reasons you were thinking about it in relation to cinemon. That and categorization. Funny how the themes of network monitoring systems, billing systems, and authentication systems seem to recur all over the place. Or, perhaps it's just sad.

  2. Mike Fletcher

    Mike Fletcher on 02/20/2008 1:20 a.m. #


    I can't say I've found a particularly persuasive argument regarding the linguistic predestination. It may be that the human brain really does have a set of low-level primitives to process low-level grammars, but that doesn't seem to be the general case within the mind.<br />
    <br />
    As for organic adaptation, it seems possible. I'm sketching out learning algorithms this evening, looking for patterns which would allow neurons to self-educate and discover both similarity and difference in patterns. Interesting question.

  3. Charles Merriam

    Charles Merriam on 02/20/2008 11:28 a.m. #


    There is one approach for hybrid systems that has worked well: computer vision neural networks that start with outputs of common filters. That is, instead of pixel values entering the system, outputs of common linear filters such as contrast enhancement, edge recognition, etc., are used as inputs to neural networks. Simple motor abstractions such as 'faster', 'fast accelerate', and 'coast' are outputs. The 'heavier' and more abstract AI processing has fewer variables. This is necessary as using individual pixel processing on a combination of learning neural networks and genetic algorithms is overkill.<br />
    <br />
    In the same vein, much of all computer progress has been finding an interesting problem with too much computational load, creating a hardware hack to solve the single problem and creating an easy interface to that problem. Examples include the XOR mouse buffer, hardware support for pointer indirection, and the GPU. Some hacks come and go in popularity, such as tagged memory, deep and direct bus control. <br />
    <br />
    One solves an np complete problem by hacking the common cases until one doesn't care, IMHO.<br />

Comments are closed.

Pingbacks

Pingbacks are closed.