My research aims to find effective methods for developing intelligent systems.
By "intelligence" we mean the ability to act appropriately toward specific goals,
using limited computational resources, with incomplete and uncertain information.
Intelligent systems rely on "knowledge" and how it is used to guide search for
plausible or more efficient solutions. Research is driven by applications. Tackling real-world
problems helps identify new problems which often lead to new or improved techniques
for solving them. Here are some areas that I have worked on.
See selected publications
(by chronological listing, or by
subject areas) and research projects.
|Automated Assessment of Risks associated with Software
Risk assessment is concerned with three basic questions: what can go wrong?, what is its likelihood?,
and what are its consequences? Current techniques that specifically address risks associated with
software are lacking. Software and hardware/physical faults/failures are very different in nature
and behaviors. Although many risk assessment techniques have been successfully applied in various
safety-related systems, they often omit detailed software properties or exclude application perspectives
of an entire system. Furthermore, most existing tools rely on manual hazard analysis. The goal of
this research is to identify foundations for systematic modeling and principle techniques for developing
a risk assessment tool that assists users in effectively and efficiently identifying hazards and risks
associated with software and their impacts on its entire system and environment. Results will be applied
to embedded systems in safety-related systems.
|Intelligent Data Understanding
The ability to extract useful information from data is an important asset. Efficiency
and accuracy are central for research and development of analysis tools. In practice,
however, it is not uncommon that even a sophisticated, highly accurate tool may be
unused if its resulting model is hard to interpret. One remedy is to build systems that
identify interesting findings and summarize results for users. While this is useful, it can
limit users' ability to directly gain insight from the resulting models. Our research starts
from a comprehensible model and asks how well it can be used for extracting information
from data sets. (See more details in research projects.)
|Blackboard Systems and Architectures
The blackboard architecture supports a paradigm of problem-solving based on independent
cooperating experts solving the problem opportunistically using globally accessible data.
Blackboard systems are more flexible than traditional rule-based architectures. BB1, designed
by Barbara Hayes-Roth at Stanford University, implements a blackboard control architecture
which separates domain problems fromthe control problem, i.e., which of the potential actions
should be performed at each point in the problem-solving process. Our work focuses on efficiency.
We introduced a low-level language for blackboard systems along with efficient blackboard
activation and agenda maintenance mechanisms (using activation demons) that produced a
significant speedup in agenda maintenance and execution in BB1-like systems.
|Model-Based Reasoning and Knowledge Representation
Knowledge representation is a fundamental challenge in building intelligent systems.
The issue becomes even more compelling when dealing with large and complex physical
systems. Reasoning about such systems quantitatively can be computationally
expensive or even infeasible. Model-based reasoning offers a way to reason about physical
systems qualitatively based on known theories about the systems. Our work introduced a
representation scheme that abstract generic knowledge about certain classes of physical
systems (such as flow systems) that can be applied in many domains. The scheme promotes
knowledge sharing and reuse of generic knowledge for multiple tasks, including diagnosis,
prediction and generation of causal explanations.
|Knowledge-Based Software Engineering
Software development requires the knowledge and expertise of software developers.
In general, our goal is to enhance software development (in both quality and efficiency)
by exploiting such knowledge using various AI techniques. Examples include (1) an approach
that aims to increase autonomy in the software synthesis process by employing advanced
control mechanisms and knowledge about software design (2) a user requirements elicitation
tool based on a representation language that facilitates communication, collaboration and
identification of ambiguity, and (3) understanding quality of software through its evolution using
machine learning techniques.