HUMANOBS

39
HUMANOBS Reykjavik – September 2010 Eric Nivel [email protected] Reykjavik University - CADIA Replicode

description

HUMANOBS. Replicode. Eric Nivel [email protected] 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 - PowerPoint PPT Presentation

Transcript of HUMANOBS

Page 1: HUMANOBS

HUMANOBS

Reykjavik – September 2010

Eric [email protected]

Reykjavik University - CADIA

Replicode

Page 2: HUMANOBS

2

Overview

> What is Replicode?

> Main Features

> Tools

> Status & Future Work

Page 3: HUMANOBS

3

What is Replicode?

Page 4: HUMANOBS

4

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

Page 5: HUMANOBS

5

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 automated memory 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

Page 6: HUMANOBS

6

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

Page 7: HUMANOBS

7

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

Page 8: HUMANOBS

8

Main Features

Page 9: HUMANOBS

9

Production System

> Data-driven: patterns of time seriestnow

inputs outputs

Page 10: HUMANOBS

10

Production System

Page 11: HUMANOBS

11

Production System

Page 12: HUMANOBS

12

Production System

Page 13: HUMANOBS

13

Production System

> Time scope

Page 14: HUMANOBS

14

Production System

> Parallel

Page 15: HUMANOBS

15

Production System

> Code = data

Page 16: HUMANOBS

16

Production System

> Execution reflectivity

Page 17: HUMANOBS

17

Control

> Resilience

> Saliency

> Activation

tnow

Page 18: HUMANOBS

1818

(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] )0us11)|[]

Code

Page 19: HUMANOBS

1919

(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] )0us11)|[]

Code

passive data

Page 20: HUMANOBS

2020

(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] )0us11)|[]

Code

passive data

program

Page 21: HUMANOBS

2121

(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] )0us11)|[]

Code

patternprogram

productions

Page 22: HUMANOBS

2222

(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] )0us11)|[]

Code

dynamiccodegeneration

Page 23: HUMANOBS

23

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

Page 24: HUMANOBS

24

Groups

- saliency/activation thresholds- collective agreement on control values- update period

Page 25: HUMANOBS

25

Groups

- cyclic decay of saliencies/threshold

sln thr

- saliency/activation thresholds- collective agreement on control values- update period

Page 26: HUMANOBS

26

Groups

Page 27: HUMANOBS

27

Groups

Page 28: HUMANOBS

28

Graphs

Page 29: HUMANOBS

29

> across the object graph

> transversal to groups

Propagation of Saliency

Page 30: HUMANOBS

30

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

(grab )

30

(mk.val position ) (mk.val position )

(mk.val weight )

(H)

(C)

(W)

(P)

(move )

(F)(T0) (T1)

FF

FT

Page 31: HUMANOBS

31

Forward Chaining

31

(H)

(C)

(W)

(P)

(F)(T0) (T1)

As forward models: produce predictions

world/system

inputsfromthe worldor self

measuresuccess

(grab ) (mk.val position ) (mk.val position )

(mk.val weight )

(move )

FT

FF

Page 32: HUMANOBS

32

Backward Chaining

32

(H)

(C)

(W)

(P)

(F)(T0) (T1)

As inverse models: produce goals

world/system

inputsfromself

measuresuccess/issuecommands

(grab ) (mk.val position ) (mk.val position )

(mk.val weight )

(move )

FT

FF

Page 33: HUMANOBS

33

Tools

Page 34: HUMANOBS

34

Tools

> Compiler

> Decompiler

> Provisioning system

> Visualization system

Page 35: HUMANOBS

35

Tools

Visualization system

Page 36: HUMANOBS

36

Status & Future Work

Page 37: HUMANOBS

37

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

Page 38: HUMANOBS

38

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)

~

Page 39: HUMANOBS

39