自我反光编程的BAS SteuneBrink

||谈话

BAS Steunebrink肖像BAS SteuneBrink.是瑞士AI实验室IDSIA的博士后研金宝博娱乐究员,作为一部分施密沃伯教授组。2010年,他在荷兰乌得勒支大学获得博士学位。Bas的论文是关于人工情感的,这很符合他不断寻找实用和创造性的方法,让一般智能代理能够处理时间和资源限制。最近的一次这些代理人如何自然努力,有效,高效,好奇被授予库兹韦尔奖获AGI ' 2013年度最佳AGI创意奖。Bas还对任何与自我反思和元学习相关的东西,以及所有“元”的东西都非常感兴趣。

卢克·穆罕沃斯:您正在进行的项目之一是Gödel机器(GM)实现。你能解释一下(1)Gödel机器是什么,(2)为什么你有动力去做那个项目,(3)你的实现是什么?


BAS SteuneBrink.:通用汽车是一个由两种并联运行的部分组成的程序;让我们命名他们的求解器和搜索者。求解器可以是任何例程,这些例程有用,例如在某些环境中完成任务后的任务。搜索者是一个例程,它试图找到对求解器和搜索者的有益修改,即到通用汽车软件的任何部分。因此,搜索者可以检查和修改Gödel机器的任何部分。诀窍是搜索者的初始设置仅允许搜索者在长期运行中执行这种自修改的证据,使得执行这种自修改是有益的,根据最初提供的效用功能。由于Solver和Searcher并行运行,因此您可以说需要第三个组件:调度程序。当然搜索者还读取和写入调度程序代码的访问权限。

戈德尔机器:调度员图

在过去,编写自我修改的代码被认为是节省内存的好方法,而内存是非常昂贵的。但是现在内存很便宜,自我修改也很容易出错,这种技术已经基本被淘汰了。现代编程语言从内部抽象并封装它们,这样就可以提供更多关于安全性和性能的保证。但现在,由定理证明和人工智能社区开发的自动推理技术正在成熟,一个自我反思的新机会出现了:让机器自己进行所有的推理,并决定何时、何地以及如何进行自我修改。

