#maximum #utility #tree #tree-structure #advanced-research #programming

advancedresearch-max_tree

基于最大树结构的一种效用最大化库

1 个不稳定版本

0.1.0 2020年7月12日

#2341算法

MIT/Apache

31KB
203

最大树

一个基于最大树结构的效用最大化库。

动机

让比较和组合效用编程的算法更加容易。

示例:月球着陆

这个示例用于改进和提升库的极限。为什么?因为很有趣!

首先让它工作,然后逐渐使模型更加真实。

  • 来源:examples/moon.rs
  • 描述:使用贪婪优化器从地球将宇宙飞船着陆到月球上的实验。
  • 状态:简化模型工作(未崩溃),缺少许多功能。
  • PRs:欢迎!

The Moon

如果你能让AI将宇宙飞船从地球送入月球,那么还有什么是不可能的呢?

此库的使用

注意!此代码仅用于研究目的,绝对不应该用于系统关键应用!

警告!不当使用此库可能导致不安全的AI行为。

所有支持通用无限制经典效用理论的算法都是不安全的AI设计。特别是对于AS(人工超级智能)设计,此库在未经安全验证之前使用非常不安全。有关安全AS核心设计的更多信息,请参阅asi_core0

话虽如此,祝你们玩得开心!

介绍

最大树存储每个节点的最大效用或子节点的最大效用。它是一种方便的数据结构,用于比较或组合不同的搜索算法。

一旦构建了最大树,寻找最佳行动方案就变得非常简单。因为每个节点都存储最大效用,所以比较子节点并决定做什么变得容易。

  • 一个叶子节点存储最大效用作为最大效用
  • 一个节点是终端节点,如果它存储的最大效用高于其子节点
  • 当子节点具有更高的效用时,节点的效用会被遗忘(覆盖)

如何使用此库

此库只包含最小功能集,旨在用作更高级自定义算法的核心

  • Ai::full 执行完整搜索,找到全局最大值
  • Ai::greedy 执行局部搜索,找到局部最大值
  • Ai::sub_breadth 为每个可用的动作构造子节点

fullgreedy 算法假设在上下文中具有确定性和完美信息。基本上,这意味着它们只应该在模拟或受控环境中使用。

Ai::sub_breadth 被用作多个算法的共同子过程。

对于非确定性,最大效用变为最大期望效用。这需要使用自定义算法构建最大树。更多信息,请参阅下文的“自定义算法”。

与奖励积累的不同之处

最大树不会在动作上累积奖励。这意味着只有最终奖励被优化。

然而,可以模拟累积奖励。

要累积奖励,可以使用节点数据来存储效用。只需将奖励加到迄今为止的累积奖励中。累积奖励存储为最大效用。

针对最终奖励的优化具有特殊的终端语义。更多信息,请参阅下文的“终端语义”。

动作深度的折扣

默认情况下,完成目标所需的更多步骤不会被处罚。

通过从效用中减去与深度成比例的一小部分,将使算法优先考虑更少的步骤以达到目标。

由于这是常见行为,可以通过将 AiSettings::eps_depth 设置为例如 0.0000001 来激活此功能。

自定义算法

当此库包含的算法过于限制时,可以编写自定义算法,以其他方式构建最大树或执行不同类型的分析。

最大树被设计为便于组合不同的搜索算法。

可以执行例如后验安全性分析,而不会在上下文中产生副作用。

也可以使用与构建树时不同的搜索算法从任何节点恢复上下文状态并继续搜索。最终的最大树可以用任何分析算法使用。

在非确定性或上下文中的隐藏状态下,最大效用的语义略有变化。这意味着在组合算法时不能期望一致性,除非在探索子分支时交错的语义是一致的。不一定需要在总体上保持交错的语义,但必须在特定应用的使用中保持一致。

此库最常见的使用场景是在存在完美信息且撤销更改可以完美恢复环境的情况下。在大多数应用中,这意味着模拟AI操作的整个世界。

终端语义

在安全性验证下,必须包括终端语义的评估。如果给定应用的终端语义尚未经过安全性验证,则此库不可安全使用。

当一个节点是终端节点时,例如对于任何没有具有相等最大效用的子节点的全局最大值,必须仔细注意实现该目标的意义。

在全局最大值再次达到的意义上,如果例如世界结束且没有剩下任何事可做,这样做是没有意义的。

在极短的时间内达到无穷效用并不符合对具有意义的目标的禅宗理性人的直觉。原因是当众多可能的目标中真正的目标不确定时,通过优化单一目标,存在高风险排除真正的目标。相反,根据更高阶功利主义,应该优化一组目标,其中每个目标都可以从任何一个其他目标达到。更多信息,请参阅禅宗理性。另外,请参阅多目标优化的群同态假设

尽管古典效用理论可以用来实现单一目标,但这并不能保证实现目标是具有意义的。只有在真正的目标可以从实现的目标达到的情况下,这才能成立。一个真正的目标在朴素禅宗逻辑中被定义为

true_goal(X) = (goal(X) ? .me) ? me

这意味着,真正的目标是如果我是(AI代理)更聪明的人,我会有的目标。

如果AI代理实现了全局最大值然后自我改进,从后视镜看,只有当新目标是可达到的时候,达到全局最大值才是有意义的。因此,只有当真正的目标可以从全局最大值的状态达到时,实现全局最大值才是有意义的。

累积奖励可能会模糊对终端语义的判断。在有累积奖励的情况下,当从环境中的预期效用不确定时,没有任何东西可以预测终止。只要存在某些具有正效用的非终止状态,就存在一种可能增加效用的行动方案。因此,大多数优化累积奖励的AI代理不需要像优化最终奖励的AI代理那样对终端语义进行推理。然而,在自我改进的情况下,累积奖励也需要更高阶的推理来保证安全性。

由于对最终奖励的优化是累积奖励优化的严格超集,第一种情况中的终端语义是第二种情况终端语义的严格超集。

可以在最终奖励中包含一个估计未来潜力的项。如果未来潜力的项可以是负数,那么排除它将导致不安全。

许可证

根据以下任一项获得许可

贡献

除非您明确声明,否则您有意提交的任何贡献,若要包括在您的工作中,应按照上述方式双许可,不附加任何额外条款或条件。

无运行时依赖