about summary refs log tree commit diff
path: root/sourcecodes/bnt-master/docs/majorFeatures.html
blob: 11005a856156df9ebb013e7bc778a338e4a3e3f7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<h2><a name="features">Major features</h2> 
<ul> 
 
<li> BNT supports many types of
<b>conditional probability distributions</b> (nodes),
and it is easy to add more.
<ul> 
<li>Tabular (multinomial)
<li>Gaussian
<li>Softmax (logistic/ sigmoid)
<li>Multi-layer perceptron (neural network)
<li>Noisy-or
<li>Deterministic
</ul> 
<p> 
 
<li> BNT supports <b>decision and utility nodes</b>, as well as chance
nodes,
i.e., influence diagrams as well as Bayes nets.
<p> 
 
<li> BNT supports static and dynamic BNs (useful for modelling dynamical systems
and sequence data).
<p> 
 
<li> BNT supports many different <b>inference algorithms</b>,
and it is easy to add more.
 
<ul> 
<li> Exact inference for static BNs:
<ul> 
<li>junction tree
<li>variable elimination
<li>brute force enumeration (for discrete nets)
<li>linear algebra (for Gaussian nets)
<li>Pearl's algorithm (for polytrees)
<li>quickscore (for QMR)
</ul> 
 
<p> 
<li> Approximate inference for static BNs:
<ul> 
<li>likelihood weighting
<li> Gibbs sampling
<li>loopy belief propagation
</ul> 
 
<p> 
<li> Exact inference for DBNs:
<ul> 
<li>junction tree
<li>frontier algorithm
<li>forwards-backwards (for HMMs)
<li>Kalman-RTS (for LDSs)
</ul> 
 
<p> 
<li> Approximate inference for DBNs:
<ul> 
<li>Boyen-Koller
<li>factored-frontier/loopy belief propagation
</ul> 
 
</ul> 
<p> 
 
<li> 
BNT supports several methods for <b>parameter learning</b>,
and it is easy to add more.
<ul> 
 
<li> Batch MLE/MAP parameter learning using EM.
(Each node type has its own M method, e.g. softmax nodes use IRLS,<br> 
and each inference engine has its own E method, so the code is fully modular.)
 
<li> Sequential/batch Bayesian parameter learning (for fully observed tabular nodes only).
</ul> 
 
 
<p> 
<li> 
BNT supports several methods for <b>regularization</b>,
and it is easy to add more.
<ul> 
<li> Any node can have its parameters clamped (made non-adjustable).
<li> Any set of compatible nodes can have their parameters tied (c.f.,
weight sharing in a neural net).
<li> Some node types (e.g., tabular) supports priors for MAP estimation.
<li> Gaussian covariance matrices can be declared full or diagonal, and can
be tied across states of their discrete parents (if any).
</ul> 
 
<p> 
<li> 
BNT supports several methods for <b>structure learning</b>,
and it is easy to add more.
<ul> 
 
<li> Bayesian structure learning,
using MCMC or local search (for fully observed tabular nodes only).
 
<li> Constraint-based structure learning (IC/PC and IC*/FCI).
</ul> 
 
 
<p> 
<li> The source code is extensively documented, object-oriented, and free, making it
an excellent tool for teaching, research and rapid prototyping.
 
</ul>