百度强化学习训练营总结
PARL是百度公司开发的一个强化学习框架。作为一个机器学习小白,也是因为身边的同学推荐,才知道这个课程, 在这个课程上面了解到paddlepaddle 和 PARL 。作为一个不是计算机专业方向的学生,了解到机器学习的相关知识主要途径还是b乎。之前也只听过Tensorflow, PyTorch 以及 scikit-learn这些学习框架。 强化学习是机器学习的一个重要分支, 强化学习的三个个基本要素分别是智能体(Agent
),环境(Environment
)以及算法(Algorithm
)。强化学习的主要思想是机器人(Agent
) 和环境(Environment
)的交互学习,其中 Agent
的 action
会影响环境,环境返回reward
和state
,这个交互过程是一个马尔可夫决策过程。
1. PARL框架的特点
可复现性保证:我们提供了高质量的主流强化学习算法实现,严格地复现了论文对应的指标;
大规模并行支持:框架最高可支持上万个CPU的同时并发计算,并且支持多GPU强化学习模型的训练
可复用性强:用户无需自己重新实现算法,通过复用框架提供的算法可以轻松地把经典强化学习算法应用到具体的场景中;
良好扩展性:当用户想调研新的算法时,可以通过继承我们提供的基类可以快速实现自己的强化学习算法;
2. PARL框架的结构
PARL框架三大件分别是Model, Algorithm, Agent。
- Model: 用来定义前向(
Forward
)网络,这通常是一个策略网络(Policy Network
)或者一个值函数网络(Value Function
),输入是当前环境状态(State
)。 - Algorithm:
Algorithm
定义了具体的算法来更新前向网络(Model
),也就是通过定义损失函数来更新Model
。一个Algorithm
包含至少一个Model
。 - Agent:
Agent
负责算法与环境的交互,在交互过程中把生成的数据提供给Algorithm
来更新模型(Model
),数据的预处理流程也一般定义在这里。
3. 强化学习的算法
本次学习接触到的强化学习的算法 SARSA, Q-Learning, DQN, DDPG。
3.1 表格型方法 SARSA 和 Q-Learning
前面提到强化学习让智能体通过与环境的交互学习解决问题,强化学习通常包括这么几个概念:
- 状态 State (S)
- 动作 Action (A)
- 奖励 Reward ®
使用走迷宫的例子来表示
红色方框是我们的智能体,任务是要在4x4的迷宫中找到黄色圆圈的宝藏,并学习到达宝藏的最佳路径。如果以左上角的初始状态为S0,那么整个迷宫一共有16个状态(State)(从左到右从上到下分别是S0到S15)。智能体的**行动(Action)**有四个: 分别是向左(A1)向右(A2)向上(A3)和向下(A4)移动。如果找到黄色圆圈(宝藏)奖励(Reward)为1,掉入黑色陷阱奖励(Reward)为-1,其他地方为0。
Q表格
Q table | ||||
---|---|---|---|---|
0 | 0 | 0 | 0 | |
0 | 0 | 0 | 0 | |
… | … | … | … | … |
0 | 0 | 0 | 0 |
当智能体处于 的状态时,如果刚好选择了 ,那么下一个状态就是 (注意有一定的概率会选择其他的Action, 而到达其他的状态)。行动之后,我们就需要更新 的数值。Q表格的更新策略 。
SARSA 的五个首字母分别代表着当前的 State
Action
Reward
和下一步的S'
A'
。 SARSA算法的更新Q表格策略是
Q-Learning方法和SARSA方法不同的地方在于
Q-Learning通过max函数每次都寻找回报最大的路径。
3.2 基于神经网络算法 DQN
通过优化函数 中的回归模型参数 去拟合Q表格。 需要明白两个概念,一个是Q网络,一个是targrtQ网络,Q网络是我们预测网络,targrt Q网络可以认为是我们的训练网络,训练的目标是找到目标Q值:,这里目标Q值的定义依据时间差分算法(n-step TD,一般采用单步时差更新,步数越长,参考的奖励值数量也越多,网络的远见能力越强,),认为目标Q值就是策略最佳状态,然后去依据梯度SGD:去更新Q网络的参数,同时在更新Q网络的参数的同时,也要更新target Q网络的参数,这里体现了其off-policy的特性,离线学习的方式不需要实时学习,利用经验回放的方式,学习到的经验可以共享。
DQN使用神经网络来近似代替Q表格,它的更新方式本质上和Q-Learning算法是一致的。
3.3 策略梯度算法DDPG
DDPG(Deep Deterministic Policy Gradient) 它是Actor-Critic, DQN 和策略梯度的结合。
- Critic : Critic网络的作用是预估Q, 输入动作和状态
- Actor:Actor输出一个动作,这个动作输入到critic后能够获得最大的Q值