Soft Actor-Critic(SAC)是一种基于最大熵强化学习的策略优化方法,特别适用于连续控制任务。在传统的强化学习中,目标通常是最大化累积奖励。然而,最大熵强化学习的目标是在最大化累积奖励的同时,最大化策略的熵。策略的熵度量了策略的随机性,因此,最大化熵可以鼓励策略更好地探索环境。这有助于提高算法的稳定性和收敛速度。
SAC 是一种基于 Actor-Critic 的算法,其中 Actor 负责学习策略,Critic 负责学习值函数。以下是 SAC 的技术实现原理:
初始化:初始化 Actor 和 Critic 网络。通常,Actor 网络用于输出动作的概率分布,而 Critic 网络用于估计状态-动作值函数(Q-function)。SAC 使用了两个 Critic 网络(双 Q-函数),以减小过高估计状态-动作值的风险。
收集经验:根据当前策略,智能体与环境进行交互,收集状态(state)、动作(action)、奖励(reward)和新状态(next state)。
更新 Critic:使用收集到的经验和目标网络计算目标值。目标值由下一个状态的最小 Q-函数值和奖励组成。然后,使用目标值和当前 Critic 网络的估计值计算均方误差损失。通过优化损失来更新 Critic 网络的权重。
更新 Actor:Actor 网络试图最大化预期奖励和策略熵的和。通过计算策略梯度并更新 Actor 网络的权重来实现这一目标。
更新目标网络:为了提高学习的稳定性,SAC 使用了两个目标 Critic 网络。目标网络的权重通过慢速跟踪(soft update)实际 Critic 网络的权重进行更新。
迭代:重复上述过程,不断地收集经验、更新 Critic 和 Actor 网络,直到策略收敛或达到性能要求。
通过最大化奖励和熵,SAC 有效地平衡了探索与利用。这使得它在许多连续控制任务中具有很强的适应性和鲁棒性。SAC 的一个重要优点是它可以自适应地调整熵权重。在训练过程中,熵权重由另一个参数自动调整。这使得 SAC 可以在不同的任务和环境中自动适应探索和利用之间的权衡,而无需人工调整。
SAC 的自适应熵权重调整如下:
初始化熵权重(α)和对数熵权重的目标(log_α_target)。这两个参数将在训练过程中自动调整,以平衡探索和利用。
在更新 Actor 网络时,除了最大化预期奖励外,还要考虑策略熵。具体来说,我们希望最大化以下目标:
J(θ) = E[Q(s, a) - α * log π(a|s)]
其中,θ 表示 Actor 网络的参数,s 是状态,a 是动作,Q(s, a) 是状态-动作值函数,π(a|s) 是策略,α 是熵权重。
在每次更新 Actor 网络之后,根据策略熵的实际值来更新熵权重。我们希望实际策略熵接近一个预设的目标熵值。通过调整 log_α_target,可以使熵权重自适应地调整,以达到这一目标。
更新 log_α_target 的公式如下:
log_α_target =log_α_target - τ * (E[logπ(a|s)] + H_target)
其中,τ 是学习率,H_target 是预设的目标熵值。
通过这种自适应调整机制,SAC 可以自动平衡探索与利用,从而在各种连续控制任务中实现良好的性能。SAC 算法的这些特点使得它在许多实际应用和研究领域中取得了显著的成功。