强化学习记录——各类算法

本文概述了强化学习中的关键算法,包括Q-Learning、Sarsa、DQN、PolicyGradients、Actor-Critic和DDPG。介绍了它们的基础原理、更新公式,并强调了在选择算法时考虑环境和动作连续性的必要性。最后,讨论了算法在离散和连续动作空间的应用。
摘要由CSDN通过智能技术生成

目录

一、Q-Learning

二、Sarsa

三、DQN

四、Policy Gradients

五、Actor-Critic

六、DDPG

七、算法选择


一、Q-Learning

(Q:状态动作价值)

1.value-based、off-policy

2.算法思想:将State与Action构建成一张Q-table来存储Q值,然后根据Q值来选取能够获得最大的收益的动作。

3.更新公式:

 Q表格更新:重复执行多次episode,直至:Q矩阵达到收敛或无变化或变化很小、或平稳分布。

二、Sarsa

(该算法由于更新一次动作值函数需要用到 5 个量(s,a,r,s′,a′),所以被称为 Sarsa 算法)

1.value based、on-policy

2.算法思想:Sarsa 算法与 Q-Learning 算法相似,也是利用 Q 表来选择动作,唯一不同的是两者 Q 表的更新策略不同。

3.更新公式:

三、DQN

1.value based、off-policy

2.算法思想:神经网络+Q-Learning

3.更新公式:

4.DQN两大创新点:

(1)经验回放:off-policy,解决样本关联性

(2)固定Q目标:Q现实:之前的参数;Q估计:最新参数,解决非平稳性

从而引出两个神经网络:一个用于记忆库(重复学习)、一个用于暂时冻结Qtarget参数(切断相关性)

四、Policy Gradients

1.policy-based

2.算法思想:基于策略Policy来做梯度下降从而优化我们的模型(为使Agent能够尽量执行较好的动作,需要使用执行了该动作后得到的反馈reward来判定本次的策略好坏,也就是说我们想要训练我们的Agent倾向于做出那些reward较高的动作。)

3.更新公式:

4.value-based与policy-based

五、Actor-Critic

1.算法思想:结合了Policy Gradient(Actor)和Function Approximation(Critic)的方法。Actor基于概率选行为,Critic基于Actor的行为评判行为的得分,Actor再根据Critic的评分修改选行为的概率。

(1)优势:可进行单步更新,比传统的PolicyGradient更快。

(2)劣势:取决于Ctric的价值判断,再加上Actor的更新,更难收敛。

2.改进:Actor-Critic+DQN得到DDPG,成功解决了在连续动作上预测学不到东西的问题。

六、DDPG

(Deep Deterministic Policy Gradient——连续动作空间上求解RL)

1.离散动作VS连续动作

cr:https://www.bilibili.com/video/BV1yv411i7xd?p=18绝绝子!

2.算法思想

注:

(1)target_Q和target_P网络:为了让Q_target计算更稳定

(2)DDPG:求解让Q值最大的Action   (DQN:训练很好的Q网络,让选取的动作对应的Q值最大)

(3)网络代码的框架:

class Actor(object):
    def __init__(self, sess, action_dim, action_bound, learning_rate, replacement):
        
    def _build_net(self, s, scope, trainable):
       
    def learn(self, s):   # batch update
       
    def choose_action(self, s):
       
    def add_grad_to_graph(self, a_grads):
        



class Critic(object):
    def __init__(self, sess, state_dim, action_dim, learning_rate, gamma, replacement, a, a_):
       
    def _build_net(self, s, a, scope, trainable):
        
    def learn(self, s, a, r, s_):
       



class Memory(object):
    def __init__(self, capacity, dims):
       
    def store_transition(self, s, a, r, s_):
        
    def sample(self, n):
       


完整代码:MorvanZhou (Morvan) · GitHub

七、算法选择

一般,我们需要根据环境中的agent的动作是连续还是离散的来选择相应的强化学习方法,通常

(1)离散动作(动作是一个离散值,比如:CartPole-v0):Q-Learning、DQN

(2)连续动作(动作是一个连续值,比如:Pendulum-v0):Policy gradient、DDPG

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值