强化学习七天打卡营学习笔记

强化学习七天打卡营学习笔记
一、RL分类

  1. 根据环境是否可知可以分为 Model-based RL & Model-free RL,基于模型的RL的和无模型的RL;
  2. 按照学习目标可分为Value-based & Policy-based;
  3. 按照学习方式可以分为On-Policy & Off-Policy

二、强化学习的算法和环境

  1. 经典算法:Q-learning、Sarsa、DQN、Policy Gradient、A3C、DDPG、PPO
  2. 环境分类:离散控制场景(输出动作可数)、连续控制场景(输出动作值不可数)
  3. 强化学习经典环境库GYM将环境交互接口规范化为:重置环境reset()、交互step()、渲染render()
  4. 强化学习框架库PARL将强化学习框架抽象为Model、Algorithm、Agent三层,使得强化学习算法的实现和调试更方便和灵活。

强化学习七天打卡营学习笔记_第1张图片
三、七天的强化学习,主要体验了如下几种强化学习算法:
1. Sarsa 简介
Sarsa全称是state-action-reward-state’-action’,目的是学习特定的state下,特定action的价值Q,最终建立和优化一个Q表格,以state为行,action为列,根据与环境交互得到的reward来更新Q表格,更新公式为:
Sarsa中Q表格的更新算法
Sarsa在训练中为了更好的探索环境,采用ε-greedy方式来训练,有一定概率随机选择动作输出。
【Sarsa实战】使用Sarsa解决悬崖问题,找到绕过悬崖通往终点的路径。–【离散状态-离散动作】
相关理论和代码实现讲解可参考文后链接。
2.Q-learning简介
Q-learning也是采用Q表格的方式存储Q值(状态动作价值),决策部分与Sarsa是一样的,采用ε-greedy方式增加探索。
Q-learning跟Sarsa不一样的地方是更新Q表格的方式。
Sarsa是on-policy的更新方式,先做出动作再更新。
Q-learning是off-policy的更新方式,更新learn()时无需获取下一步实际做出的动作next_action,并假设下一步动作是取最大Q值的动作。
Q-learning的更新公式为:
Q-learning的更新公式
**【Q-learning实战】**使用Q-learning解决悬崖问题,找到绕过悬崖通往终端的最短路径。–【离散状态-离散动作】,与Sarsa算法相比,Q-learning更大胆一些。
【上述两种方法都是基于表格型方法求解RL,适用于离散状态-离散动作的问题场景】
3. DQN简介
上节课介绍的表格型方法存储的状态数量有限,当面对围棋或机器人控制这类有数不清的状态的环境时,表格型方法在存储和查找效率上都受局限,DQN的提出解决了这一局限,使用神经网络来近似替代Q表格。
本质上DQN还是一个Q-learning算法,更新方式一致。为了更好的探索环境,同样的也采用ε-greedy方法训练。
在Q-learning的基础上,DQN提出了两个技巧使得Q网络的更新迭代更稳定。
经验回放 Experience Replay:主要解决样本关联性和利用效率的问题。使用一个经验池存储多条经验s,a,r,s’,再从中随机抽取一批数据送去训练。
固定Q目标 Fixed-Q-Target:主要解决算法训练不稳定的问题。复制一个和原来Q网络结构一样的Target Q网络,用于计算Q目标值。
**【DQN实践】**使用DQN解决CartPole问题,移动小车使得车上的摆杆倒立起来。【状态连续问题】
4.策略梯度方法求解RL——Policy Gradient

在强化学习中,有两大类方法,一种基于值(Value-based),一种基于策略(Policy-based)
Value-based的算法的典型代表为Q-learning和SARSA,将Q函数优化到最优,再根据Q函数取最优策略。
Policy-based的算法的典型代表为Policy Gradient,直接优化策略函数。
采用神经网络拟合策略函数,需计算策略梯度用于优化策略网络。
优化的目标是在策略π(s,a)的期望回报:所有的轨迹获得的回报R与对应的轨迹发生概率p的加权和,当N足够大时,可通过采样N个Episode求平均的方式近似表达。

强化学习七天打卡营学习笔记_第2张图片
优化目标对参数θ求导后得到策略梯度:
策略梯度
【Policy Gradient实践】—REINFORCE算法,使用REINFORCE解决 连续控制版本的CartPole问题,向小车提供推力使得车上的摆杆倒立起来【连续动作空间,连续状态空间】。
5.DDPG简介

(1)DDPG的提出动机其实是为了让DQN可以扩展到连续的动作空间。
(2)DDPG借鉴了DQN的两个技巧:经验回放 和 固定Q网络。
(3)DDPG使用策略网络直接输出确定性动作。
(4)DDPG使用了Actor-Critic的架构。

**【DDPG实践】**使用DDPG解决连续控制版本的CartPole问题,给小车一个力(连续量)使得车上的摆杆倒立起来。
强化学习七天打卡营记录,详细算法和代码介绍参考如下博文,感谢博主AItrust,感谢百度PARL团队李科浇老师的课程讲解。
1.强化学习入门(一)强化学习的基础概念及Gym库,Parl库介绍
https://blog.csdn.net/qq_42067550/article/details/106816589
2.强化学习入门(二)强化学习MDP四元组,Q表格的概念和更新策略
https://blog.csdn.net/qq_42067550/article/details/106844303
强化学习算法 Sarsa 解迷宫游戏,代码逐条详解
https://blog.csdn.net/qq_42067550/article/details/106845137
3.强化学习算法 DQN 解决 CartPole 问题,代码逐条详解
https://blog.csdn.net/qq_42067550/article/details/106854942
强化学习入门(三)将神经网络引入强化学习,经典算法 DQN
https://blog.csdn.net/qq_42067550/article/details/106854571
强化学习算法 Policy Gradient 解决 CartPole 问题,代码逐条详解
https://blog.csdn.net/qq_42067550/article/details/106871706
4.强化学习入门(四)策略梯度方法 Policy Gradient 求解强化学习问题
https://blog.csdn.net/qq_42067550/article/details/106871772
强化学习算法 DDPG 解决 CartPole 问题,代码逐条详解,内含DDPG算法,和小车-摆杆连续环境模型,class ContinuousCartPoleEnv(gym.Env):
https://blog.csdn.net/qq_42067550/article/details/106886427
5.强化学习入门(五)连续动作空间内,使用DDPG求解强化学习问题
https://blog.csdn.net/qq_42067550/article/details/106886714
强化学习算法 DDPG 解决 CartPole 问题,代码逐条详解
https://blog.csdn.net/qq_42067550/article/details/106886427

你可能感兴趣的:(强化学习七天打卡营学习笔记)