如何为强化学习(Q-learning)添加约束
How to add constraint to reinforcement learning (Q-learning)
我想知道如何为 Q-learning 添加约束。我有一个每次都会产生两个奖励的动作(奖励 1= 交付成本,奖励 2= 交付时间)。我想在确保不违反最长交货时间限制的同时将成本降至最低。
有 standard/formalized 的方法吗?
最简单的解决方案是创建一个将这两个信号都考虑在内的单一奖励函数。
为了最大限度地降低交付成本,您需要开始定义您的奖励函数,例如:
R(.) = -delivery_cost
这里有否定,因为强化学习通常是关于应该最大化的奖励,而不是应该最小化的成本。
让智能体学会不违反交付时间限制的一种直接方法是,如果违反交付时间限制,则从奖励中减去一个巨大的常量,如果没有违反,则不添加或减去任何东西.所以,这看起来像:
R(.) =
-delivery_cost - M IF delivery_time > constraint,
-delivery_cost otherwise
M 的值必须非常大。 ''really big'' 有多大取决于您期望 delivery_costs 可以变成多大,因为它必须比那个大。
当然也可以创建比这更平滑的奖励函数,特别是如果你想允许稍微违反交货时间限制,如果这意味着你可以显着降低成本。
如果您想研究比我上面提出的解决方案复杂得多的解决方案,您需要四处寻找有关多 Objective 强化学习的文献。
我想知道如何为 Q-learning 添加约束。我有一个每次都会产生两个奖励的动作(奖励 1= 交付成本,奖励 2= 交付时间)。我想在确保不违反最长交货时间限制的同时将成本降至最低。 有 standard/formalized 的方法吗?
最简单的解决方案是创建一个将这两个信号都考虑在内的单一奖励函数。
为了最大限度地降低交付成本,您需要开始定义您的奖励函数,例如:
R(.) = -delivery_cost
这里有否定,因为强化学习通常是关于应该最大化的奖励,而不是应该最小化的成本。
让智能体学会不违反交付时间限制的一种直接方法是,如果违反交付时间限制,则从奖励中减去一个巨大的常量,如果没有违反,则不添加或减去任何东西.所以,这看起来像:
R(.) =
-delivery_cost - M IF delivery_time > constraint,
-delivery_cost otherwise
M 的值必须非常大。 ''really big'' 有多大取决于您期望 delivery_costs 可以变成多大,因为它必须比那个大。
当然也可以创建比这更平滑的奖励函数,特别是如果你想允许稍微违反交货时间限制,如果这意味着你可以显着降低成本。
如果您想研究比我上面提出的解决方案复杂得多的解决方案,您需要四处寻找有关多 Objective 强化学习的文献。