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