Hi,

Last week there was a question on this list concerning the use of Bayesian
networks on embedded devices. I think the following may be of interest to
some people, as embedded devices are now quite popular (and there is a lot
of hype on how popular they will be).

Short comment: Here at my lab, we are working at a Bayes net engine aimed
at embedded devices: we have now a full Bayes net engine (with inferences,
maximum a posteriori, etc) that occupies *26kbytes* of memory. The EBayes
project is an effort to produce a lightweight engine that can be used in
a large variety of applications/devices. You can download the engine from
http://wwww.cs.cmu.edu/~javabayes/EBayes/). Like the JavaBayes system,
EBayes is written in Java (for more information on JavaBayes, see the web
site http://www.cs.cmu.edu/~javabayes/) and is quite portable. We are now
working in a version for robot control that can be embedded in
microcontroller boards.

Long comment: Most of the Bayesian engines that can be used today are
quite heavy and require considerable machine power, but there have been
some attempts in the literature to pursue other paths. Embedded devices
are quite short on resources like memory; on the other hand,
microprocessors for embedded devices are quite fast and can handle lots of
single computations like the ones used in Bayesian network algorithms. If
we believe in all the hype, the market for embedded devices is huge; even
if we don't believe all that, embedded devices seem to be great for AI as
they are appropriate for robotics and other automated "beings".

There are several techniques that seem appropriate for the world of
embedded devices. The work on Query-DAGs by Darwiche and Provan, in
compiling Bayesian networks for specific applications, is quite close to
the needs of embedded devices, as it produces quite small engines.
Query-DAGs work well when only a single network (or a small number of
networks) is to be used. The work of Rina Dechter on trade-offs between
space and time in Bayesian network algorithms is also relevant here, as
embedded devices will hardly have as much memory to handle
arbitrary networks. (Both Darwiche/Provan and Dechter's work are at
CUAI96.)

I have not seen any application of Bayesian networks that is specifically
geared towards embedded devices. I have been developing a Java-base
network engine, well-suited for the embedded system world. This
"embeddable engine" is based on the JavaBayes system, which I have been
developing for some time with the help of several other people (in fact
I've been busy with other things, but I hope to get back to JavaBayes as
soon as possible...). JavaBayes is a Java-based system for manipulating
Bayesian networks, with graphical interface, engine, etc. For more
information on JavaBayes, look at the web site
http://www.cs.cmu.edu/~javabayes. JavaBayes is released with
code and source under the GNU license, in the spirit of fostering research
and communication in the community.

I now have the EBayes engine, a fully featured engine for Bayesian
networks with discrete variables, which fits in 26kbytes of memory. The
system is an optimized version of the engine in JavaBayes, with several
enhancements to save memory. The system is completely general in the sense
that it can handle any type of network (polytree, loopy, etc), and it
inherits some of the advantages of the Java language: small size,
portability, etc. Anyone can take a look at the system and download the
engine from http://www.cs.cmu.edu/~javabayes/EBayes/; note that this web
site is now really crude. As the system is in development, I'm not posting
the source code, but if you are interested in the project, you can drop me
a message and I'll notify you when I have something more stable.

I hope to spend more time on documentation in the future, and maybe
produce a paper (maybe there will be enough to say at the next CUAI),
but I'd be more than happy to communicate with others that are interested
in the project. Of course there are several challenges yet to be met.
In particular, it is not clear now what is the best way to reduce the
amount of memory used during inferences: How to trade off time for space,
memory for accuracy, how to cache/discard intermediate results, and other
questions on these lines.

Maybe someday we will have Bayesian networks everywhere, and we will
just ask the Bayes net in our air-conditioning system what is the
weather forecast for tomorrow.

    Cheers,

                Fabio G. Cozman
                Assistant Professor
                University of Sao Paulo

On Fri, 13 Aug 1999, ted pedersen wrote:

> 
> Greetings all.
> 
> Is anyone aware of articles describing the use of Bayesian Networks in 
> consumer electronic devices (VCRs, microwaves, etc.)? 
> 
> In general I'm wondering how suitable Bayesian Networks are for use in
> relatively small embedded computing devices. So any thoughts, articles,
> etc. relative to that would be of great interest. 
> 
> I'll post a summary of any responses I receive. 
> 
> Thanks!
> Ted
> 
> -- 
> # Ted Pedersen                                                           #
> # Department of Computer Science                      [EMAIL PROTECTED] #
> # University of Minnesota, Duluth                                        #
> # Duluth, MN 55812                                        (218) 726-8770 #
> 
> 

Reply via email to