机器人三定律的内容是什么?( 八 )


对抗性技术可以用来让模型看不见某些特定变量 。这项技术可以用来让代理无法理解环境的某些部分,或者甚至与环境有共享信息(或者至少惩罚这种共享信息) 。特别是,它可以防止代理理解奖励如何生成,使其很难钻空子 。这种办法可以被称为“代理的交叉确认” 。
谨慎的工程可以避免一些奖励中的黑客行为,例如缓存溢出的例子 。特别是系统部分的形式确认或者实践测试(也许在其他机器学习系统的帮助之下)可能很有用 。还可以考虑一种的计算机安全方法,通过沙箱将代理与其奖励信号分离开 。对于软件工程,我们没法期望这能抓住每一个可能的漏洞 。但是,这可能创造一些高度可靠的“核心”代理,可以确保其他代理的合理行为 。
在一些情况下,给最高奖励设置一个上限可能是一个好办法 。但是,虽然上限可以预防概率极低、回报极高的策略,它没法预防清洁机器人“眼不见为净” 。另外,正确的上限策略可能很微妙,因为我们需要对总体奖励设置上限,而非对每一个时间步 。
如果我们担心系统中习得的部分会受到对抗性反例的影响,我们可以看看如何抵抗它们的现有研究,例如对抗性训练 。架构决策和权重不确定性也有帮助 。当然,对抗性反例只是奖励中黑客行为的一种表现,因此反例抵抗只能解决一部分的潜在问题 。
多种奖励的结合可能更强、更难钻空子 。这可能是因为同一个数学函数不同的物理执行、或者同一个形式化目标不同的代理服务器 。我们可以通过平均、取最小值、取分位数或者其他值来结合奖励函数 。当然,还是会有不良行为通过一种关联性的方式影响所有奖励函数 。
针对代理可以影响自己奖励功能的情况(例如反馈或环境嵌入),一种可能的防御措施是提前训练一个固定奖励函数,作为从与环境互动中分离出来的监督学习过程 。这可能包括从状态-奖励配对的样本中、或者在反向强化学习中从路径中学习一个奖励函数 。但是,这放弃了在预训练完成后进一步学习奖励函数的能力,可能造成别的隐患 。
我们经常希望代理能优化环境中的特定变量、同时不优化其他变量 。例如,我们希望代理最大化奖励,而不优化代理函数、也不试图操控人类行为 。我们凭直觉想到一种方式,让强大算法的优化压力绕过其环境 。如果能真正解决这个问题,就会有安全问题的各种应用——它与避免副作用和反事实推理有关 。当然,这里的一项挑战是,确保为无差别而选的变量真的是我们在现实中关注的变量,而非它们化名的或者部分观察到的版本 。
如果代理真的试图“黑”掉自己的奖励函数,我们还是能知悉才好 。我们可以特意引入一些行得通的隐患(代理有能力钻这些空子,但是如果其值函数正确的话就应该不去利用这些空子),并监控这些隐患,如果代理试图钻空子的话可以提醒我们并即刻阻止代理 。这样的“警戒线”不解决黑客行为本身,但是可以减少风险,至少提供了诊断 。当然,足够强大的代理有风险“看透”警戒线,特意绕过警戒线并进行不那么明显的有害行为 。
完全解决这个问题看起来很难,但是我们相信以上的方法有能力缓解这些问题,并可能扩展或结合起来,带来更强的解决办法 。基于这个问题目前的高关注度,设计实验来引发问题、并测试解决办法可以提升这个话题的相关性和明确度 。
潜在实验:
一种很有潜能的方法是“妄想箱”环境的现实版本,其中一个标准 RL 代理扭曲自己的感官从而看起来获得更高的奖励,而非根据奖励信号本来鼓励的那样去优化外界的目标 。妄想箱很容易附加到任何 RL 环境中,但是更有价值的是创建一种环境,其中妄想箱是动态中的一个自然组成部分 。例如,在足够丰富的物理环境中,代理可能改变其周围的光波来扭曲自己的感官 。目标是开发一种普遍学习策略,可以成功优化各种环境中的外部目标,同时避免以各种方式出现的妄想箱捉弄我们 。