JPF Overview - College of Engineering | Oregon State University

JPF
Probabilistic Frames
Masami Takikawa
Information Extraction & Transport
[email protected]
February 4, 2003
JPF
1
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 largescale 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
Process
frames
ICE
JPF
BN
Assessment
Engine
Prob & Decision
JSPI
C++ code
OO
modeling
Instantiation
and
Connection
Observation,
Query,
and
Decision
making
JSPIScript
Compiling
February 4, 2003
JPF
4
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, 2003
JPF
5
Example: Electrical Circuits
frame Circuit
slot output
facet domain = [0,1]
facet distribution = [.5, .5]
end;
Circuit
output
Each slot specifies a BN node.
February 4, 2003
JPF
6
Inverter Frame
Inverter
frame Inverter isa Circuit
Input Circuit
slot input
facet domain = Circuit
output
state
slot state
facet domain = [OK, Stuck0]
facet distribution = [.9, .1]
slot output
facet domain = [0,1]
output
facet parents = [input.output,state]
facet distribution =
function input,state { if state==OK then 1-input else 0 end }
end;
February 4, 2003
JPF
7
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, 2003
JPF
8
Two Inverter BN
Inverter 1
Input Circuit
output
Inverter 2
state
state
output
output
Prediction: P(inv2.output | inp.output)
Diagnosis: P(inv1.state | inp.output, inv1.output)
Decoding: P(inp.output | inv2.output)
February 4, 2003
JPF
9
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, 2003
JPF
10
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, 2003
JPF
11
Two Sensor BN
Inverter 1
Inverter 2
Input Circuit
output
Which inverter is
sensor2
connected to?
state
output
output
Sensor 1
Which
[inp1]
February 4, 2003
state
Sensor 2
Which
[inv1,inv2]
Obs=0
JPF
Obs=0
12
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
February 4, 2003
JPF
13