RL论文阅读18 - MF- SAC2018(Soft Actor-Critic)

1. Tittle

image-20201015093910870

2. Label

  • Model-Free
  • off-policy
  • Continuous action space
  • 微小改动policy更新规则,可以用discrete action space

3. 总结

SAC算法相对于DDPG来说减少了一些超参数,使得算法更容易收敛,也更加稳定。例如DDPG在训练月球着陆LunerLander时,如果参数不好收敛效果很差,而SAC能够十分完美的解决这个问题,而且收敛速度更快。

这里有关于SAC算法的详细推导介绍:Springup-SAC

3.1 针对的问题及解决思路

  • 对于复杂的sample收敛性很差,需要复杂的超参数调整(难调啊)

在SAC算法中,引入了entropy(熵) , Actor希望最大化的不仅仅是reward的数学期望,同时还有最大化entropy*

3.2 算法分析

3.2.1 Entropy

Entropy熵,通俗来讲,就是用来衡量一个随机变量的随机程度

例如,一个硬币如果某一侧重量比较大,那么抛硬币的时候总是某个面朝上,那么他的就低。如果两侧出现的次数接近相同,那么就高,随机性越大。

Ref

Entropy的计算:

假设随机变量x的概率密度函数为P(x), x的交叉熵是根据x的概率密度P计算的:
H ( P ) = E x ∼ P [ − log ⁡ P ( x ) ] H(P) = E_{x\sim P}[-\log P(x)] H(P)=ExP[logP(x)]

3.2.2 网络结构

​ 算法的具体公式推导见原论文或者Springup-SAC。下面分析一下网络结构:

  • Critic类网络,4个, 参数(s,a):
    • Q1、Q2
    • Q1target 、 Q2target
  • Actor类网络,2个,参数 ( s ) :
    • π \pi π

所以我们一共有5个网络。

所有的target网络更新都是根据非target网络进行软更新

Q1, Q2输出1维q-value,

π \pi π采用的是输出一个高斯分布,即输出mean和std。然后通过mean和std在这个高斯分布中随机采样,从而获得我们所需要的动作。

在这里插入图片描述

主要我们需要注意的就是对于两个Loss函数的计算,使用的是target网络还是非target网络。

另一个需要注意的地方是 l o g π θ ( a ′ ∣ s ′ ) log \pi_\theta(a'|s') logπθ(as)的计算:

# pi_action 是通过高斯分布sample出来的动作。 pi_distribution是这个高斯分布
logp_pi  = pi_distribution.log_prob(pi_action).sum(axis = -1) # 调用函数库计算log
#正则化:F:import torch.nn.functional as F
# 该正则化来源在论文中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值