强化学习相关知识点梳理1
强化学习相关知识点梳理1
马尔科夫链
三个重要元素:
- 智能体在环境中,观察到状态S。
- 状态S被输入到智能体,智能体经过计算,选择动作A。
- 动作A使只能体进入下一个状态S,并返回奖励R给智能体。
- 智能体根据返回,调整自己的策略(policy)。策略一般用$\pmb{\pi}$表示。
很多时候,我们不能单纯通过R来衡量一个动作的好坏,应该把未来的奖励也纳入决策。
举例:下棋的时候,弃子动作在当前奖励R非常低,但未来有可能获得更大的胜利。
评估动作的价值,成为Q值,代表了智能体选择这个动作之后,一直到最终状态奖励综合的期望。
评估状态的价值,成为V值,代表了智能体在这个状态下,一直到最终状态奖励综合的期望。
时序差分学习(TD)
TD学习的原理应该怎样理解?
@bilibili:DragonistYJ
动作价值函数$Q_\pi(s_t, a_t)$是综合汇报$G_t$的条件期望。
注意这里大写的$\textcolor{green}{S{t+1}}$与$\textcolor{red}{A{t+1}}$以及$Rt$都是随机变量。可以用观测到的小写$\textcolor{green}{s{t+1}}$与$\textcolor{red}{a_{t+1}}$代替,即有:
所以有
将后一部分的表达式$rt+\gamma \cdot Q\pi(\textcolor{green}{s{t+1}},\textcolor{red}{a{t+1}}) $称为TD target $y_t$
TD learning的核心就是让$Q\pi(s_t, a_t)$尽可能去接近$y_t$,因为$y_t$部分基于真实的奖励,而$Q\pi(st, a_t)$只是估计,所以我们认为$y_t$更加可靠。把$y_t$当作是观测到的值,把$y_t$固定住当成常数,改变动作价值函数$Q\pi$,让它更接近$y_t$,这就是TD算法的核心概念。
表格形式的SARSA算法:
- 每次观测到一个四元组$(\textcolor{green}{s{t}},\textcolor{red}{a_t},\textcolor{blue}{r_t},\textcolor{green}{s{t+1}})$,称为transition。
- 用策略函数采样$\textcolor{red}{a{t+1}}\sim \pi(\cdot|s{t+1})$,这里$\pi$称作策略函数policy function。
- 之后计算TD target $yt=Q\pi(\textcolor{green}{s{t}},\textcolor{red}{a{t}}) $
这里$Q\pi(\textcolor{green}{s{t}},\textcolor{red}{a{t}})$是价值判断函数给$\textcolor{red}{a{t}}$打的分数。
这里$Qpi$是一个表格,记录了每一个state对各个动作的打分。可以直接查表得到$Q\pi(\textcolor{green}{s{t+1}},\textcolor{red}{a{t+1}})$的值,即可计算$y_t$
- 另外也可以通过查表得到:$Q\pi(\textcolor{green}{s{t}},\textcolor{red}{a{t}})$,从而计算TD error: $\delta_t=Q\pi(\textcolor{green}{s{t}},\textcolor{red}{a{t}})-y_t$
- 最后更新动作价值函$Q\pi(\textcolor{green}{s{t}},\textcolor{red}{a_{t}})$
- 把更新的$Q\pi(\textcolor{green}{s{t}},\textcolor{red}{a{t}})$写入表格对应的位置。这样经过几轮学习,可以让$Q\pi(\textcolor{green}{s{t}},\textcolor{red}{a{t}})$更加接近于$y_t$。
为什么要叫SARSA?
因为更新$Q\pi$用到了$(\textcolor{green}{s{t}},\textcolor{red}{a{t}}, r_t, \textcolor{green}{s{t+1}},\textcolor{red}{a_{t+1}})$
$\textcolor{green}{State},\textcolor{red}{Action}, Reward, \textcolor{green}{State},\textcolor{red}{Action} \rightarrow (\textcolor{green}{S}\textcolor{red}{A}R\textcolor{green}{S}\textcolor{red}{A})$
神经网络形式的SARSA算法:
可以用神经网络$q(\textcolor{green}{s},\textcolor{red}{a};\textbf{w})$来近似$Q_\pi(\textcolor{green}{s},\textcolor{red}{a})$
这个神经网络$q$被称为价值网络value network。
在actor-critic方法中,也被称作critic,用于评价actor的表现。我们要用观测到的奖励$R$来更新$\textbf{w}$。
此时TD target写为:
TD error计算为:
$\deltat=q(\textcolor{green}{s{t}},\textcolor{red}{a_{t}};\textbf{w})-y_t$
loss计算为:$\delta_t^2/2$
之后用梯度下降法对$\textbf{w}$进行更新。
Q-Learning算法
也是一种TD算法,和SARSA直接学习动作价值函数$Q_\pi$不同,它学习的是最优动作价值函数optimal action-value function $Q^*$。Q-learning的TD target与SARSA很相似:
其中$Q^$为当策略$\pi$是最优策略$\pi^$时,将$Q^*$写为期望的形式:
因为$Q^$可以给动作打分,$A_{t+1}$是最优动作,可以最大化$Q^$函数。有公式:
之后用蒙特克罗近似即可得
DQN(Deep Q-learning)算法讲解
- 用DQN神经网络$Q(\textcolor{green}{s},\textcolor{red}{a};\textbf{w})$来近似$Q^*_\pi(\textcolor{green}{s},\textcolor{red}{a})$
- DQN的输出控制agent:
Q-learning和SARSA算法的区别是什么?
Q-learning更新规则中的折扣因子乘以的是$\max\limits{a} Q^*(s{t+1},a_{t+1})$,是下一个状态左右可能动作的最大Q值。
SARSA更新规则中折扣因子乘以的是$Q(s{t+1},a{t+1})$,其中$a_{t+1}$是根据当前策略在下个状态选择的动作。
总体而言,Q-learning更倾向于更加贪婪的搜索,因为它总是选择当前状态下的最大Q值对应的动作。而SARSA 则更倾向于使用当前策略,因此它在探索和利用之间可能更加平衡。
时序差分学习 temporal-difference learning(TD)is an unsupervised technique in which the learning agent learns to predict the expected value of a variable occurring at the end of a sequence of states. 进一步地,Reinforcement learning (RL) extends this technique by allowing the learned state-values to guide actions which subsequently change the environment state.
其核心是采样更新+自举
即TD学习的输入是一个序列的状态值,而目标输出是预测下一个状态值。
这里$Vk$表示序列中经过我们预测得到的状态值。而,在学习过程中,梯度值$ \vartriangle_wV_k $将作为一个running sum。当到了t+1时刻,首先从序列中取出观测值$s{t+1}$,将其作为$V{t+1}$代入上式计算误差error $V{t+1}-V_t$。得到的weight change将用于更新从序列开头的所有预测值$V_1$到$V_t$。
The update rule is, in effect, updating all preceding predictions to make each closer to prediction $V_{t+1}$ for the current state by using the difference in the successive prediction values, hence the name Temporal-Difference learning.
我们可以在TD过程中加入衰减项$\lambda$。下式定义了t时刻的eligibility trace。它决定着多久以前的预测有资格根据当前错误进行更新。
TD相较于传统的supervised learning的优点:
在multi-step prediction中能够更加有效地利用较小的训练样本得到预期的效果。
策略梯度Policy Gradient(PG)
基本思想:不去计算$Q$,直接训练神经网络神经网络输入state输出action。也被称为Policy-based RL。
DQN通过critic评判来反过来选择action,而PG直接使用actor去和环境进行互动,然后一个episode回合后可以加得一个总的Reward。PG就是要最大化一整个回合后的total reward。
Reinforcement Learning (RL)
RL问题包含两个方面,1. agent must learn to both predict the values of environment states that it encounters; 2. Use those predicted values to change the environment in order to maximize reward.
定义reward为一个序列某一个状态的输出。序列中所有输出的加权和定义为return,定义衰减参数为$\gamma$。
和TD中的$V_{t+1}-V_t$不一样,此时的误差error写为:
什么是offline reinforcement learning?
offline reinforcement learning不依赖于与环境的实时交互来获取数据,而是从已有的静态数据集中学习策略。与传统的监督式学习任务不同,offline reinforcement learning依赖于奖励信号来评估策略的好坏,奖励信号通常与长期回报相关。而监督式学习依赖于损失函数来评估预测的准确性,损失函数通常是基于单个预测结果与真实标签的差异。另外,offline reinforcement learning虽然在训练阶段不与环境交互,但学习过程需要考虑到策略在实际环境中可能的交互效果,以及如何从固定数据集中学习有效的策略。
强化学习中的蒙特卡洛采样
第一步:根据一个策略往前走,一直走到最后,期间什么都不用算,记录每一个状态转移以及对应的reward r即可。
第二步:从终点进行回溯,每到一个节点,计算一次G值。当前节点的G值等于上一个节点G值G’,乘以一个折扣gamma,再加上r。
如果不考虑折扣率,这个G值其实就是某个状态到最终状态奖励的总和。
蒙特卡洛方法的缺点是计算G值需要的时间很长,因为需要走到最终步才能进行回溯。
可以用时序差分算法TD,走N步,就可以开始回溯更新。