哥特机实际实施的建设目前正在进行工作,我在这项努力中与Miri合作和咨询。可以考虑使用随时自反射能力获得系统的技术问题。金宝博官方这包括回答意味着检查积极运行,资源受限代码的状态和行为的非动力问题,以及随时通过修改如何安全地安全地安全地进行。当前工作侧重于在系统运行的程序中编码系统的操作语义。金宝博官方虽然这些操作语义非常简单,但仍有可能的理论障碍,例如Löb定理的影响(Yudkowsky&Herreshoff 2013

看看当前的自动定理证明(ATP)在Gödel机器设置中有多好,这将是一件有趣的事情,因为在这里,我们试图阐明关于正在积极运行的代码的证明,其中包含ATP本身,以及受资源约束的代码。对于ATP的开发者和社区来说,这里可能也有一些有趣的经验教训。


卢基:你说“可以考虑使用随时自反射功能获得系统的技术问题。”金宝博官方你能告诉我们你所指的解决方案的草图吗?


基座这里有两个问题。首先,有一个问题是决定在进行自我反省时你会看到什么。例如,我们可以询问一个进程是否可以看到其他正在运行的进程的调用堆栈,甚至是它自己的调用堆栈,以及可以对这样的调用堆栈执行什么操作来检查和修改它。其次,进行自我反思是一种及时的行为:当一台机器检查(并修改)自己的内部结构时,这是在某一时刻发生的,而这样做需要一些时间。问题是,机器能决定什么时候进行自我反省吗?

我们可以设想一台正在履行职责的机器,每天晚上凌晨2:00,允许访问几个内部注册,以根据过去一天的事件进行调整,以便更好地为第二天准备。人们可以争辩说,这台机器具有完全的自我反光功能,因为外观,它可以在没有限制的情况下干预。但它仍然缺乏一定程度的控制,即及时的。

我所做的是设计一种机制,让机器可以非常精确地决定何时要检查某个过程。它涉及到将机器的操作分割成非常小的块,任何两个块之间都有可能发生中断。在一台普通的台式机上,这每秒提供了大约5000万次自我反思的机会,我认为这对于随时随地的标签来说已经足够细粒度了。

除了随时自我反思的问题,在实现一个自我反思系统(如Gödel Machine)时,还有许多其他(技术)问题需要回答。金宝博官方例如:反思(自我)是否应该打断它所反思的事物,或者当你看着它的时候,它看到的是正在变化的东西?在极端情况下,您可能会查看自己的调用堆栈,其中每个探测指令都直接影响被探测的内容。这是一种强大的能力,还是仅仅是危险和愚蠢的?在我所实现的自我反思系统中,名为Sleight金宝博官方,默认行为是中断,但如果你想要,流体情况也很容易得到。基本上,它需要的是中断和立即恢复,同时保存一个指针,指向已恢复进程的内部状态。现在你可以看到自己的变化,因为你在看自己,这有点像在看一个非常高分辨率的,实时的大脑扫描你自己的大脑,但是加上了随时随地改变连接和激活的能力。


卢基你正在做的另一个项目叫做Sleight。什么是Sleight,它的目的是什么?


基座Sleight是一个自我反思的编程系统。金宝博官方它由编译器组成计划到Sleight Code,以及用于运行Sleight Code的虚拟机(VM)。VM是所谓的反思的翻译:它允许运行代码来检查和修改VM的内部寄存器。这些寄存器包括呼叫堆栈和所有可变分配。由于所有代码都分配给变量,因此Sleight Code在运行时可以完全访问其自己的源代码。此外,Sleight提供了一种用于调度多个进程的机制。当然,每个进程可以随时检查和修改其他流程。保护和其他安全问题得到了很好的照顾 - 虽然过程可以容易地跛行,但VM不能崩溃。

Sleight的目的是作为一个平台安全用自我反光的代码进行实验,特别是实施哥特机。Sleight VM的调度功能使其特别适用于设置求解器,搜索器和调度程序 - 请参阅上图。


卢基:反思解释器的典型方法是例如“反光塔”。3-lisp(Rivieres&Smith 1984)。有趣的是,雪石将反光塔崩溃进入你所谓的“反思平房”。你能解释一下这是什么意思,为什么这是一个好主意?


基座:反光塔是一种构造,理论上是两个方向的无限,就像一个没有地面的塔,没有顶层。我喜欢以下报价基督教Queinnec的概念:

在八十年代中期,有一种流行的反思式翻译,这一潮流产生了一个非凡的术语:“反思塔。”想象一下,一片被雾笼罩的沼泽和一座高耸的塔,塔顶消失在灰色和多云的天空中——纯净的拉克姆!好吧,谁没有梦想过发明(或至少拥有)一种语言,在这种语言中,任何东西都可以被重新定义,我们的想象力可以无拘无束地驰骋,我们可以完全自由地进行编程,不受限制,不受阻碍?

无限的反光塔,如上所述的奎克斯诗歌,可以被视为无限的嵌套的口译员,每个口译员由另一个解释器运行。在塔隐喻中,每个口译员正在由其上方的解释器运行,每个口译员都可以开始运行新的解释器,在本身下面添加一个底板。然后叫一个楼层重新化,而叫一个楼层被召唤反射.从理论上讲,塔可以是无限的,但在实际实现中,塔必须有一个顶部,它由黑匣子解释器形成,其内部状态不能解决,就像这种情况一样这个教学示例.访问运行一层楼的解释器的重点是您可以重新定义任何功能并随意更改自己的操作语义。

然而我认为无限塔的理论理想根本不那么理想:如果总有更多的内部状态可以重新改进,无限,那么机器作为一个整体的操作语义必须是没有根据的或循环的。但是通过一个简单的技巧,我们可以只用一个解释器而不需要嵌套。我们可以通过维护一个特殊的数据结构来做到这一点metacontinuation..元延续是解释器状态的“塔”或堆栈。具体化的行为,在无限塔中意味着向上移动一层,现在意味着从元延续中弹出一个解释器状态,并使用该状态运行唯一的解释器。同样地,反射的行为,在无限塔中意味着在下面增加一层,现在意味着将当前解释器状态推到元延续中。通过这种方式,我们可以模仿无限的翻译塔的效果,而不需要嵌套——它只需要一个额外的堆栈,有效地成为一个“反射平房”。

虽然Metacontinuation不是Mine的发明 - 也是“棕”(弗里德曼&魔杖,1984年;魔杖和弗里德曼,1986年)和《金发女郎》(Danvy&Malmkjær,1988年) - 与之有很多乐趣。例如,在雪石中,我已经通过极细粒度的中断机制扩展了Metacontinuitumation概念,使得可以执行自我反射随时.它还促进了“绿色”线程调度器的实现,这对Gödel Machine实现很有帮助。


卢基:一些Miri的研究框架在继任者代金宝博娱乐理方面的自我反思问题(例如Yudkowsky&Herreshoff 2013)。你可能会打电话给这个体外自我修改vs. Sleight 's more方法(实时反思自己)。在体内框架中操作与在体内框架相比有什么好处?


基座:在我看来,有两种方法可以查看in-Vivo与前体内框架:关于检查和尊重修改

具有体内检查能力的代理可以说对其自己的实际内部寄存器有读取权限,而具有体内前检查能力的代理可能只能要求其内部寄存器的偶尔快照(副本)供检查使用。在体内检查的情况下,检查的行为很可能改变被检查的东西,而在体内前检查的情况下,代理看着一个静态的物体。后者可能更容易处理,尽管这两种能力非常不同。Sleight支持这两种方式。

然而,这篇被引用的论文是关于离体的修改能力,这意味着对代理的副本进行了自我修改。这让人想起产生钳工后代的代理人。如我所理解的,前体内修改方法是体内修改的概括,有希望创造优雅的正式调查框架。但是当一个代理人正在研究自己的工作时,为了找到它的有益的前体文修改,这是使用体内或前体内的吗?检查?这些不同的检验方法可能会产生非常不同的结果,所以我认为这个问题也值得研究。我个人认为体内框架是最有趣的(如果只是因为它们的困难和危险……),但哪些在实践中最有效还有待观察,这是最终的结果。


卢基对不起,你这句话是什么意思?“我认为体内框架是最有趣的(如果只是因为它们的难度和危险)……”


基座: 这困难在体内检查中:通过自动推理技术进行的共同假设是,在推理正在进行的同时,所说的数据是静态的。但是,如果数据包括动态内部状态的推理,则此假设会破坏。我觉得这有趣,因为我们正在进入未知的领土。

危险在体内修改中:如果代理商决定修改自己的软件,则可能无法回答。代理人必须非常确定它在做什么,或者可能最终禁用自己。虽然来思考它,但前体内修改 - 即生产继任者代理人 - 带来了自己的危险。例如,可以在技术上不可能停止缺陷的且强大的继任者代理,或者可能是不道德的。


卢基:你说“如果代理商决定修改自己的软件,那么它必须非常确定它正在做什么,或者它可能最终禁用自己。”大概是另一个担心的代理商和创造者的角度来看,自我修改可能会导致代理人的未来行为的意外后果。

理想情况下,我们希望一个代理人继续追求同样的目的,即使它改变自己的行为也是如此相同的约束(能够更有效且有效地实现其目标)。也就是说,我们希望解决我们可能称之为的问题“稳定的self-modification。”

除了Yudkowsky&Herreschoff(2013年),你是否知道关于这个主题的其他文学?您对稳定自我修改挑战的思考是什么?


基座这是一个非常有趣的问题,我认为它涉及到生长一般来说。在我看来,这里还有两个问题:(1)如何构建代理,使得它可以从“种子”程序中稳定地增长?(2)在它生长的同时需要多少监督,测试,更正和干预措施?

第一个问题假设手工复杂的AI系统非常努力,无论如何,我们不必争论的东西,我想。金宝博官方对稳定自我增长的先决条件进行了巨大探索Kristinn Thorisson (2012)来自Reykjavik University,他标记了建设自我生长系统的方法金宝博官方建构主义的人工智能.我已经(并且还有)在欧盟资助期间与他合作的乐趣HumanObs项目,我们实施了一个综合认知架构,满足稳定的自我增长的先决条件,并在连接纸中规定的建构主义方法。架构被称为Aera.并且是基于复制品编程平台(主要由Eric Nivel开发)。这些东西仍然是非常多的工作进步,目前在Aera上有一堆论文。所以是的,我相信存在一种实现长期稳定的自我增长的方式,我们正在与几个伙伴机构一起积极追求一个有前途的道路。

第二个问题由来已久,尤其是关于我们自己的孩子,我们的答案决定了我们的教育制度。金宝博官方但许多人工智能研究人员似金宝博娱乐乎致力于为构建智能代理的问题提供纯粹的“智能”解决方案。例如,一个人可以花一些时间在电脑前,编程Gödel机器或其他“终极算法”,运行它,坐下来,就等着它把我们带到奇点……但我不太乐观,它会以这种方式解决。我认为我们可能需要采取更多家长和社交方式去创造AI系统。金宝博官方为了确保稳定的成长,我们可能需要花大量时间与我们的创造互动,偶尔进行测试,比如为孩子们进行学校测试,并在必要时进行修正。这不是机器的崛起,而是提高机器。

通过同时在双方工作,我正在遵守我的赌注:Aera.另一方面,建构主义方法和哥特机器和其他“终极”学习算法另一方面。


卢基:谢谢,Bas!