本文主要介绍TD算法和Q学习算法
目录
TD算法:
即时间差分 (Temporal Difference):此处用举例子方法来帮助大家理解
1.假设我从天津到郑州,初始预测时间为12个小时(这个时间是初始的,并不那么准确),则有预测时间q=12;有一次我实际开车从天津到郑州只用了9个小时,则有实际时间y=9;由此就产生了误差,损失函数.计算梯度用损失函数对参数w求偏导,得出梯度之后用梯度下降来更新参数w。
关于梯度和梯度下降可以参考深度强化学习-深度学习基础(一)
2.假设从天津到郑州的预测时间仍然为12个小时,我从天津出发,但是走到霸州车抛锚了,走不了了,已经花了3个小时。但是根据模型,从霸州到郑州需要走7个小时。此时我们有了一个新的估计从天津到郑州只需要3+7=10小时,因为有一段实际行走的路段3小时,因此此时的估计10小时相比于初始的12小时更为可靠。此时就使y=10;我们不需要跑完全程也能对其进行更新,损失函数,梯度计算,梯度下降和上面一样。q与y之间的差值就称为TD error。
我们下面理解一下:TD error,模型预测霸州到郑州需要7小时,总共12小时,则天津到霸州则5小时。但是我们实际走了3小时,实际与预测差值为2小时,和整体的TD error相等。TD算法最终的目标是使得TD error接近0.
具体公式:
先回忆一下回报:从当前时刻开始到回合结束的奖励的和。也可看作
=
+
*
。
对和
做期望就得到了t和t+1时刻的动作价值函数。
左侧是预估的总时间,右侧是当前真实观测到的时间,再加上对t+1时刻做的估计。在TD目标的动作a实际上就是根据动作价值函数对应动作得到奖励最大的那个动作。
不断更新,使得q与y逐渐接近。仍旧使用梯度下降公式。
Q学习算法:
Q学习的目的是学到最优动作价值函数。会构建一个Qtable,行列分别为当前状态与动作,对应的值表示奖励。给定状态求动作时,会自动选择该行最大的奖励所对应的动作表示要进行的动作,以此来进行决策。问题是Qtable是如何建立的呢?我们就是利用Q学习算法不断更新Qtable,使其能做出最优的决策。
最优贝尔曼方程:
左边就是我们要求的最优动作价值函数,右侧的期望是关于t+1时刻的。给出当前状态st,以及动作at会给出奖励rt和下一状态.Qtable初始为0矩阵,针对某一点(st,at)有在表格中已经存在的实际值,经过Q学习更新会得到一个新的预测值,最终更新为:实际值+学习率*(新的预测值-实际值)。最终Qtable的值趋于收敛,也就近似得到了最优动作价值函数。
同策略,异策略:
同策略代表行为策略和目标策略相同,异策略表示二者不同。
行为策略:控制智能体和环境交互,行为策略一般是用来收集经验,即观测的环境,动作,奖励。
目标策略:用这个策略函数来控制智能体,这个策略函数就叫做目标策略。
上面提到的Q学习就是利用行为策略收集(当前状态,当前动作,当前奖励,下一状态)这个四元组,并用他们训练目标策略。
贪婪策略是常用的行为策略,也是在Q学习中常用的策略,给定一个概率p,有1-p的概率按照预定策略进行,有p的概率从动作空间中完全随机地选取一个动作执行。让行为策略带有随机性是为了能获得更多未见过的状态。