English 中文(简体)
Neural Network Expert System
原标题:

Does anyone know how to emulate an Expert Systems using Neural Networks? An example of this is the 20q.net website.

I m more curious to how the network would be designed; ie how many inputs, what the input represents, what outputs from the network, how these outputs point to an answer. Very interesting stuff.

最佳回答

I don t know how the Q20 neural network works, but you can use neural networks to train the connections in a Belief Network. Essentially, every question has a "desire to be asked" which is modified based upon the output of the previously-asked question. In other words, the 3 questions with the highest initial "desire" might be "Is it animal?" "Is it vegetable?" or "Is it mineral?" Let s just say that you split the tie and go with "Is it animal?" If the person answers "Yes", you increase the probability / desire of asking questions such as "Does it have hair?" and decrease the probability of questions such as "Is it a legume?"

In this scheme, it would be the parameters of the delta probability function that could be done with a neural net. In other words, the decision as to how much to increase or decrease the probability of next asking "Does it have hair?" could be done based on the success or failure of "Is it animal?"-> TRUE, "Does it have hair->"...[Result] over a very large number of games. Note that while this is possible to do with a NN, it s not at all intuitive that a NN would be efficient -- statistical methods going all the way back to Bayes and up to "Support Vector Machines" would be alternative ways of modifying the linkage between questions to learn better.

Based on my experience with AI, I would suspect that you wouldn t have success just throwing all the questions into a pot and completely cross-connecting them, but would rather have to have a series of sub-nets that achieved goals. I don t know for sure, though. One of the things that s striking about the Q20 algorithm is that it doesn t seem to have discrete sub-goals -- I think you can see any question at any time. It s very impressive.

问题回答

Expert Systems are very different systems from Neural Networks

These systems differ in many ways, both with regard to their architectures and to their uses.

Expert Systems (at least in the traditional understanding of the word) are driven by [typically] high-level rules which the engine uses, along some input, to infer some conclusions about the input. Rules are typically entered explicitly, essentially translating some statements made by experts in a particular domain, into whatever predicate representation is implemented in the Expert System.

Neural Networks (NN), on the other hand, may have their topology manually/explicitly set, but otherwise are typically able to learn, automatically, how to associate some inputs or input sequences with particular outputs.

The above descriptions are certainly reductive of both concepts, maybe particularly of Neural Nets which come in many different forms and flavors (with many different usages, well beyond pattern recognition), but, I hope, will help you understand how very different these systems are.

One salient difference may be with regards to "transparency", whereby Expert Systems can typically output some "explanation" for their deductions ("Input 1 and Rule #3 indicate conclusion A, with a probabilty of 81%"), while NNs tends to be black boxes. This is not to say that NNs cannot come to a very precise "understanding" of their world (and such understanding gets encapsulated in the topology of the network and the relative weights associated with various inputs and/or neurons), it s just that this expertise about their world is not so readily translated into plain English. With regards to transparency, and in very broad terms, an NN compares a bit to a mathematical formula, whereby an Expert System is more like a recipe book.

Another notable difference, as hinted above, is that an expert system requires the translation and loading of explicit rules ("If the temperature exceeds 200 degrees, the safety valve starts opening"), whereby the Neural Network discovers such "rules" based on the training sets supplied to it (such as labeled input sets).

This is somewhat of an open ended question, or at least a difficult one to answer here. Check out http://www.cs.waikato.ac.nz/ml/weka/ and http://marsyas.sness.net/ for some interesting documentation and implementation of data mining and machine learning algorithms.

These are quite incompatible topics.

An expert system relies on a set of rules and an inferential engine; the set of rules is given by the knowledge engineer. The rules are "if-then" statements, easy to be read/corrected/maintained etc.

A neural network, on the other hand, is rather perceived as a black box. The weights and neurons adapt based on the input/output patterns, but these weights are not represented as rules. There is no inferential engine, as the input is used in various computations to provide the output.

There are few cases in which you can extract some rules from NN (see for example rule extraction for Fuzzy ARTMAP); but, from what I know, such approaches are rarely encountered in practice. It is about to reverse engineering of knowledge embedded into NNs, a process highly dependent on the concrete architecture of the network.

Another big difference: a NN can be used exclusively for numerical input (non-numeric input must be converted to numbers, but this is sometimes a non-natural process) while an expert system accepts nominal values.

What you can do is replace specific rules or even sets of rules with a neural net and then just structure the calls to those neural nets in a tree (similar to how simple question answering system are often begun) or in a list that you would sequentially work through or in some kind of a graph network. What you loose is a built in RETE network implementation unless you structure the neural nets you use in a function used in the expert system. You can actually also just train a neural net on a set of input representing N rules - in this case the neural net is just memorizing input and output patterns rather than generalizing over patterns.





相关问题
SQL Server - How many users do I *really* need?

I m setting up an application, and I m looking into purchasing a license for SQL Server. My question is pretty simple (though may have a complicated answer...) How many users accounts do I really ...

Object Graph / Persistence Question

I m currently working with an online application that requires multiple screens/steps in order to complete. The application domain is modeled using an object graph. Persistence to and from a database ...

Why does stack get truncated in Exception.StackTrace?

Why does the high part of the stack (in Exception.StackTrace) gets truncated? Let s see a simple example: public void ExternalMethod() { InternalMethod(); } public void InternalMethod() { try ...

ASP.NET MVC and Service Oriented Architecture

I would like to know how do i incorporate a feature like wcf within and MVC application. My current idea of the architecture is as follows: EntityFramework -> ASP.NET MVC (Views) ...

热门标签