A Dual Perspective of Reinforcement Learning for Imposing Policy Constraints
<|reference_start|>A Dual Perspective of Reinforcement Learning for Imposing Policy Constraints: Model-free reinforcement learning methods lack an inherent mechanism to impose behavioural constraints on the trained policies. While certain extensions exist, they remain limited to specific types of constraints, such as value constraints with additional reward signals or visitation density constraints. In this work we try to unify these existing techniques and bridge the gap with classical optimization and control theory, using a generic primal-dual framework for value-based and actor-critic reinforcement learning methods. The obtained dual formulations turn out to be especially useful for imposing additional constraints on the learned policy, as an intrinsic relationship between such dual constraints (or regularization terms) and reward modifications in the primal is reveiled. Furthermore, using this framework, we are able to introduce some novel types of constraints, allowing to impose bounds on the policy's action density or on costs associated with transitions between consecutive states and actions. From the adjusted primal-dual optimization problems, a practical algorithm is derived that supports various combinations of policy constraints that are automatically handled throughout training using trainable reward modifications. The resulting $\texttt{DualCRL}$ method is examined in more detail and evaluated under different (combinations of) constraints on two interpretable environments. The results highlight the efficacy of the method, which ultimately provides the designer of such systems with a versatile toolbox of possible policy constraints.<|reference_end|>
@article{de cooman2024a,
    title={A Dual Perspective of Reinforcement Learning for Imposing Policy
  Constraints},
    author={Bram De Cooman and Johan Suykens},
    journal={arXiv preprint arXiv:2404.16468},
    year={2024},
    archivePrefix={arXiv},
    eprint={2404.16468},
    primaryClass={cs.LG cs.AI cs.SY eess.SY}
}