Open luoway opened 4 years ago
未找到或找不到确定解决之道的不成熟领域
黑板模式解决这类问题:没有可行而确定的解决方案将原始数据转换为高级数据结构。
这类问题具有如下特点:可以分解成多个子问题,但每个子问题都属于不同的专业领域。要解决子问题,需要使用不同的表示法和范式,往往没有既定策略。
上述有些领域的信息可能不可靠或不准确,每个转换步骤都可能提供多个解或无解。因此,必须详细说明黑板模式系统的局限性,如果要根据其结果作出决策,必须对结果进行验证。
对应这类问题,影响其解决方案的作用力如下:
黑板架构背后的理念是:一系列独立的程序携手合作,致力于处理同一个数据结构。每个程序善于解决整项任务的某一部分;所有程序合作致力于找到解决之道。系统前进的方向主要取决于当前的进展状态。一个中央控制组件负责评估当前状态并协调各个专业程序。
之所以命名“黑板”,是因为它让人想起专家们站在黑板前协作解决问题的情形。每位专家都独立地对当前状态做出评估,随时可能到黑板前添加、修改或删除信息。专家们通常自行决定接下来由谁来到黑板前,在黑板模式中,如果有多个程序都能提供帮助,将由调停者(moderator)组件决定这些程序的执行顺序。
对系统进行划分,使其包含一个黑板组件、一系列知识源以及一个控制组件。
黑板是中央数据存储区,解空间中的元素及控制数据都存储在这里。使用术语“词表”表示可能出现在黑标上的所有数据元素。黑板提供了一个接口,让所有知识源都能够对其进行读写。
解空间中的所有元素都可能出现在黑板上。出现在黑板上的解称为“推测”或“黑板项”。遭到否决的推测将从黑板中删除。
推测通常有多个属性,如所属的抽象层级、正确的可能性、推测对应的时段。
指定推测之间的关系常常很有帮助,如部分——整体关系、支持关系。
每个知识源都是一个独立的子系统,解决整个问题的特定方面。这些知识源解决的子问题一起构成问题域。整合多个知识源的结果是找到解的唯一途径。
知识源彼此不直接通信,而只是读写黑板,因此它们必须明白黑板的词表。
知识源通常运行在两个抽象层级。
每个知识源都负责判断自己在什么情况下可帮助找到解,因此知识源分为条件部分和行动部分。条件部分对求解过程的(写在黑板上的)当前状态进行评估,行动部分生成结果,可能导致黑板的内容发生变化。
控制组件运行一个监视黑板内容变化的循环,并决定接下来采取什么措施。
它根据知识运用策略决定激活哪个知识源。这种策略可能依赖于控制知识源,这些特殊的知识源不参与直接求解,而执行为控制决策提供依据的计算。他们的典型任务包括估算可能取得的进展以及知识源的计算开销。它们的计算结果是控制数据,也被写到黑板上。
从理论上说,黑板可能处于任何知识源都不适用的状态,系统将无法提供结果。
实际上,更可能出现的情形是,每个推理步骤都提出了多个新推测,导致接下来可采取的步骤猛增。因此,要解决的问题是限制备选方案的数量,而不是找到适用的知识源。
控制组件中有一个特殊的知识源或过程,负责决定系统在什么情况下该停止以及最终结果是什么样的。在找到可接受的解或系统时间、空间资源耗尽时,停止系统。
定义问题
定义问题的解空间
将解按抽象层级分为中间解和顶级解,也分为部分解和完整解。
将求解过程分为如下步骤
根据子任务将知识划分为专业知识源
这些子任务通常对应于专业领域。
定义黑板的词表
细化最初的解空间和抽象层级定义,找到解的一种表示方式,让所有知识源都能读写黑板。
并非每个知识源都必须明白每个黑板项,只要求每个知识源都能判断自己能否为黑板项做贡献。
如果必要,在黑板项和知识源内部表示之间提供进行转换的组件,易于更换知识源,使知识源不依赖于其他知识源使用的表示方式和范式,并能够使用其他知识源的结果。
要对黑板的内容进行评估,控制组件必须能够看懂这些内容。因此,黑板的词表并非一次成型,而是与知识源和控制组件的定义一起演变,但必须在设计过程的某个时间点固定下来,以便能够给知识源开发稳定的接口。
规范系统的控制机制
无法证明推测是正确的,因此我们的目标是找到解空间中可信度最高的顶级完整解。
推测的可信度指的是其正确的可能性。为找到可信度达到指定阈值的顶级完整解,系统排除可信度低的推测,并查找与输入数据一致且相互支持的推测集合。
在最简单的情况下,每当黑板的内容发生变化时,控制策略都向所有知识源的条件部分咨询,再随机地选择并激活一个适用的知识源。这种策略通常效率低,制定良好的控制策略是系统设计中最难的一项工作,常常要尝试多种机制和子策略。
下述机制可优化知识源评估,让控制策略更有效、性能更高。
控制策略适用经验法则确定该激活哪个适用的知识源,经验法则是基于经验和猜测的规则。下面是可供使用的经验法则:
排列适用知识源的优先顺序。
计算优先级的依据是对知识源条件部分的评估结果,还可能考虑其他信息,如取得进展的可能性、付出的代价。确定优先顺序时,控制组件可能考虑知识源的贡献。在这种情况下,它必须先执行每个适用知识源的行动部分,再决定让哪个知识源去修改黑板的内容。
优先考虑低层次或高层次的推测。
优先考虑对应于问题较大部分的推测。
岛屿驱动(island driving)。这种策略假设特定推测是合意解的一部分,并将其视为一个“确定性岛屿”,从而优先激活处理该推测的知识源,这样就无需搜索优先级更高的替代推测了。
实现知识源
根据控制组件的需求,将知识源划分为条件部分和行动部分。为确保知识源的独立性和可更换性,不要对其他知识源和控制组件做任何假设。对于同一个系统的不同知识源,可以使用不同的技术来实现。
Repository(仓库)
这个变种是黑板模式的通用版,其中央数据结构为仓库。
在黑板架构中,控制组件根据中央数据结构的当前状态决定激活哪个知识源,而仓库模式没有指定内部控制机制。仓库架构可能由用户输入控制,也可能由外部程序控制。
例如,可将传统数据库视为仓库,而使用数据库的程序相当于黑板架构中的知识源。
HEARSAY-II
第一个黑板系统是二十世纪七十年代初推出的HEARSAY-II语音识别系统。
采用黑板模式来分解问题和运用知识,有助于消解大部分作用力。
可以试验
在没有确定的方法,且遍历整个解空间不可行的领域,使用黑板模式可试验不同的算法,尝试不同的控制经验法则。
有助于提高可修改性和可维护性
因为知识源、控制算法和中央数据结构是完全分开的,所有模块都可以通过黑板进行交流。
知识源可重用
知识源是独立的专家,擅于完成某些任务。黑板架构让知识源可重用的前提是,知识源和底层黑板系统都明白(或通过适配器明白)相同的协议和数据。
可提高容错能力和健壮性
在黑板架构中,所有结果都只是推测,只有那些得到数据和其他推测强烈支持的推测才能留下来。这消除了噪声数据和不可靠的结论。
缺点:
难以测试
黑板系统执行计算时未遵循确定的算法,因此其结果常常不可重现。另外,在求解过程中,错误的推测不可避免。
不保证能提供满意的解
黑板系统通常只能正确地解决它面临的部分问题。
难以制定上好的控制策略
在制定控制策略方面,没有简单易行的方法,必须反复试验。
效率低
黑板系统需要否决错误的推测,这导致了大量的计算开销。
开发工作量大
原因:问题域不明确;为确定词表、控制策略和知识源,需要做大量的试错性编程工作。
不支持并行性
黑板架构不允许并行地执行知识源,对黑板中央数据的并行访问必须同步地执行。
总之,黑板架构能让你能够诠释性地运用知识,最适合用于试验可助一臂之力的不成熟领域。经过一段时间的研究并获得一定经验后,可能有更好的算法面面世,让你能够使用效率更高的架构。
背景
未找到或找不到确定解决之道的不成熟领域
问题
黑板模式解决这类问题:没有可行而确定的解决方案将原始数据转换为高级数据结构。
这类问题具有如下特点:可以分解成多个子问题,但每个子问题都属于不同的专业领域。要解决子问题,需要使用不同的表示法和范式,往往没有既定策略。
上述有些领域的信息可能不可靠或不准确,每个转换步骤都可能提供多个解或无解。因此,必须详细说明黑板模式系统的局限性,如果要根据其结果作出决策,必须对结果进行验证。
对应这类问题,影响其解决方案的作用力如下:
解决方案
黑板架构背后的理念是:一系列独立的程序携手合作,致力于处理同一个数据结构。每个程序善于解决整项任务的某一部分;所有程序合作致力于找到解决之道。系统前进的方向主要取决于当前的进展状态。一个中央控制组件负责评估当前状态并协调各个专业程序。
之所以命名“黑板”,是因为它让人想起专家们站在黑板前协作解决问题的情形。每位专家都独立地对当前状态做出评估,随时可能到黑板前添加、修改或删除信息。专家们通常自行决定接下来由谁来到黑板前,在黑板模式中,如果有多个程序都能提供帮助,将由调停者(moderator)组件决定这些程序的执行顺序。
结构
对系统进行划分,使其包含一个黑板组件、一系列知识源以及一个控制组件。
黑板
黑板是中央数据存储区,解空间中的元素及控制数据都存储在这里。使用术语“词表”表示可能出现在黑标上的所有数据元素。黑板提供了一个接口,让所有知识源都能够对其进行读写。
解空间中的所有元素都可能出现在黑板上。出现在黑板上的解称为“推测”或“黑板项”。遭到否决的推测将从黑板中删除。
推测通常有多个属性,如所属的抽象层级、正确的可能性、推测对应的时段。
指定推测之间的关系常常很有帮助,如部分——整体关系、支持关系。
知识源
每个知识源都是一个独立的子系统,解决整个问题的特定方面。这些知识源解决的子问题一起构成问题域。整合多个知识源的结果是找到解的唯一途径。
知识源彼此不直接通信,而只是读写黑板,因此它们必须明白黑板的词表。
知识源通常运行在两个抽象层级。
每个知识源都负责判断自己在什么情况下可帮助找到解,因此知识源分为条件部分和行动部分。条件部分对求解过程的(写在黑板上的)当前状态进行评估,行动部分生成结果,可能导致黑板的内容发生变化。
控制组件
控制组件运行一个监视黑板内容变化的循环,并决定接下来采取什么措施。
它根据知识运用策略决定激活哪个知识源。这种策略可能依赖于控制知识源,这些特殊的知识源不参与直接求解,而执行为控制决策提供依据的计算。他们的典型任务包括估算可能取得的进展以及知识源的计算开销。它们的计算结果是控制数据,也被写到黑板上。
从理论上说,黑板可能处于任何知识源都不适用的状态,系统将无法提供结果。
实际上,更可能出现的情形是,每个推理步骤都提出了多个新推测,导致接下来可采取的步骤猛增。因此,要解决的问题是限制备选方案的数量,而不是找到适用的知识源。
控制组件中有一个特殊的知识源或过程,负责决定系统在什么情况下该停止以及最终结果是什么样的。在找到可接受的解或系统时间、空间资源耗尽时,停止系统。
实现
定义问题
定义问题的解空间
将解按抽象层级分为中间解和顶级解,也分为部分解和完整解。
将求解过程分为如下步骤
根据子任务将知识划分为专业知识源
这些子任务通常对应于专业领域。
定义黑板的词表
细化最初的解空间和抽象层级定义,找到解的一种表示方式,让所有知识源都能读写黑板。
并非每个知识源都必须明白每个黑板项,只要求每个知识源都能判断自己能否为黑板项做贡献。
如果必要,在黑板项和知识源内部表示之间提供进行转换的组件,易于更换知识源,使知识源不依赖于其他知识源使用的表示方式和范式,并能够使用其他知识源的结果。
要对黑板的内容进行评估,控制组件必须能够看懂这些内容。因此,黑板的词表并非一次成型,而是与知识源和控制组件的定义一起演变,但必须在设计过程的某个时间点固定下来,以便能够给知识源开发稳定的接口。
规范系统的控制机制
无法证明推测是正确的,因此我们的目标是找到解空间中可信度最高的顶级完整解。
推测的可信度指的是其正确的可能性。为找到可信度达到指定阈值的顶级完整解,系统排除可信度低的推测,并查找与输入数据一致且相互支持的推测集合。
在最简单的情况下,每当黑板的内容发生变化时,控制策略都向所有知识源的条件部分咨询,再随机地选择并激活一个适用的知识源。这种策略通常效率低,制定良好的控制策略是系统设计中最难的一项工作,常常要尝试多种机制和子策略。
下述机制可优化知识源评估,让控制策略更有效、性能更高。
控制策略适用经验法则确定该激活哪个适用的知识源,经验法则是基于经验和猜测的规则。下面是可供使用的经验法则:
排列适用知识源的优先顺序。
计算优先级的依据是对知识源条件部分的评估结果,还可能考虑其他信息,如取得进展的可能性、付出的代价。确定优先顺序时,控制组件可能考虑知识源的贡献。在这种情况下,它必须先执行每个适用知识源的行动部分,再决定让哪个知识源去修改黑板的内容。
优先考虑低层次或高层次的推测。
优先考虑对应于问题较大部分的推测。
岛屿驱动(island driving)。这种策略假设特定推测是合意解的一部分,并将其视为一个“确定性岛屿”,从而优先激活处理该推测的知识源,这样就无需搜索优先级更高的替代推测了。
实现知识源
根据控制组件的需求,将知识源划分为条件部分和行动部分。为确保知识源的独立性和可更换性,不要对其他知识源和控制组件做任何假设。对于同一个系统的不同知识源,可以使用不同的技术来实现。
变种
Repository(仓库)
这个变种是黑板模式的通用版,其中央数据结构为仓库。
在黑板架构中,控制组件根据中央数据结构的当前状态决定激活哪个知识源,而仓库模式没有指定内部控制机制。仓库架构可能由用户输入控制,也可能由外部程序控制。
例如,可将传统数据库视为仓库,而使用数据库的程序相当于黑板架构中的知识源。
已知应用
HEARSAY-II
第一个黑板系统是二十世纪七十年代初推出的HEARSAY-II语音识别系统。
效果
采用黑板模式来分解问题和运用知识,有助于消解大部分作用力。
可以试验
在没有确定的方法,且遍历整个解空间不可行的领域,使用黑板模式可试验不同的算法,尝试不同的控制经验法则。
有助于提高可修改性和可维护性
因为知识源、控制算法和中央数据结构是完全分开的,所有模块都可以通过黑板进行交流。
知识源可重用
知识源是独立的专家,擅于完成某些任务。黑板架构让知识源可重用的前提是,知识源和底层黑板系统都明白(或通过适配器明白)相同的协议和数据。
可提高容错能力和健壮性
在黑板架构中,所有结果都只是推测,只有那些得到数据和其他推测强烈支持的推测才能留下来。这消除了噪声数据和不可靠的结论。
缺点:
难以测试
黑板系统执行计算时未遵循确定的算法,因此其结果常常不可重现。另外,在求解过程中,错误的推测不可避免。
不保证能提供满意的解
黑板系统通常只能正确地解决它面临的部分问题。
难以制定上好的控制策略
在制定控制策略方面,没有简单易行的方法,必须反复试验。
效率低
黑板系统需要否决错误的推测,这导致了大量的计算开销。
开发工作量大
原因:问题域不明确;为确定词表、控制策略和知识源,需要做大量的试错性编程工作。
不支持并行性
黑板架构不允许并行地执行知识源,对黑板中央数据的并行访问必须同步地执行。
总之,黑板架构能让你能够诠释性地运用知识,最适合用于试验可助一臂之力的不成熟领域。经过一段时间的研究并获得一定经验后,可能有更好的算法面面世,让你能够使用效率更高的架构。