February 4, 2003 JPF1 JPF Probabilistic Frames Masami Takikawa Information Extraction & Transport
JPF Overview Object-oriented Knowledge Representation Language for Probabilistic Inference Practical and Commercially Available Used mostly for military R&D Object-classification, tracking, sensor fusion, situation assessment, decision making, etc. Targets real-time inference with large- scale models (at least hundreds of nodes)
Layered Architecture ICE: GUI IDE & wizard for specific modeling task Assessment Engine: application framework Provides data-driven construction mechanism JPF: OO modeling language Provides frame-based abstraction JSPIScript: OO scripting language Provides easy instantiation/access/query JSPI: BN inference engine Provides efficient exact/approximate computation
February 4, 2003JPF4 Process OO modeling frames Instantiation and Connection BN Observation, Query, and Decision making Prob & Decision ICE JPF Assessment Engine JSPIScript JSPI Compiling C++ code
February 4, 2003JPF5 JPF Language Based on AI frame language (Precursor to OOPL) Frame: class with multiple inheritance Slot: instance variable Facet: variable type FrameInstance: instance
February 4, 2003JPF6 Example: Electrical Circuits frame Circuit slot output facet domain = [0,1] facet distribution = [.5,.5] end; Each slot specifies a BN node. Circuit output
February 4, 2003JPF7 Inverter Inverter Frame frame Inverter isa Circuit slot input facet domain = Circuit slot state facet domain = [OK, Stuck0] facet distribution = [.9,.1] slot output facet domain = [0,1] facet parents = [input.output,state] facet distribution = function input,state { if state==OK then 1-input else 0 end } end; Input Circuit outputstate output
February 4, 2003JPF8 Two Inverter Instances inp1 = Circuit->makeInstance("inp1"); inv1 = Inverter->makeInstance("inv1"); inv1->input = inp1; inv2 = Inverter->makeInstance("inv2"); inv2->input = inv1; Frame->makeInstance(“name”) will create a new instance. frameInstance->slot = X will connect frame instances.
February 4, 2003JPF9 Inverter 2 Two Inverter BN state output Inverter 1 Input Circuit outputstate output Prediction: P(inv2.output | inp.output) Diagnosis: P(inv1.state | inp.output, inv1.output) Decoding: P(inp.output | inv2.output)
February 4, 2003JPF10 Sensor Frame – Assoc Hyp frame Sensor slot whichCircuit facet domain = Circuit facet distribution = UniformDiscreteDistribution slot observation facet domain = [0,1] facet parents = [whichCircuit.output] facet distribution = function output { if output==0 then [0.9, 0.1] else [0.2, 0.8] end } end;
February 4, 2003JPF11 Two Sensor Instances s1 = Sensor->makeInstance(); s1->whichCircuit->addValueToDomain(inp1); s1->observation->observe(0); s2 = Sensor->makeInstance(); s2->whichCircuit->addValueToDomain(inv1); s2->whichCircuit->addValueToDomain(inv2); s2->observation->observe(0);
February 4, 2003JPF12 Inverter 2 Two Sensor BN state output Inverter 1 Input Circuit outputstate output Sensor 1 Obs=0 Which [inp1] Sensor 2 Obs=0 Which [inv1,inv2] Which inverter is sensor2 connected to?
February 4, 2003JPF13 Other Topics Subtype Hypotheses Existence Hypotheses Efficient Rep/Comp of Assoc Hyp Efficient Rep/Comp of Aggregation (e.g.,MAX) Partially Dynamic BN (Markov Processes) Decision and Utility Inference (Exact/Approximation) Query Compiler & Real-time Computing Modeling Methodologies (How to debug?) Modeling Idioms (Roles, Sets, Relations, etc.) Dynamic Data-driven Construction