next up previous
Next: Example Initial Programming Language Up: OOPS on Realistic Computers Previous: Realistic OOPS Variants for

Illustrated Informal Recipe for OOPS Initialization

Given some application, before we can switch on OOPS we have to specify our initial bias.

  1. Given a problem sequence, collect primitives that embody the prior knowledge. Make sure one can interrupt any primitive at any time, and that one can undo the effects of (partially) executing it.

    For example, if the task is path planning in a robot simulation, one of the primitives might be a program that stretches the virtual robot's arm until its touch sensors encounter an obstacle. Other primitives may include various traditional AI path planners [43], artificial neural networks [78,42,5] or support vector machines [75] for classifying sensory data written into temporary internal storage, as well as instructions for repeating the most recent action until some sensory condition is met, etc.

  2. Insert additional prior bias by defining the rules of an initial probabilistic programming language for combining primitives into complex sequential programs.

    For example, a probabilistic syntax diagram may specify high probability for executing the robot's stretch-arm primitive, given some classification of a sensory input that was written into temporary, task-specific memory by some previously invoked classifier primitive.

  3. To complete the bias initialization, add primitives for addressing / calling / copying & editing previously frozen programs, and for temporarily modifying the probabilistic rules of the language (that is, these rules should be represented in modifiable task-specific memory as well). Extend the initial rules of the language to accommodate the additional primitives.

    For example, there may be a primitive that counts the frequency of certain primitive combinations in previously frozen programs, and temporarily increases the probability of the most frequent ones. Another primitive may conduct a more sophisticated but also more time-consuming Bayesian analysis, and write its result into task-specific storage such that it can be read by subsequent primitives. Primitives for editing code may also invoke variants of Evolutionary Computation [40,67], Genetic Algorithms [17] and variants such as Genetic Programming [8,2], Probabilistic Incremental Program Evolution [44,45,46], Ant Colony Optimization [13,11], etc.

  4. Use OOPS, which invokes Try, to bias-optimally spend your limited computation time on solving your problem sequence.

The experiments (Section 6) will use assembler-like primitives that are much simpler (and thus in a certain sense less biased) than those mentioned in the robot example above. They will suffice, however, to illustrate the basic principles.

next up previous
Next: Example Initial Programming Language Up: OOPS on Realistic Computers Previous: Realistic OOPS Variants for
Juergen Schmidhuber 2004-04-15

Back to OOPS main page