结构化、分解和原子表示



我正在读《人工智能:一种现代方法》。虽然因子表示、结构化表示和原子表示这些术语令人困惑,但它们究竟是什么意思?

关于编程…

谢谢

我对Russell和Norvig所画的线条并不感到兴奋,但是:一般来说,当你使用人工智能技术来解决问题时,你会有一个情景的编程模型。原子的/因子的/结构化的是对这些模型有多少"内部结构"的定性度量,从最少到最多。

原子模型没有内部结构;这个状态要么与你所寻找的匹配,要么与之不匹配。例如,在滑动砖块谜题中,你要么拥有正确的砖块排列,要么没有。

因子模型有更多的内部结构,尽管具体是什么取决于问题。通常情况下,你会关注变量或感兴趣的性能指标;在滑动谜题中,这可能是一个简单的启发式问题,如"偏离位置的瓷砖数量"或"曼哈顿距离的总和"。

结构化模型还有更多;同样,具体是什么取决于问题,但它们通常是模型组件与自身的关系,或者模型组件与环境组件的关系。

这是非常容易的,特别是当看到像滑动瓷砖这样非常简单的问题时,无意识地自己做所有艰苦的智能工作,一眼,忘记了你的模型并没有你所有的洞察力。例如,如果你要制作一个程序来对滑动谜题进行图形搜索技术,你可能会制作一些引擎,将谜题状态和动作作为输入,并从中生成新的谜题状态。谜题状态仍然是原子状态,但是作为程序员的你正在使用更详细的模型将这些输入和输出连接在一起。

我喜欢Novak给出的解释。我的两分话是澄清因子结构化之间的区别。以下是对定义的摘录:

  • 原子表示是一种将每个状态视为一个黑盒。
  • 因子表示是一种状态是由一组特征定义。
  • 结构化表示是以对象及其之间的关系的形式来表示状态的一种表示方式。这种关于关系的知识叫做事实。

例子:

atomicState == goal: Y/N  // Is goal reached?

这是我们唯一能问黑盒子的问题。

factoredState{18} == goal{42}: N  // Is goal reached?
diff( goal{42}, factoredState{18}) = 24 // How much is difference?
// some other questions. the more features => more type of questions

最简单的被分解状态必须至少有一个特征(某种类型),这使我们能够提出更多的问题。通常它定义了状态之间的数量差异。该示例有一个整数类型的特性。

11grade@schoolA{John(Math=A-), Marry(Music=A+), Job1(doMath)..} == goal{50% ready for jobs}

这里的关键是结构化表示,允许在搜索时进行更高层次的形式逻辑推理。关于入门信息,请参阅一阶逻辑@伯克利。

这个主题很容易让实践者(尤其是初学者)感到困惑,但对于比较不同的目标搜索算法却很有意义。这种"世界"状态表示分类在逻辑上将算法划分为不同的类。在学术研究中划清界限,在学术推理中比较苹果和苹果是非常有用的。

最新更新