390 likes | 507 Views
HUMANOBS. Replicode. Eric Nivel eric@ru.is Reykjavik University - CADIA. Reykjavik – September 2010. Overview. > What is Replicode? > Main Features > Tools > Status & Future Work. What is Replicode?. Replicode. > A programming language + an executive + development tools > Motivation
E N D
HUMANOBS Replicode Eric Nivel eric@ru.is Reykjavik University - CADIA Reykjavik – September 2010
Overview > What is Replicode? > Main Features > Tools > Status & Future Work
Replicode > A programming language + an executive + development tools > Motivation - Developmental AI machines that dynamically rewrite their own code according to their experience model-based/driven bootstrap code - Engineering for the REAL world fail gracefully and recover (what is left of) the function seed programming as opposed to paranoid programming - Open-ended dynamic environments - Working definition of intelligence: ”to adapt with incomplete knowledge and limited resources”– Wang 2006
Requirements I > To synthesize and reason about concurrent processes - To dynamically produce new specifications and implementations - Tractable parallel computing stateless programs no explicit coupling/synchronization automatedmemory management - Support for forward/backward chaining – to generate predictions/goals - Support for associative memory - Support for simulation runs - Support for uncertainty – crisp <-> fuzzy - Non axiomatic programming system
Requirements II > To execute programs - Soft real-time: on time, almost anytime low latency preemptibility - Execution feedback program execution success/failure of predictions/goals resource usage both quantitative and qualitative - Scalability wrt CPU cores and RAM - Distribution over machine clusters
In a Nutshell > Production system > Soft real-time > Data-driven - external and internal inputs > Parallel - computation performed breadth-first > Pattern matching at arbitrary scales – time/structural depth, span > Arbitrary granularity - low, numerous, crisp <-> high, sparse, fuzzy > Dynamic – {add, delete, control} {code/data/ontology} > Execution feedback > Distributed > Scalable
Production System > Data-driven: patterns of time series now t inputs outputs
Production System > Time scope
Production System > Parallel
Production System > Code = data
Production System > Execution reflectivity
Control > Resilience > Saliency > Activation now t
Code (mk.val self position (vec3 1 1 1) 1) [] [now 1 forever root nil] _start:(pgm |[] [] [] (ptn (mk.val self position v1#vec3: ::) |[]) |[] |[] [] (inj [] p:(pgm |[] [] [] (ptn (mk.val e: position v2:(vec3 x: y: z:) ::) [(\ (= e self))]) |[] |[] [] (inj [] (mk.val self position (vec3 v1.y 10 (\ (+ z 1))) 1) [(\ now) 1 forever root nil] ) 0us 1 1 ) [now 0 forever root nil] ) (inj [] (ins p |[]) [now 0 forever root nil 1] ) 0us 1 1 ) |[] 18
Code (mk.val self position (vec3 1 1 1) 1) [] [now 1 forever root nil] _start:(pgm |[] [] [] (ptn (mk.val self position v1#vec3: ::) |[]) |[] |[] [] (inj [] p:(pgm |[] [] [] (ptn (mk.val e: position v2:(vec3 x: y: z:) ::) [(\ (= e self))]) |[] |[] [] (inj [] (mk.val self position (vec3 v1.y 10 (\ (+ z 1))) 1) [(\ now) 1 forever root nil] ) 0us 1 1 ) [now 0 forever root nil] ) (inj [] (ins p |[]) [now 0 forever root nil 1] ) 0us 1 1 ) |[] passive data 19
Code (mk.val self position (vec3 1 1 1) 1) [] [now 1 forever root nil] _start:(pgm |[] [] [] (ptn (mk.val self position v1#vec3: ::) |[]) |[] |[] [] (inj [] p:(pgm |[] [] [] (ptn (mk.val e: position v2:(vec3 x: y: z:) ::) [(\ (= e self))]) |[] |[] [] (inj [] (mk.val self position (vec3 v1.y 10 (\ (+ z 1))) 1) [(\ now) 1 forever root nil] ) 0us 1 1 ) [now 0 forever root nil] ) (inj [] (ins p |[]) [now 0 forever root nil 1] ) 0us 1 1 ) |[] passive data program 20
Code (mk.val self position (vec3 1 1 1) 1) [] [now 1 forever root nil] _start:(pgm |[] [] [] (ptn (mk.val self position v1#vec3: ::) |[]) |[] |[] [] (inj [] p:(pgm |[] [] [] (ptn (mk.val e: position v2:(vec3 x: y: z:) ::) [(\ (= e self))]) |[] |[] [] (inj [] (mk.val self position (vec3 v1.y 10 (\ (+ z 1))) 1) [(\ now) 1 forever root nil] ) 0us 1 1 ) [now 0 forever root nil] ) (inj [] (ins p |[]) [now 0 forever root nil 1] ) 0us 1 1 ) |[] program pattern productions 21
Code (mk.val self position (vec3 1 1 1) 1) [] [now 1 forever root nil] _start:(pgm |[] [] [] (ptn (mk.val self position v1#vec3: ::) |[]) |[] |[] [] (inj [] p:(pgm |[] [] [] (ptn (mk.val e: position v2:(vec3 x: y: z:) ::) [(\ (= e self))]) |[] |[] [] (inj [] (mk.val self position (vec3 v1.y 10 (\ (+ z 1))) 1) [(\ now) 1 forever root nil] ) 0us 1 1 ) [now 0 forever root nil] ) (inj [] (ins p |[]) [now 0 forever root nil 1] ) 0us 1 1 ) |[] dynamic code generation 22
Reduction Modes > pgm/A reduces whenever there exists an A > pgm/|A reduces whenever there exists a B != A > |pgm/A reduces whenever there has been no A during the last TSC, or nothing >|pgm/|A reduces whenever there has been no |A, (i.e. only As) during the last TSC, or nothing > pgm/0 reduces every TSC microseconds
Groups - saliency/activation thresholds - collective agreement on control values - update period
Groups - saliency/activation thresholds - collective agreement on control values - update period - cyclic decay of saliencies/threshold sln thr
Propagation of Saliency > across the object graph > transversal to groups
High-level Reasoning > 1st order predicates / invertible functions / fuzzy values > Reductions at the scale of groups graphs programs groups models hierarchies of models dynamic model revision (T0) FT (T1) (F) FF (P) (W) (grab ) (move ) (mk.val position ) (mk.val position ) (mk.val weight ) (H) 30 (C)
Forward Chaining As forward models: produce predictions world/system measure success (T0) FT (T1) (F) FF inputs from the world or self (P) (W) (grab ) (move ) (mk.val position ) (mk.val position ) (mk.val weight ) (H) 31 (C)
Backward Chaining As inverse models: produce goals world/system measure success / issue commands inputs from self (T0) FT (T1) (F) FF (P) (W) (grab ) (move ) (mk.val position ) (mk.val position ) (mk.val weight ) (H) 32 (C)
Tools > Compiler > Decompiler > Provisioning system > Visualization system
Tools Visualization system
Status > V1.0: fully implemented performance according to requirements (latency, scalability) > Next release: 30 Oct 2010 V1.1 = V1.0 + high-level reasoning > Distribution using mBrane joint work with CMLabs > Tools are minimal but sufficient for now
Future Work > Under works: causality/context discovery using Long Short-Term Memory neural networks (Schmidhuber) neural nets programs > Under investigation: formal verification joint work with RU/ICE-ROSE (M. Sirjani) ~