Soft Actor-Critic算法代码精解

        Soft Actor-Critic (SAC)是面向最大熵强化学习Maximum Entropy Reinforcement learning 开发的一种off policy算法。

对于一般的DRL,学习目标很直接,就是学习一个policy使得累加的reward期望值最大;

\pi^*=\arg\max_\pi\mathbb{E}_{(s_t,a_t)\sim\rho_\pi}[\sum_tR(s_t,a_t)]                                    (1)

而最大熵强化学习,除了上面的基本目标,还要求policy的每一次输出的action 熵entropy最大:

\pi^{*}=\operatorname{a r g} \operatorname* {m a x}_{\pi} \mathbb{E}_{( s_{t}, a_{t} ) \sim\rho_{\pi}} [ \sum_{t} \underbrace{R ( s_{t}, a_{t} )}_{r e w a r d}+\alpha\underbrace{H ( \pi( \cdot| s_{t} ) )}_{e n t r o p y} ]      (2)

 其目的是让策略随机化,即输出的每一个action的概率尽可能分散,而不是集中在一个action上。最大熵maximum entropy的核心思想就是不遗落到任意一个有用的action,有用的trajectory

 Soft Policy Evaluation

q_\pi(s,a)=r(s,a)+\gamma\sum_{s^{\prime}\in\mathcal{S}}\mathcal{P}_{ss^{\prime}}^a\sum_{a^{\prime}\in\mathcal{A}}\pi\left(a^{\prime}\mid s^{\prime}\right)\left(q_\pi\left(s^{\prime},a^{\prime}\right)-\alpha\log(\pi\left(a^{\prime}\mid s^{\prime}\right))\right.

经验池的作用

经验池 存在的意义是为了消除experience的相关性,因为强化学习中前后动作通常是强相关的,而将它们打散,放入经验池中,然后在训练神经网络时,随机地从经验池中选出一批experience,这样能够使神经网络训练地更好。

SAC算法相关的Loss函数

SAC算法相关的Loss函数主要有以下几种:

策略网络的Loss

        策略损失函数:策略网络的目标是最大化期望奖励与熵项之和,通常采用负的对数似然乘以优势函数来近似策略梯度,其损失函数公式为:

        L_{\pi} ( \theta)=\mathbb{E}_{s \sim\rho^{\pi}, a \sim\pi_{\theta}} \left[-r ( s, a )-\alpha\operatorname{l o g} \pi_{\theta} ( a \mid s )+Q_{\phi} ( s, a ) \right]

其中\theta是策略网络\pi_{_\theta}的参数,\rho^{\pi}是由策略\pi_{_\theta}诱导的状态分布,s是状态,a是动作,\alpha是温度函数,用于调节熵的重要性。下面说明各项计算方法,一般先从经验池中选出多组\left ( s,a,r,s{}' \right )的组合(共batch size项)

(1)r\left ( s,a \right )是奖励函数,Q_{\phi} ( s, a )是价值网络(Critic网络)评估的动作价值函数;

(2)\operatorname{l o g} \pi_{\theta} ( a \mid s )由策略网络输出;

Q(Critic)价值网络的Loss

        SAC算法通常使用两个Q网络Q_{\phi_{1}} ( s, a )Q_{\phi_{1}} ( s, a )来减少过估计问题,其损失函数是均方误差(MSE)形式,公式为:

L_{Q} ( \phi)=\frac{1} {2} \mathbb{E}_{s \sim\rho^{\pi}, a \sim\pi_{\theta}} \left[ \left( Q_{\phi} ( s, a )-\left( r ( s, a )+\gamma\operatorname* {m i n}_{i=1, 2} Q_{\phi_{i}} \left( s^{\prime}, a^{\prime} \right) \right) \right)^{2} \right]

(1)r\left ( s,a \right )是奖励,直接从经验池中选出来的。(一般先从经验池中选出多组\left ( s,a,r,s{}' \right )的组合);将选出的\left ( s,a\right )组合输入Critic_1网络,输出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值