共计 1614 个字符,预计需要花费 5 分钟才能阅读完成。
- 简介
工夫差分法次要基于工夫序列的差分数据进行学习,其分为固定策略和非固定策略两种。固定策略工夫差分法以 Sarsa 算法为代表;非固定策略以 Q -Learning 算法为代表。
- Sarsa 算法
Sarsa(state-action-reward-state-action)算法的目标是预计动作值函数 q(s,a),即预计在策略 Π 下对任意状态 s 上所有可能执行动作 a 的动作值函数 qΠ(s,a)。其动作值函数表达式函数为:
image.png
式子中的 Θ =rt+1+γq(st+1,at+1)——工夫差分指标(Target);
Θ-q(st,at)——工夫差分误差(Error)。
式子中的动作值函数的每一次更新都须要用到 5 个变量:以后状态 s、以后动作 a、环境反馈处分 r、下一时间步状态 s’和下一时间步动作 a’。这 5 个变量组合成(s,a,r,s’,a’),便是工夫差分管制 Sarsa 算法的由来。其具体算法流程如下:
输出:随机状态 s
输入:动作值函数 q(s,a)
(1) 初始化:
(2)对于任意状态 s,设置 q(s,a)为任意值
(3)反复教训轨迹:
(4) 初始化状态 s
(5) 依据动作值 q,在状态 s 下执行动作 a
(6) 反复教训轨迹中工夫步 t:
(7) 依据动作值 q,在状态 s 下执行动作 a
(8) 更新动作值函数:q(s,a)←q(s,a)+ɑ[r+γq(s’,a’)-q(s,a)]
(9) 记录新的状态和动作,s←s’,a←a’
(10) 直至终止状态 s
(11)输入动作值函数 q(s,a)
image.png
Sarsa 算法首先随机初始化动作值函数 q,随后迭代式地进行教训轨迹的采样。在采集某一条教训轨迹时,智能体首先依据贪心策略(Greedy Policy),在状态 s 下抉择并执行动作 a;接下来在环境中进行学习,并更新动作值函数 q(s,a),直至算法完结。
- Q-Learning 算法
Q-Learning 算法在动作值函数 q(s,a)更新中,采纳的是不同于抉择动作时所遵循的策略。该算法动作值函数 q(s,a)的更新如下:
image.png
与 Sarsa 算法相比拟,区别在于 Q -Learning 算法更新 Q 值时,工夫差分指标应用动作值函数最大值 maxq(st+1,at),与以后抉择动作所应用的策略无关,因而动作值 Q 往往是最优的。
其算法流程如下所示。与 Sarsa 相似,区别在进入反复教训轨迹的循环后,Q-Learning 算法在初始化状态 s 后,间接进入该教训轨迹的迭代中,并依据贪心策略在状态 s’下抉择动作 a’。
输出:随机状态 s
输入:动作值函数 q(s,a)
(1)初始化:
(2)对于任意状态 s,设置 q(s,a)为任意值
(3)反复教训轨迹:
(4) 初始化状态 s
(5) 反复教训轨迹中工夫步 t:
(6) 依据动作值 q,在状态 s 下执行动作 a
(7) 执行动作 a,取得处分和下一时间步的状态 s’
(8) 更新动作值函数:q(s,a)←q(s,a)+a[r+γmaxq(s’,a)-q(s,a)]
(9) 记录新的状态,s←s’
(10) 直至终止工夫步 Ts
(11)输入动作值函数 q(s,a)
image.png
- 总结
工夫差分法与蒙特卡罗法相似,基于采样数据预计以后价值函数。不同的是工夫差分法采纳动静规划法中的晋升算法 (Boosting) 计算以后价值函数,而蒙特卡罗是在每次采样完结之后能力计算以后的价值函数。
image.png
从算法来看, 这就是他们两最大的不同之处了。因为 Sarsa 是说到做到型, 所以也能够称之为 on-policy, 在线学习, 能够学着本人在做的事件。而 Q - learning 是说到但并不一定做到, 所以它也叫作 Off-policy, 离线学习。而因为有了 maxQ,Q-learning 也是一个特地怯懦的算法。为什么说他怯懦呢, 因为 Q -learning 永远都会抉择最近的一条通往指标的路线, 不论这条路会有多危险。而 Sarsa 则是相当激进, 他会抉择躲避非凡状况,达到目标是主要的,首先要保障安全性,这就是应用 Sarsa 办法的不同之处。