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


如果我们事先考虑到花瓶,我们可以在代理打翻花瓶时给它负激励 。但是,如果环境中有很多种不同的“花瓶”——很多种代理可能对环境造成的干扰——我们可能没法将所有可能的情况一一列举并规定出惩罚 。
更普遍来说,要让代理在一个大的、多层面的环境中进行操作,如果目标函数只关注环境的一方面,可能向代理潜在表示了设计者不关注环境的其他方面 。换句话说,将“进行 X 任务”形式化的目标函数可能经常带来不符合初衷的结果,因为设计者本应将目标描述为“进行 X 任务,同时在常识的限制内行动”,或者“进行 X 任务,但是尽可能避免副作用” 。而且,我们有理由相信通常副作用都是负面的,因为他们可能会改变现状,而现状可能反应了人类的偏好 。
对于其他在后文讨论的错误描述的目标函数,我们可以选择将副作用视为每个人在进行任务时的个人风格——作为每一个个人设计者在设计正确的目标函数中承担的责任 。然而,副作用即便在高度多元的任务中都可能在概念上非常相近,所以,从普遍层面来解决问题是有价值的 。成功的方法应该可以在不同任务之间通用,这样可以帮助抵消其中一个会带来错误目标函数的总体机制 。我们现在讨论几个解决问题的总体方法:
定义影响常规化机制:
如果我们不希望出现副作用,我们自然可以惩罚“对环境的改变” 。这个办法不会让代理完全无法行动,而是给予其一种偏好,在完成目标的过程中将影响最小化,或者给代理有限的影响“预算” 。困难之处是我们需要将“对环境的改变”形式化 。
一种天真的方法是惩罚目前状态 si和初始状态 s0之间的状态距离 d (si,s0) 。可惜的是,这样的代理没法只避免改变环境——它会抗拒任何改变,包括环境正常的进化以及其他代理的任何行动 。
一种稍复杂一些的方法可能需要在代理比较目前的策略下的未来状态,以及一个假设策略 πnull 下的未来状态(或者未来状态的分布),在假设策略中代理行为非常被动(例如,代理站着不动,不使用任何促动器) 。这会分离出环境在自然进化中出现的改变,只留下由于代理干预而发生的变化 。然而,我们不一定能简单明了地定义基准策略 πnull,因为突然停止行动本身就会对环境造成影响,例如正在搬运箱子的过程中 。因此,另一种方法可以代替无效行为,使用一种安全(副作用低)但是次优的)已知策略,然后努力提高策略,与可达性分析或者稳健策略提升类似 。
这些方法可能对状态的表征和用来计算距离的度量非常敏感 。例如,表征的选择和距离度量可以决定一个转动的风扇是否是一个环境常量,还是一个一直变化的量 。
学习影响常规化机制:
我们可以选择一种更灵活的方法,通过在许多任务上训练来习得(而非定义)一个普遍的影响常规化机制 。这会是一种迁移学习的例子 。当然,我们可以直接在任务中应用迁移学习而不担心副作用,但是关键是,不同任务中副作用比主要目标更加相似 。例如,画画机器人、清洁机器人甚至更加不同的工厂控制机器人可能都想避免打翻东西 。通过用不同参数训练、从任务中分离出副作用部分,可以在合理保留某个部分的时候极大加速转移学习 。这与基于模型的 RL 方法相似,转移一个习得的动态模型而非价值函数,新奇之处是分离副作用而非状态动态来作为迁移部件 。一个附加优势是,在一个任务中已知或者已证明带来安全行为的常规化机制,在别的任务中更容易被视作安全 。
惩罚改变: