神经网络专家系统
有谁知道如何使用神经网络模拟专家系统?例如 20q.net 网站。
我更好奇网络是如何设计的;即有多少输入,输入代表什么,网络输出什么,这些输出如何指向答案。非常有趣的东西。
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.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
专家系统与神经网络是非常不同的系统。
这些系统在架构和用途方面在很多方面都有所不同。
专家系统(至少在对该词的传统理解中)由[通常]高级规则驱动,引擎使用这些规则以及一些输入来推断有关输入的一些结论。规则通常是显式输入的,本质上是将特定领域的专家所做的一些陈述翻译成专家系统中实现的任何谓词表示。
另一方面,神经网络(NN)可以手动/显式设置其拓扑,但通常能够自动学习如何将某些输入或输入序列与特定输出相关联。
上面的描述当然是对这两个概念的简化,也许特别是神经网络,它们有许多不同的形式和风格(有许多不同的用途,远远超出了模式识别的范围),但是,我希望,将帮助您理解这些系统有多么不同。
一个显着的差异可能与“透明度”有关,专家系统通常可以为其推论输出一些“解释”(“输入 1 和规则 #3 表明结论 A,概率为 81%”),而神经网络则倾向于是黑匣子。这并不是说神经网络不能非常精确地“理解”他们的世界(这种理解被封装在网络的拓扑结构以及与各种输入和/或神经元相关的相对权重中),只是这种专业知识关于他们的世界并不那么容易翻译成简单的英语。关于透明度,以及
在非常广泛的术语中,神经网络有点类似于数学公式,其中专家系统更像是一本食谱。
另一个显着的区别,如上面所暗示的,是专家系统需要翻译和加载明确的规则(“如果温度超过 200 度,安全阀开始打开”),神经网络根据提供给它的训练集(例如标记输入)发现此类“规则”套)。
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).
我不知道 Q20 神经网络是如何工作的,但是您可以使用神经网络来训练信念网络中的连接。本质上,每个问题都有一个“被问的愿望”,它是根据先前提出的问题的输出进行修改的。换句话说,最初“愿望”最高的 3 个问题可能是“它是动物吗?” “是蔬菜吗?”或“它是矿物质吗?”假设您分开领带并选择“它是动物吗?”如果这个人回答“是”,你就会增加询问“它有头发吗?”等问题的可能性/愿望。并减少诸如“这是豆类吗?”之类的问题的可能性。
在该方案中,可以使用神经网络来完成增量概率函数的参数。换句话说,决定下一次问“它有头发吗?”的概率增加或减少多少。可以根据“它是动物吗?”的成功或失败来完成->正确,“它有头发吗 ->”...[结果] 在大量游戏中。请注意,虽然这对于神经网络来说可能,但神经网络是否高效并不直观——统计方法一直追溯到贝叶斯,一直到“支持向量机”是修改问题之间的联系以更好地学习的替代方法。
根据我在人工智能方面的经验,我怀疑仅仅将所有问题都扔进锅里并完全交叉连接是不会成功的,而是必须拥有一系列实现目标的子网。但我不确定。 Q20 算法的一个引人注目的地方是它似乎没有离散的子目标——我认为你可以随时看到任何问题。这是非常令人印象深刻的。
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.
这是一个开放式问题,或者至少是一个很难回答的问题。查看
http://www.cs.waikato.ac.nz/ml/weka/< /a> 和 http://marsyas.sness.net/ 获取一些有趣的文档和数据挖掘的实现和机器学习算法。
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.
这些都是非常不相容的话题。
专家系统依赖于一组规则和推理引擎;这套规则是由知识工程师给出的。这些规则是“如果-那么”语句,易于阅读/更正/维护等。
另一方面,神经网络则被视为黑匣子。权重和神经元根据输入/输出模式进行调整,但这些权重并不表示为规则。没有推理引擎,因为输入用于各种计算以提供输出。
在极少数情况下,您可以从 NN 中提取一些规则(例如,参见 规则Fuzzy ARTMAP 的提取);但据我所知,这种做法在实践中很少遇到。它将对嵌入神经网络的知识进行逆向工程,这个过程高度依赖于网络的具体架构。
另一个很大的区别是:神经网络可以专门用于数字输入(非数字输入必须转换为数字,但这有时是一个非自然过程),而专家系统接受标称值。
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.
您可以做的是用神经网络替换特定规则甚至规则集,然后在树中构造对这些神经网络的调用(类似于简单的问答系统通常如何开始)或在您将按顺序启动的列表中通过某种图形网络或在某种图形网络中工作。除非您构建在专家系统中使用的函数中使用的神经网络,否则您失去的是内置 RETE 网络实现。实际上,您还可以在代表 N 个规则的一组输入上训练神经网络 - 在这种情况下,神经网络只是记住输入和输出模式,而不是对模式进行概括。
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.